Tabla de contenidos
Apps nativas, híbridas y web
Las aplicaciones nativas son aquellas que han sido desarrolladas con el software que ofrece cada sistema operativo a los programadores, llamado genéricamente Software Development Kit o SDK, por lo que se adapta al 100% al dispositivo.
Por tanto, se requiere del conocimiento de diferentes herramientas y lenguajes de programación en función de si se programa para Android (Java), iOS (Swift) o Windows Phone.
Una aplicación híbrida se crea con una combinación de HTML5, CSS y JavaScript. Es independiente de los sistemas operativos iOS y Android. Una vez escrita se compila o empaqueta, de tal forma que el resultado final es parecido a una aplicación nativa. Esto supone la gran ventaja de que con el mismo código obtenemos aplicaciones para, por ejemplo, Android y iOS. Las apps híbridas permiten acceso, usando librerías, a las capacidades del teléfono, tal como lo haría una app nativa.
Las apps híbridas son de alguna forma una combinación entre las aplicaciones nativas y las web.
Las aplicaciones web, o desarrollo multiplataforma basado en HTML, también llamadas webapps, están basadas en HTML, CSS y JavaScript. No se emplea un SDK para el desarrollo, lo cual permite programar con independencia de la plataforma.
Al tratarse de aplicaciones que funcionan sobre la web, no es necesario que el usuario reciba actualizaciones, ya que siempre va a estar viendo la última versión. Sin embargo, requieren de conexión a Internet.
Ventajas de las apps nativas frente a las multiplataforma
- Mejor experiencia de usuario. Más funcionalidades: Acceso a las notificaciones del sistema para mostrar avisos al usuario; acceso directo, (sin plugins) al hardware del terminal, como la cámara, sensores (GPS, acelerómetro, giróscopo, …).
- Mayor rendimiento y velocidad de ejecución, ..
- No requieren de Internet para funcionar.
Ventajas de las apps híbridas y web
- Aprender una o muy pocas tecnologías para crear apps que funcionan en en todos los sistemas operativos. «Escribe una vez, ejecuta en todas partes».
- Desarrollo muchísimo más rápido, con menor inversión, menor mantenimiento, con una sola fuente de código.
- Aplicaciones web: Sin instalación ni mantenimiento en el cliente, por lo que no es necesario comprar la app en una tienda de aplicaciones (Google Play, App Store…)
¿Qué tecnología elegir, nativa, híbrida o web?
Como de costumbre, no hay una respuesta universal para todos ni para todos los casos.
En QE2c, nos decantamos claramente por el desarrollo híbrido, y si se puede elegir, con React Native.
El desarrollo de aplicaciones web híbridas tiene importantes ventajas, sin embargo, una aplicación nativa podría ser la única opción viable, si el acceso fácil a los recursos de hardware del teléfono o el rendimiento son vitales. En este aspecto, la elección no siempre es la que nos gustaría, y la empresa que nos contrata podría imponernos la dirección a seguir.
Las mejores plataformas para crear apps
React Native
Excelente Framework, React Native nos permite desarrollar apps usando solo JavaScript.
Con React Native no creamos apps web o híbridas, sino aplicaciones móviles reales que en muchas ocasiones no se distinguen de una aplicación creada con Objective-C o Java.
React Native se combina sin problemas con componentes escritos en Objective-C, Java o Swift.
En comparación con Apache Cordova, con React Native lleva más tiempo crear una aplicación y el tamaño del paquete es mayor. En contrapartida, Cordova necesita plugins para proporcionar soporte a funcionalidades nativas.
Entonces, ¿És React Native una tecnología nativa o híbrida?
Es normal haber llegado a este punto de la investigación con desconcierto acerca las contradicciones que se mencionan en la red sobre React Native.
La respuesta, en pocas palabras, es que React Native no es desarrollo nativo. Está en el grupo de tecnologías híbridas, pero su resultado es muy cercano al nativo
Desarrollo nativo en Python con BeeWare
El framework BeeWare para la creación de apps y GUIs, software libre bajo licencia BSD, ofrece un conjunto de herramientas nativas para Python. Desde cierto punto de vista, parece resultar una solución ideal: un framework con el que poder hacer todo con Python, y obtener un comportamiento nativo.
Desventajas de BeeWare: Es un proyecto relativamente nuevo, y aun bajo un intenso desarrollo. Un framework que no está lo suficientemente maduro significa más trabajo para el desarrollador, debido a cambios en la API, bugs, falta de funcionalidades, …
[dbader.org] Artículo consultado: Using Python for Mobile Development: Kivy vs BeeWare
PhoneGap/Apache Cordova
Sitio web | Licencia Apache 2.0 |
Apache Cordova es un framework de desarrollo móvil de código abierto. Permite utilizar las tecnologías estándar web como HTML5, CSS3 y JavaScript para desarrollo multiplataforma, evitando el lenguaje de desarrollo nativo de cada plataformas móvil.
A pesar de que el rendimiento de estas apps web en ningún caso el mismo que el de una aplicación compilada nativa, con Cordova es posible proporcionar una experiencia fluida.
Kivy
Sitio web | Licencia MIT
Kivy es la librería Python de software libre mas popular para crear apps móviles e interfaces gráficas. Es multiplataforma. Permite la creación de apps que se ejecutan en PCs de escritorio, iOS, Android, y cualquier otro dispositivo que soporte TUIO (Tangible User Interface Objects).
Xamarin
Xamarín es la herramienta más conocida y utilizada en el ámbito híbrido. Adecuado si preferimos C# en lugar de HTML5 o Python.
Xamarin e la implementación libre de la plataforma de desarrollo .NET para dispositivos Android, iOS y GNU/Linux.
Conclusiones finales ¿Qué plataforma utilizar?
Como recomendación estrictamente personal, me inclino en favor de dos soluciones para el desarrollo de apps, de uso alternativo o conjunto: Python con Kivy, y React Native.
¿Por qué Python y/o React? Por el uso de tecnologías estándares, universales, multiplataforma, enormemente versátiles. El aprendizaje de React y Python va a abrirnos puertas no solo en el desarrollo de apps móviles, sino en un abanico gigantesco de oportunidades y aplicaciones: desarrollo web, aplicaciones de escritorio, Inteligencia artificial (Python), …
Personalmente considero React Native la solución que ofrece más ventajas: su rendimiento es muy cercano al de las apps nativas, y existe una gran comunidad desarrollando componentes que hacen que React evolucione.
Artículos de interés
[Humanlevel.com] El desarrollo Web con HTML5 será el futuro de las aplicaciones móviles
El artículo nos propone un pronóstico de futuro (si bien este es siempre incierto) que describo con algunas citas:
- «A medida que aumenta la velocidad de ejecución de JavaScript, el tiempo de renderizado y el hardware de los móviles, las ventaja que aporta HTML5 al minimizar el coste de desarrollo y mantenimiento en aplicaciones multiplataforma, es algo con lo que las aplicaciones nativas no van a poder competir».
- «HTML5 permitirá tener una página Web que será al mismo tiempo una aplicación móvil, mientras que usando código nativo sólo tendremos una aplicación móvil».
[campusmvp.es] Programación movil ¿Qué herramienta y lenguaje elegir? El artículo ayuda a decidirse por una plataforma y simplifica mediante un diagrama.
Algunas plataformas de desarrollo de apps
Nombre | Lenguajes | Entorno de desarrollo | Plataforma de ejecución |
Android | Java con posibles partes en C y C++ | SDK, entorno adaptado de IntellilJ IDEA y emulador | Android |
Appcelerator | JavaScript | TitaniumStudio y emuladores | Android, iPhone, Tizen |
Firefox OS | HTML5, CSS, JavaScript | Firefox, depurador y simulador | Navegador |
iOS SDK | Objective-C, Swift | SDK, Xcode IDE y emulador | iOS |
PhoneGap / Apache Cordova | HTML5, CSS, JavaScript | Herramientas de terceros y depurador | Multiplataforma |
Unity | C#, JavaScript, Boo, lenguajes basados en .NET | Unity Editor y emulador remoto | Multiplataforma |
Windows 10 | C, C++ | Visual Studio y emulador | Windows 10 |
Deja una respuesta