Herramientas de desarrollo de apps > nativas, híbridas y web
Apps nativas
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.
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 al hardware del terminal, como la cámara, sensores (GPS, acelerómetro, giróscopo, …).
- Mayor rendimiento.
- No requieren de Internet para funcionar.
Ventajas de las apps híbridas y web
- Aprender una o unas pocas tecnologías para crear apps multiplataforma.
El desarrollo de aplicaciones web híbridas tiene importantes ventajas, sin embargo, una aplicación nativa podría ser la indicada, 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.
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
Aplicaciones web > Desarrollo multiplataforma basado en HTML
Las aplicaciones web, 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 aplicaciones web
- Es más económico y fácil desarrollarlas. No es necesario conocer los lenguajes y herramientas propios de cada SO.
- Multiplataforma. Desarrolla una sola vez, funciona en todos los dispositivos.
- Basadas en tecnologías web (HTML, CSS, JavaScript) por lo que no habrá que aprender en principio un lenguaje específico.
- Sin instalación ni mantenimiento en el cliente.
- No es necesario comprar la app en una tienda de aplicaciones (Google Play, App Store…)
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.
Desarrollo híbrido > apps multiplataforma compiladas a nativo
[mod] Son una especie de combinación entre las aplicaciones nativas y las web.
Se desarrollan con HTML, CSS y JavaScript. Posteriormente se compilan o empaquetan, 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.
Ventajas del desarrollo híbrido
- Multiplataforma. Disponibles, con pocos o ningún cambio, en todos los sistemas operativos.
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).
React Native
Otro 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 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.
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), …
Observar, como ya se ha dicho, que el desarrollo con React Native permite crear apps nativas.
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