En el mundo de las aplicaciones móviles tenemos muchas herramientas a
nuestra disposición para crear nuestras app. Pero fácilmente podemos
dividirlas en :
- App nativas: IOS , Android, Window , Firefox, etc.
- App hibridas: HTML5, Appcelerator, PhoneGap , etc.
- Web apps: HTML5, javascript, CSS, php, nodejs, Ruby, etc.
Conociendo un poco de cada una de ellas nos ayudara a entender cual es el adecuado para nuestro próximo proyecto móvil.
App nativas
Una aplicación nativa es una aplicación para smartphone que es programada con un lenguaje de programación específico para la plataforma del teléfono. Por ejemplo
La ventaja de programar una app de este tipo:
- Tienen un alto rendimiento , son rápidas y muy confiables, cuando digo confiables hablo de que siempre van a correr de la misma manera en todos los dispositivos para el cual fue creado, los elementos UI son consistentes.
- Tienes acceso a todas las características del dispositivo como: cámara, libreta de contactos, acelerómetro, gps, etc.
- Estas app pueden ser usadas sin conexión a internet, la mayoría de los juegos son de este tipo.
- Mejor distribucion por que disponen de un marketplace donde los usuarios pueden descargar tu app.
- Los programadores tienen disponibles todas las herramientas y documentación necesaria (SDK)
Desventajas :
- Son muy costosas en términos de desarrollo porque están limitadas a la plataforma en la cual fue creada, esto aplica solamente si el desarrollador quiere que su aplicación este disponible en la mayoría de dispositivos móviles del mercado. Teniendo que portar la aplicación para cada plataforma.
- El proceso de aprobación de parte del marketplace puede ser tedioso, por que la aplicación tiene que reunir ciertos estándares para ser publicada.
- El marketplace toma un porcentaje por cada venta de tu aplicación.
App hibridas
Al igual que las app nativas, las app híbridas corren en el dispositivo móvil, pero son programadas usando tecnologías web estándar como HTML5, CSS y Javascript.
Phonegap es muy popular y es usado para empaquetar este tipo aplicaciones. Toma todo el html, css, javascript y lo empaqueta para ser distribuido en cualquier plataforma móvil.
El resultado es una aplicacion que puede ser instalada en la plataforma en la cual fue escogida previamente durante el proceso de exportación. Esta aplicaciones corren dentro de un contenedor nativo y deja que el motor del navegador (webview) cargue el HTMLy el javascript de manera local.
Lo importante de este tipo de aplicaciones es la capa de abstracción que nos permite acceder a las APIs usando javascript, por ejemplo características del dispositivo que no pueden ser accedidas por medio de una web app como , acelerometro, cámara, local storage , etc.
Ventajas
- Tienes acceso a las características del dispositivo como: cámara, libreta de contactos, acelerómetro, gps, etc.
- Pueden ser programadas usando tecnologías web estándar
- El mantenimiento y los tiempos de desarrollo son bajos
- Pueden ser publicadas en los marketplace
- Exportación a múltiples plataformas
- Pueden ser usadas sin conexion a internet
Desventajas
- No tienen un alto rendimiento.
- Los elementos UI puede no ser consistentes en todo los dispositivos y requiere un trabajo extra para lograrlo.
- Debido que usan tecnologías web, los programadores traen consigo muchas malas prácticas en el desarrollo.
Web apps
Si estas comenzando con el mundo de desarrollo movil y ya sabes sobre web, esta es tu opción. Ya que solo necesitas saber las tecnologías web estándares HTML 5, CSS3 y javascript y algún lenguaje del lado del servidor como PHP, Nodejs, ruby, etc. para guardar y acceder a los datos.
Una web apps es un conjunto de páginas web diseñas para que su contenido sea consumido desde dispositivos móviles. Por ejemplo usando técnicas como responsive design.
Ventajas Fácil desarrollo y mantenimiento.
- Usan tecnologías web estándar.
- No necesitan aprobación del marketplace, pueden ser accedidas directamente.
- Es independiente de la plataforma ya que solo necesitan un navegador web.
- Los usuarios no requieren bajar actualizaciones
- Bajo coste para el desarrollo ya que usa tecnologías libres y estándares web.
- Hay muchos frameworks que puede acelerar el tiempo de desarrollo. (jquery mobile, sencha touch, etc)
Desventajas
- No pueden acceder a las características del dispositivo como: cámara, libreta de contactos, acelerómetro, gps, etc.
- Debido a que usan el navegador de los usuarios los elementos UI y rendimiento no es consistente en todos los dispositivos ya que estan limitados al hardware del movil.
- La calidad no está garantizada por nadie.
- Hay que soportar muchos navegadores para que la app sea consistente y requiere un gran esfuerzo.
- Necesitan una conexion a internet para ser usadas
¿ Cual escoger ? Bueno como siempre todo proyecto tiene sus necesidades únicas pero las siguientes preguntas te pueden servir de guía para tu decisión.
- ¿ Cuan importante será la velocidad y rendimiento de tu app ?
- ¿ La aplicacion tiene que tener acceso a las caracteristicas del dispositivo? (cámara, acelerometro, etc)
- ¿ Tu aplicacion funciona con acceso a internet ?
- ¿ Tu aplicacion necesita soportar múltiples dispositivos ?
- ¿ Tengo el presupuesto y tiempo para aprender nuevos lenguajes de programación ?
- ¿ Quieres vender tu aplicación en un marketplace ?
Para Terminar les dejo esta infografia por :
http://www.skilledup.com