Soy un desarrollador móvil que ha dedicado mucho tiempo a considerar este problema.
¿Por qué preguntas?
Lo más probable es que espere reducir los costos de desarrollo de aplicaciones al:
- Uso de habilidades de desarrollo HTML5 / Javascript existentes
- Dirigirse a múltiples plataformas sin escribir múltiples aplicaciones desde cero
- No tener que mantener múltiples bases de código en el futuro
Las razones también pueden incluir:
- Desarrollo HTML5 / Javascript percibido como "más fácil" que el desarrollo de plataforma nativa
- Evitar el pago de tarifas de registro del programa de desarrollador
- Evitar restricciones de contenido de la tienda de aplicaciones (juegos de apuestas, etc.)
- Evitar la compra de hardware de desarrollo (por ejemplo, Mac para desarrollo de iPhone)
Definiciones
Establezcamos exactamente lo que queremos decir con cada uno de los tres enfoques mencionados:
Nativo
Una aplicación que se instala en un dispositivo, generalmente desde su tienda de aplicaciones (aunque a veces se puede cargar de lado). A los fines de esta discusión, la interfaz de usuario de una aplicación nativa no suele consistir en una vista web a pantalla completa solamente.
Web móvil
De hecho, puede ser cualquier página web, sin embargo, para esta discusión, consideremos una aplicación web de una sola página que intenta imitar el aspecto de una aplicación nativa. No es una aplicación nativa, se ejecuta en el navegador del dispositivo.
Aplicación nativa de la aplicación híbrida
híbrida instanceof
.
La mayoría de las personas probablemente entiendan que una aplicación híbrida es una aplicación web móvil de una sola página (de nuevo, muy probablemente imitando el aspecto de una aplicación nativa), pero empaquetada como una aplicación nativa con acceso a servicios nativos (a la Phonegap).
Sin embargo, de hecho, hay un espectro entre el modelo Phonegap y el completamente nativo al que hablaré más adelante.
Web móvil
Restricciones técnicas En
primer lugar, enumeremos algunas restricciones técnicas en las aplicaciones web móviles que, en sí mismas, podrían ser decisivas en función de lo que esté haciendo:
- Solo interfaz de usuario HTML / canvas
- Sin acceso a ciertos eventos y servicios del dispositivo (estos están ampliamente documentados)
- No se puede incluir en las tiendas de aplicaciones (lo que afecta la visibilidad)
- Puede convertirse en pantalla completa y tener un icono de pantalla de inicio en iOS, sin embargo, esta es una experiencia inusual y desconocida para la mayoría de los usuarios
Si puede vivir con todo lo anterior, siga leyendo para obtener más información sobre los desafíos de las aplicaciones web de estilo nativo de una sola página. Sin embargo, esta sección no estaría completa sin referencia a la aplicación FT.
Financial Times
La aplicación web FT es un famoso ejemplo de este estilo de aplicación. Aquí hay una característica interesante del periódico Guardian del Reino Unido al respecto.
Sin duda es una hazaña notable de ingeniería. Tenga en cuenta que actualmente solo está disponible solo en iOS ; esto me dice que están encontrando que resolver los desafíos del desarrollo avanzado entre navegadores es realmente muy difícil.
Aplicaciones web de estilo nativo de una sola página
Esta sección se aplica tanto a la web móvil como a las aplicaciones de estilo Phonegap.
La apariencia de estilo nativo dentro de una aplicación web generalmente se logra con un marco como Sencha Touch que proporciona un conjunto de componentes de interfaz de usuario para su uso.
Tales marcos están bien para interfaces de usuario muy simples. Sin embargo, carecen de flexibilidad. No podrá implementar ningún diseño de aplicación nativa con Sencha, deberá adaptar su diseño a lo que el marco puede acomodar.
La principal forma en que estos marcos sufren es tratando de emular las propias complejidades de la interfaz de usuario de la plataforma. ¿Ese pequeño efecto de rebote que obtienes cuando te desplazas hasta el final de una lista en el iPhone? Su marco debe emular eso en Javascript. Es imposible recrearlo por completo, será más lento y sus usuarios se verán atrapados en el "valle misterioso" de una aplicación que se ve como nativa, pero claramente no lo es, y no es técnica. el usuario no podrá señalar exactamente por qué.
El mito de "HTML5 / Javascript es fácil"
La fragmentación de dispositivos dentro de los navegadores web es abundante, y cuando superas los HTML y CSS más básicos, notarás que las cosas no funcionan como cabría esperar. Es posible que pases más tiempo resolviendo problemas complicados de IU de lo que habrías ahorrado haciéndolo de forma nativa dos veces. Si va a ser nativo, tenga en cuenta que las vistas web de aplicaciones nativas no son lo mismo que los navegadores de dispositivos y tienen sus propios problemas de fragmentación.
Y a medida que su aplicación se vuelva más funcionalmente compleja, encontrará que necesita más que habilidades básicas de jquery para mantener su Javascript limpio y fácil de mantener.
Dicho esto, es perfectamente posible crear aplicaciones simples y funcionales con bastante rapidez con este enfoque. Pero es bastante obvio cuando una aplicación lo está haciendo.
Más a lo largo del espectro
Por lo tanto, queremos un mejor UX que las aplicaciones de estilo Phonegap pueden ofrecer, sin escribir absolutamente todo desde cero varias veces. ¿Qué podemos hacer?
Compartir código no UI
Hay una variedad de técnicas disponibles para compartir la lógica de negocios en múltiples plataformas nativas. Google ha lanzado J2ObjC que traduce Java en Objective-C. Con un factorización cuidadosa del código, se podría usar una biblioteca Java tanto en Android como en iOS.
Las bibliotecas como Calatrava y Kirin permiten manipular las bases de código escritas en Javascript (y, por lo tanto, cualquier cosa que pueda compilarse en Javascript) a partir del código nativo. Descargo de responsabilidad: trabajo para Future Platforms que creó Kirin; Hemos tenido un gran éxito al usarlo en iOS con Javascript generado desde Java con GWT, y el código Java también se ejecuta de forma nativa en Android.
Use vistas web ... cuando corresponda
Las vistas web a pantalla completa tienen mucho trabajo por hacer para poder imitar las transiciones de pantalla y los efectos de rebote. Pero una vista web dentro de la aplicación nativa de Chrome puede ser indistinguible de la nativa.
Existen métodos estándar y bien documentados para que las aplicaciones nativas y las vistas web se comuniquen.
Las listas y tablas pueden funcionar particularmente bien cuando se hacen de esta manera, sin embargo, la entrada de texto es un ejemplo de algo que se maneja mejor de forma nativa (para un control total sobre el teclado).
En resumen
El enfoque adecuado para usted depende de lo complicada que sea su aplicación y del nivel de pulido de la interfaz de usuario con el que estará satisfecho.
Mi lema: usa vistas web siempre que puedas, pero asegúrate de que tus usuarios no puedan saberlo .