¿Cuáles son los pros y los contras de los enfoques de aplicaciones móviles HTML5, nativas e híbridas?

25

Quiero desarrollar una aplicación móvil. Recientemente leí un artículo en el Foro Telerik , que compara entre tres tipos de aplicaciones móviles y no sé cuál debo seleccionar para empezar. Aquí hay una imagen que describe los pros y los contras de las diferentes opciones de diseño móvil

Cuadro de diseño móvil de Telerik

Para decidir entre estas opciones de diseño, me gustaría comprender mejor los pros y los contras de cada opción de arquitectura que figura en el diagrama. ¿Cuáles son los pros y los contras de cada enfoque de arquitectura?

Anyname Donotcare
fuente
55
Esta pregunta parece estar basada en este prototipo . La pregunta original atrajo 88 respuestas, solo una de las cuales es ejemplar. Aprecio el esfuerzo que el autor puso en la pregunta original, pero la historia no se ha visto favorablemente en este tipo de preguntas , y he votado para cerrar esta pregunta en consecuencia.
Robert Harvey
1
@just_name Mientras preguntaba cuál es mejor está fuera de tema, revisé su pregunta para pedir una lista de pros y contras para cada enfoque de arquitectura. Entonces volví a abrir tu pregunta. Espero que obtengas mejores respuestas ahora.
maple_shaft
Según la redacción, esperaba ver una discusión sobre algún tipo de principios generales de no envejecimiento (por ejemplo, duración de la batería, conectado / desconectado, etc.). En cambio, hay otra cosa HTML5 vs nativa.
Den
Puede encontrar interesante este artículo sobre el proceso de toma de decisiones de LinkedIn.
Brian

Respuestas:

23

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 .

funkybro
fuente
2
¡Gran respuesta! Y bueno, hablaste de J2ObjC, no estaba al tanto de eso.
momo
4

¡Primero revise esta encuesta para saber qué está pasando!

comparación entre los tres tipos: Comprender las opciones de desarrollo de su aplicación móvil

Comparaciones entre nativos e híbridos:

HTML5 vs nativo

HTML5 vs aplicación nativa: ¿cuál elegir?

Esta es realmente buena: aplicaciones nativas HTML5 v: consideraciones clave para su estrategia móvil

Comentarios:

  • Puede elegir uno de ellos dependiendo de lo que tenga (habilidades) y de lo que pueda obtener (apariencia, rendimiento, funcionalidad, ...)
  • ¡Cada desarrollador de aplicaciones móviles debe tener una visión / requisitos claros sobre la aplicación que está desarrollando para las primeras versiones y las futuras! solo para asegurarse de que la opción que usaría no lo limitará en algún momento.
  • No hay nada como tener una experiencia real con las tres formas y estar actualizado al mismo tiempo, esto le dará la sensación y la capacidad de tomar la decisión correcta.
Abdurahman
fuente
2

Si necesita acceder al hardware del teléfono, debe crear una aplicación nativa (en HTML5 puede acceder a algunos de los componentes de hardware del dispositivo, como el GPS).

Si se siente más cómodo con el desarrollo web, debe seguir con eso a menos que necesite crear una aplicación nativa.

En cuanto a lo que debe saber, diría que debe tener en cuenta todos los diferentes tamaños de pantalla (incluida la orientación vertical y horizontal). Debe tener en cuenta varias versiones del sistema operativo (esto es más para Android). Dado que se trata de dispositivos móviles, existe la posibilidad de que el usuario responda una llamada telefónica, es un teléfono y tampoco tenga la potencia informática de una computadora de escritorio o servidor.

DFord
fuente
2

Para mí, cuando escribo cualquier aplicación de consumo, lo que es primordial para su éxito es la aceptación y percepción del usuario de la aplicación. Debido a esas cuatro razones para inclinarse a favor de las aplicaciones nativas, a pesar de los costos adicionales asociados con el aprendizaje, la capacitación y la pérdida de WORA (escriba una vez que se ejecute en cualquier lugar) son:

  1. Inicio de aplicación más rápido
  2. Desplazamiento más suave
  3. Aplicación de interfaz de usuario más coherente que se vincula de manera más coherente con el resto del sistema operativo y las aplicaciones
  4. Respuesta más rápida de la interfaz de usuario de la aplicación

Lo que desea por encima de todo lo demás es una excelente experiencia de usuario que ayuda a que su aplicación tenga éxito en un mercado feroz. Por supuesto, hay excepciones, especialmente la falta de habilidades, la falta de tiempo y presupuesto. A veces, las aplicaciones están orientadas a un conjunto limitado de usuarios comerciales a quienes puede no importarles tanto estas cosas.

Son razones similares a estas que Facebook abandonó su estrategia de aplicación en favor de las aplicaciones nativas para iOS y Android:

Por favor lee:

Mark Zuckerberg: Nuestro mayor error fue apostar demasiado en HTML5 http://techcrunch.com/2012/09/11/mark-zuckerberg-our-biggest-mistake-with-mobile-was-betting-too-much-on- html5 /

Por qué Facebook abandonó la Web móvil y se hizo nativo con su nueva aplicación para iOS http://readwrite.com/2012/08/23/how-facebook-ditched-the-mobile-web-went-native-with-its-new- ios-app # awesm = ~ o9jDrRefxdgnpS

Espero que esto ayude.

MickJ
fuente
2

Con lo siguiente, mi postura actual sobre esta debacle es que es bueno comenzar con un híbrido, explorar su aplicación, iterar rápidamente sobre los comentarios de los clientes y estabilizar el conjunto de características. Luego, para reescribir la aplicación a nativo de acuerdo con las especificaciones, para mejorar la experiencia.

He dejado fuera la Web móvil, porque tiene un propósito completamente diferente. Si desea estar en las tiendas de aplicaciones, Native / Hybrid es el camino a seguir. Si desea simplificar la implementación y está dispuesto a sacrificar la experiencia y la capacidad técnica, elija Mobile Web.

Pro / Contras Nativo :

  • Pro: se adapta al resto de la experiencia del dispositivo, no hay problemas de valle extraordinarios .
  • Pro: Proporciona principalmente una experiencia de interfaz de usuario suave y consistente, sin demoras ni tartamudeos.
  • Pro: pocas limitaciones técnicas, puede utilizar completamente el dispositivo.
  • Pro: las herramientas nativas cumplen con la validación de las tiendas de aplicaciones.
  • Pro: los marcos nativos incluyen ajustes por versión de plataforma, menos tiempo dedicado al ajuste.
  • Contras: Es construir para durar, y por lo tanto toma más tiempo construirlo.
  • Con: Requiere desarrolladores políglotas que son difíciles de encontrar, caros.
  • Con: necesita familiarizarse con las API de cada plataforma de dispositivo (iOS / Android / etc.).
  • Con: curva de aprendizaje empinada.
  • Con: Diferentes herramientas por plataforma.

Híbrido Pro / Contras :

  • Pro: base de código única para apuntar a múltiples plataformas de dispositivos.
  • Pro: ciclos de desarrollo rápidos, gran flexibilidad en el diseño, perfecto para la creación de prototipos y MVP .
  • Pro: curva de aprendizaje cómoda, mucha documentación, marcos para ayudarlo.
  • Pro: conjunto de herramientas de desarrollo único. Las herramientas de depuración de Chrome son excelentes.
  • Pro: una base de código para apuntar a múltiples plataformas de dispositivos.
  • Pro: muchos desarrolladores disponibles, fáciles de aprender.
  • Con: Requiere un marco de interfaz de usuario decente para adaptar la interfaz de usuario para cada plataforma diferente para que sea coherente con la experiencia del dispositivo. Hay soluciones como Kendo UI , Sencha Touch .
  • Con: necesita ser muy consciente sobre el uso de la memoria y el cómputo, algunos bucles CSS y JavaScript pueden ralentizar seriamente la aplicación. No hay muy buenas herramientas disponibles en el dispositivo para depurar.
  • Con: aún no ha madurado, las cosas pueden cambiar repentinamente, las herramientas están mejorando
Bart Verkoeijen
fuente
2

Siendo yo mismo un desarrollador móvil, lo peor es el acceso sin conexión. Simplemente obliga a los usuarios a estar en línea, lo que debería funcionar en muchas aplicaciones, pero no en todas.

El otro gran mal aspecto es la lentitud. El tiempo necesario para analizar datos remotos puede llevar mucho tiempo. Sí, puede buscar datos previamente durante el tiempo de carga, pero en todos los demás casos no puede evitar la lentitud.

Descubrí que dicha aplicación terminaba más costosa que las aplicaciones nativas. Ya no los recomiendo a ningún cliente mío.

deviDave
fuente
1

El gran problema con las aplicaciones híbridas es la fragmentación de los marcos: claramente hay muchas más (Ionic, Xamarin, React Native, etc.) que plataformas móviles nativas de interés (generalmente solo dos, Android e iOS). Estos marcos compiten, emergen, disminuyen, por lo que ser híbrido no lo salvará de saltar de plataforma en plataforma, incluso si planea mantener a su equipo actual de por vida.

Google y Apple están haciendo todo lo posible para proporcionar y respaldar editores, depuradores, marcos de prueba, herramientas de refactorización y otros medios para desarrollar sus plataformas. Por lo tanto, tomaría una redacción típica " es mucho más fácil desarrollar una aplicación híbrida, editar con su editor favorito y abrir en un navegador " con la reserva razonable. Xamarin y React Native son plataformas de desarrollo, al igual que Swift o Java / Android, y aunque "hello world" puede parecer más corto, eventualmente debería tomar el tiempo comparable para aprender correctamente.

Si, en cualquier caso, surgiera la necesidad de componentes nativos (por ejemplo, la biblioteca de terceros existente debe estar integrada), terminará con tres marcos en lugar de dos: iOS, Android y su marco híbrido en la parte superior, terminando Con una arquitectura más compleja. La depuración de tales aplicaciones, el paso entre llamadas de capas cruzadas, el registro de todas las capas y el mantenimiento del código sincronizado es complejo o, a veces, imposible.

Algunos dicen que la " aplicación se verá exactamente igual para todas las plataformas ". ¿Es realmente algo bueno? La aplicación de Android debe verse como la aplicación de Android y la aplicación de iOS debe verse como la aplicación de iOS.

¿Qué pasa con las nuevas características? Wearables? ¿Aplicaciones instantáneas ahora ofrecidas por la plataforma Android? ¿Muestra datos adicionales en la pantalla externa? Las aplicaciones híbridas ahora admiten muchas características nativas, pero ¿realmente las admiten todas ? En cualquier momento, de inmediato?

Finalmente, no solo el rendimiento y la experiencia del usuario, sino también la seguridad pueden estar más del lado de la aplicación nativa. El marco híbrido agrega la capa de indirección que puede tener errores propios, incluidos errores de seguridad.

Concluyendo todo lo anterior, bajo la posibilidad de elegir, definitivamente elegiría las dos aplicaciones nativas, una para iOS y otra para Android, o simplemente diseñaría una versión móvil del sitio web sin molestarme en el desarrollo de aplicaciones para ninguna plataforma. .

h22
fuente