> Manuales > Qué es cada tecnología

Una comparativa de las dos alternativas más populares para el desarrollo de apps para móviles, basadas en Javascript: Ionic 2 y NativeScript.

Hoy vamos a analizar dos alternativas en contraprosición como son Ionic 2 y NativeScript, herramientas basadas en Javascript para el desarrollo de apps. Ambas permiten, mediante una única base de código, construir aplicaciones para varias plataformas móviles, al menos Android e iOS. Obviamente, el trabajo de desarrollo se reduce casi a la mitad, porque con un mismo proyecto podemos producir las aplicaciones para ambos sistemas, sin necesidad de empezar desde cero cuando queremos migrar una app de iOS para Android o viceversa.

A nivel de costes es claramente mejor, porque tenemos menos trabajo, pero es también muy relevante que el mismo equipo de desarrollo pueda acometer el proyecto en ambos sistemas, lo que reduce el personal necesario en plantilla.

No obstante, hay que decir que todo no son balas de plata y que lo nativo es esencial para muchos tipos de aplicaciones. Sobre todo aquellas que necesitan un alto rendimiento o las que necesitan hacer cosas muy específicas sobre el hardware de los dispositivos. Empresas grandes y proyectos exigentes creo que deberían centrarse claramente en los lenguajes nativos, que siempre han de ser las mejores soluciones. Pero para proyectos menos exigentes y empresas que miren el presupuesto, Ionic o NativeScript son las mejores opciones.

Otro motivo por el que irnos a lo nativo es que podemos soportar las versiones de dispositivos que nosotros nos fijemos como objetivo. Recuerda que Ionic y NativeScript funcionarán bien en dispositivos Android 4 y superiores. Ver más abajo detalles.

Por qué Ionic y NativeScript

Cada vez resulta más apropiado usar una tecnología basada en Javascript para el desarrollo de apps para móviles. El motivo no es solo que resulta muy tentador usar un lenguaje que ya conocemos para el desarrollo de una app, sino que verdaderamente las soluciones basadas en Javascript funcionan muy bien.

Lo cierto es que no son las únicas alternativas pero creo que sí son las más relevantes para la mayoría de las personas. Primero porque ambas se basan en Angular 2, un framework muy potente y que es conocido por un gran número de desarrolladores. Usar Angular 2 para el desarrollo de apps es posible en ambas soluciones, sin que tengamos que hacer ningún trabajo para integrar el framework en la app.

Si no piensas usar Angular 2, quizás podrías fijarte también en Apache Cordova como alternativa a Ionic. Pero la verdad es que tanto Ionic 2 como NativeScript te ofrecen una buena cantidad de componentes y plugins muy útiles para desarrollar rápidamente funcionalidades comunes, por lo que serían muy atractivos para considerar en cualquier proyecto.

Después de asistir a cursos de ambas tecnologías en 2016: Curso de Ionic 2 de EscuelaIT y curso de NativeScript también en EscuelaIT, creo que puedo dar mi opinión con bastante fiabilidad. No obstante, siempre me gusta advertir que la opinión de una persona no debería ser determinante para tu elección sino las necesidades de tu proyecto. O incluso el equipo de desarrollo que tengas contigo.

Lo ideal sería que hicieras los primeros pasos con uno y otro y así vas aclarando el panorama y viendo cuál se adapta mejor a tus necesidades. Tenemos vídeos en Youtube, en el canal de desarrolloweb (mira las referencias más abajo) que dan muy buenas vistas de pájaro de los estilos de desarrollo y de las cosas que puedes hacer con uno y otro. Ya luego cuando sepas cuál podría ser tu apuesta, tenemos los cursos en EscuelaIT para aprender a desarrollar y realizar proyectos con mucho detalle y profundidad.

Ventajas e inconvenientes de Ionic 2

Para comenzar a hacerte tu propia opinión te recomendamos los vídeos de Ionic 2 que hemos emitido en el canal de DesarrolloWeb.com:

Ahora veamos los pros y los contras, recordando que siempre me refiero en contraposición a uno y otro sistema y no en general a los de otras plataformas.

Ionic pros

