Tipos de aplicaciones móviles
En general, existen cuatro tipos de aplicaciones móviles:- Nativas: desarrolladas directamente para las plataformas nativas (utilizando Java/Kotlin o Swift/Objective C). No son multiplataforma. Ejemplos: iOS, Android
- Híbridas: la aplicación consiste en una webview que carga código HTML/CSS/JS de la aplicación. Son multiplataforma, pero al correr en una webview, algunas funcionalidades no están disponibles y el rendimiento es bastante inferior al de las aplicaciones nativas. Ejemplos: PhoneGap, Cordova
- Compilación cruzada: la aplicación se escribe en un lenguaje de programación (generalmente el mismo para todas las plataformas) y es compilada para generar una aplicación nativa. Pueden ser multiplataforma. Sólo están disponibles los APIs que se hayan incorporado al compilador, no todos y no las últimas actualizaciones. Ejemplos: Xamarin
- Compiladas con JIT: se ejecutan nativamente en la máquina virtual javascript del dispositivo: Ejemplos: Nativescript
Nativescript
Nativescript es un framework open-source para construir aplicaciones móviles multi-plataforma (actualmente iOS y Android): https://www.nativescript.org/
Nativescript tiene las siguientes ventajas sobre otros frameworks multiplataforma:
- Utiliza javascript como lenguaje de programación (no es necesario que conocer Java, Kotlin, Objective C o Swift), XML para definir la interfaz de usuario (layouts y controles) y CSS para los estilos (utiliza un subconjunto del CSS estándar). Todos, Javascript, XML y CSS, conocidos de sobra por desarrolladores Web. Hay que indicar también que Nativescript está preparado para trabajar con Typescript si así lo deseamos. También hay que advertir que aunque no sea necesario conocer los lenguajes y plataformas nativas, puede ser muy útil para hacer algunas funcionalidades de bajo nivel.
- Código único para todas las plataformas (write once, run everywhere)
- Acceso completo a las APIs nativas
- No se utiliza Webview para mostrar la interfaz de usuario, sino que se renderiza el código a objetos nativos (iOS o Android). Esto supone que la UI utiliza elementos nativos y por tanto, el aspecto es el de la plataforma en la que se ejecuta; también supone que el rendimiento es prácticamente igual al de las aplicaciones nativas (excepto lo que supone la ejecución del código javascript).
En Nativescript el código se escribe sólo una vez y se renderiza en cada plataforma, utilizando los componentes propios de cada plataforma. En raras ocasiones se accede a los APIs nativos o se escribe código especializado para cada plataforma. Es raro, pero es algo que tenemos a nuestra disposición como programadores.
Nativescript es un framework adecuado para determinados tipos de aplicaciones móviles, pero no para todos. Por ejemplo, Nativescript no es adecuado para desarrollar juegos. Sería posible desarrollar juegos con Nativescript, ya que tenemos acceso a todos los APIs de las plataformas nativas, pero no es lo más adecuado, para ello existen otros frameworks multiplataforma más adecuados: Corona SDK, Unity 3D...
¿Cómo funciona Nativescript?
Cada página de una aplicación Nativescript se compone de tres ficheros: js, xml y css. El fichero js contiene el código javascript que lleva la lógica de la página (inicialización de la página, eventos, etc). El fichero xml contiene la definición de los layouts y controles que componen la interfaz de usuario de la página. El fichero css contiene los estilos que se aplican a la página. Cuando se genera la aplicación para ejecutarla en un dispositivo (o en un emulador), se unen todos estos ficheros, se les añade la máquina virtual javascript, y se unen además, el runtime y los módulos core de Nativescript. Todo esto constituye la aplicación.
Los ficheros js, xml y css no funcionarían en un dispositivo móvil de no ser porque se unen a la máquina virtual javascript, al runtime de Nativescript y a los módulos core de Nativescript.
Nativescript viene con un CLI que se encarga de hacer todo el proceso de generación y ejecución de la aplicación móvil. Además de unir todos estos componentes, se encarga de invocar al SDK correspondiente de cada plataforma (XCode o Android SDK) para generar la aplicación final.
Tabla comparativa
Para terminar, voy a poner una tabla comparando diversas opciones para desarrollo de aplicaciones móviles. En esta tabla incluyo frameworks que yo conozco, aunque hay otros que iré incluyendo con el tiempo.
Framework | Tipo | iOS | Android | Lenguaje único | Código único | IU nativo | Acceso al hw | Juegos 2D | Juegos 3D |
---|---|---|---|---|---|---|---|---|---|
Nativo iOS | Nativo | Sí | No | No | No | Sí | Sí | ||
Nativo Android | Nativo | No | Sí | No | No | Sí | Sí | ||
Corona SDK | Canvas | Sí | Sí | Sí | Sí | No | Sí | Sí | No |
Xamarin | Transcompilado | Sí | Sí | Sí | No | Sí | Sí | No | No |
Phonegap | Híbrido | Sí | Sí | Sí | Sí | No | No | No | No |
Nativescript | Javascript | Sí | Sí | Sí | Sí | Sí | Sí | No | No |
Unity | Canvas | Sí | Sí | Sí | Sí | No | Sí | Sí | Sí |
No hay comentarios:
Publicar un comentario