Me gusta bastante el estilo de desarrollo en Ionic 2. Es más parecido a lo que se usa en la web en general, por lo que una persona que esté familiarizada en el desarrollo de aplicaciones web con Angular 2 será capaz de adaptarse más rápidamente a Ionic 2, en comparación con NativeScript.

Pero creo que lo más importante es que en Ionic 2 eres capaz de reutilizar más código de un proyecto que tengas en la web con Angular 2. Muchas cosas te tocará rehacerlas, puesto que es cierto que los componentes de interfaz gráfica que te ofrecen en Ionic son específicos, pero si tienes bien estructurado tu proyecto eso no será tan problemático.

En Ionic me gusta mucho también la cantidad de componentes que ofrecen para hacer muchas cosas y el hecho de que esos componentes ya se adapten al look & feel que las aplicaciones tienen en cada dispositivo. A nivel de diseño lo veo más trabajado.

Ionic contras

En Ionic 2 eres más dependiente de los plugins para acceder al hardware y a las cosas nativas como notificaciones, etc. Los plugins vienen de terceros y si dejan de funcionar te dejan de funcionar a ti también. Aunque eso no debería ser un problema, quizás solo ante la fragmentación de Android.

Hablando de compatibilidad, a priori también NativeScript es un poco más compatible con versiones anteriores de Android. Aunque usando CrossWalk podemos revertir este problema.

Ventajas e inconvenientes de NativeScript

Como siempre digo, si quieres hacerte tú mismo la opinión, que sería lo más adecuado, tendrías que comenzar viendo los vídeos en los que hemos tratado el desarrollo de apps con NativeScript:

Nativescript pros

A priori, y aunque no he hecho pruebas en este sentido, debemos suponer un mayor rendimiento en NativeScript que Ionic 2, porque el producto es nativo, una vez compilado.

Lo más relevante no obstante es que en NativeScript no usas un web view, por lo que tu aplicación no sería una simple web con envoltura de app. Trabajas directamente con lo nativo, hardware, recursos diversos. En general NativeScript te permite sentir más cercano al dispositivo, puedes usar librerías que usan los mismos desarrolladores de iOS y Android. Dicho de otra forma, no estás encorsetado a lo que te permite hacer una web.

Nativescript contras

En mi opinión, NativeScript tiene una curva de aprendizaje más pesada para la gente que viene de la web. No puedes reaprovechar buena parte del código de la web, aunque usas Javascript y angular 2 igual que ionic, entre otras cosas porque el mecanismo para producir las vistas no es exactamente el mismo, sino tiene un sabor más parecido a como se desarrolla en Java para Android. Hay que recordar que no estás desarrollando una web propiamente dicha, sino una aplicación y eso hace que diversas cosas que se pueden usar en la web no se pueden usar directamente en NativeScript por mucho que quieras.

Veo más rico el conjunto de componentes de interfaz gráfica disponibles en Ionic. NativeScript tiene sus propios componentes y en ese sentido Telerik está haciendo muy buen trabajo, pero como nos tiene acostumbrados la compañía, no todos los componentes se liberan como open source. Tenemos que tener en cuenta en este sentido que NativeScript lleva menos tiempo de vida, por lo que es de suponer que poco a poco la comunidad vaya liberando componentes de interfaz gráfica que incrementen las alternativas existentes hoy.

Conclusión

Como ya apunté al principio del artículo, lo ideal es que pruebes ambas alternativas para ver cuál se ajusta a tus necesidades, porque en principio te sirven para hacer las mismas cosas y las aplicaciones en las que las puedes usar son más o menos del mismo tipo. Para mi la diferencia fundamental es cómo se accede a los recursos del móvil, como la cámara, por medio de plugins o de programación que compila a nativo. También la curva de aprendizaje y la capacidad de reutilizar partes de una aplicación web pueden ser determinantes para determinados desarrolladores.

No obstante, habría que ver las opiniones de personas más experimentadas y para ello hemos realizado un evento en el que abordaremos esta misma comparativa con los profesores de los cursos de EscuelaIT dedicados a ambos frameworks. Puedes verlo en el vídeo a continuación.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual