¿Cuál es la diferencia entre HTML5, Native y una aplicación híbrida? ¿Cual es mejor?


Respuesta 1:
  • Aplicación nativa: se entrega a través de Play Store, App Store, Microsoft Store. Tiene la capacidad de acceder a bibliotecas nativas como cámara, ubicación geográfica, contactos almacenados en el dispositivo, sistema de archivos, acelerómetro, etc. Gran rendimiento y animaciones fluidas porque tiene acceso directo a la biblioteca de gráficos del dispositivo. Necesita más tiempo de desarrollo y conjunto de habilidades. Android: JavaiOS / macOS: Objective C / SwiftWindows Aplicación: .Net framework Para la actualización de la aplicación, nuevamente necesitamos actualizar el paquete e implementarlo en la tienda de aplicaciones respectiva. Difícil de decodificar Aplicación web: se entrega a través del navegador. Tiene acceso a algunas funciones nativas como cámara, micrófono. Tiene menos rendimiento en comparación con las aplicaciones nativas, pero el rendimiento también depende de la versión del navegador que estemos usando. El navegador requiere un mayor rendimiento. Habilidades de desarrollo requeridas: HTML, CSS y JavaScript Para cualquier actualización de la aplicación, podemos implementarla directamente en el servidor y nuestros usuarios pueden obtener las actualizaciones instantáneamente sin necesidad de actualizar la aplicación por sí mismos. pero el código puede ser minimizado a través del proceso de minificación de código. Aplicación híbrida: entregada a través de Play Store, App Store, Microsoft Store. Tiene la capacidad de acceder a bibliotecas nativas como Native App. Mejor rendimiento que la aplicación web pero no puede igualar el rendimiento como una aplicación nativa. Se requieren habilidades de desarrollo: igual que la aplicación web, pero también se requieren habilidades adicionales como Cordova, PhoneGap, etc. Para la actualización de la aplicación, nuevamente necesitamos actualizar el paquete e implementarlo en la tienda de aplicaciones respectiva. Fácil de decodificar pero el código puede minimizarse a través del proceso de minificación de código. Lo que es mejor: depende de la plataforma Web: Tienda de aplicaciones web: Rendimiento inteligente NativeDevelopment Hybrid.

Respuesta 2:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.


Respuesta 3:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.


Respuesta 4:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.


Respuesta 5:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.


Respuesta 6:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.


Respuesta 7:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.


Respuesta 8:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.


Respuesta 9:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.


Respuesta 10:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.


Respuesta 11:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.


Respuesta 12:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.


Respuesta 13:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.


Respuesta 14:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.


Respuesta 15:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.


Respuesta 16:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.


Respuesta 17:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.


Respuesta 18:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.


Respuesta 19:

Veo muchas ideas falsas en las respuestas aquí.

Primero, las definiciones:

  • HTML5 es una tecnología que se utiliza para especificar (parte de) el aspecto visual de una página web. HTML5 puede servirse desde un sitio web y representarse como una "aplicación web" en el teléfono. También se usa en aplicaciones híbridas para diseñar las partes visuales (controles, etc.). Cualquier aplicación que puede publicar en la tienda es, en algún nivel, una aplicación nativa. Cuando las personas dicen "aplicación nativa" a menudo significan "no híbrido", pero hay una falsa dicotomía implícita entre "nativo" y todo lo demás, cuando en realidad hay muchas opciones Una aplicación híbrida utiliza específicamente un WebView para representar la mayoría de los controles / visual elementos. Encontrarás HTML5 y JavaScript manejando la mayoría de las aplicaciones híbridas.

Voy a adivinar que realmente estás comparando "aplicación web", "aplicación escrita en Java para Android y Objective C o Swift para iOS" y "aplicación escrita en Cordova / PhoneGap". Sin embargo, estas no son las únicas tres opciones, por lo que quiero agregar algunas opciones más para comparar. Para obtener un resumen rápido de las opciones que estoy considerando, consulte esta tabla:

Como puede ver, "nativo" e "híbrido" no son las únicas opciones. Cordova / Ionic son tecnologías híbridas: el renderizado se realiza en un WebView, aunque puede usar funciones nativas del dispositivo que no están disponibles en un sitio web (cámara, notificaciones, etc.).

Puede crear aplicaciones multiplataforma que tengan un rendimiento nativo. La mayoría de los juegos han estado utilizando técnicas de desarrollo multiplataforma durante años, y los juegos son más sensibles al rendimiento que la mayoría de las aplicaciones.

Existen Unity3d, Cocos2d-x y muchos otros entornos de desarrollo multiplataforma que le brindarán un rendimiento completo para su juego (en algunos casos mejor que "nativo"), y solo necesita escribirlo una vez.

Pero los motores de juego no son ideales para aplicaciones generales, entonces, ¿qué opciones tenemos allí?

El desarrollo "híbrido" ha sufrido muchas dificultades en los últimos años. Zuckerberg afirmó que el híbrido simplemente "no es lo suficientemente bueno". Pero luego Sencha Mobile creó un clon de Facebook basado en WebView que demostró que en realidad puedes hacerlo lo suficientemente rápido. Lea sobre esto en The Making of Fastbook: An HTML5 Love Story.

Por lo tanto, puede usar híbrido, y Cordova / PhoneGap es probablemente la plataforma más madura para construir. Sin embargo, hay opciones además de eso: Ionic Framework se basa en Cordova y le brinda controles adicionales específicos de la plataforma para que su aplicación se vea más Android o iOS en su plataforma respectiva. Meteor le brinda una manera de crear aplicaciones de pila completa que comparten código, y le permite apuntar a iOS, Android, aplicaciones web y código de servidor, todo con la misma base de código.

Pero he enumerado más opciones que Cordova en la tabla anterior. A veces quieres controles nativos, y varias de las opciones anteriores te dan la posibilidad de crear controles nativos desde tu aplicación multiplataforma.

React Native y Xamarin le permiten crear controles nativos al hacer que cree diferentes rutas de código para cada plataforma: para un control particular, definirá cómo se ve en Android y cómo se ve en iOS.

NativeScript y Tabris.js abstraen los controles comunes, por lo que puede definir su diseño una vez y hacer que funcione en ambas plataformas. Hay una nueva función de Xamarin que también te permite trabajar de esta manera, aunque no he escuchado qué tan bien funciona.

Kivy no usa controles nativos, sino que es un motor de juego que simplemente proporciona las herramientas que normalmente necesita para escribir una aplicación. Entonces, en lugar de verse como una aplicación de Android o iOS, es más probable que cree algo que se vea como una aplicación completamente personalizada. El rendimiento no debería ser un cuello de botella, pero puede que te guste o no el estilo.

Otras Consideraciones:

  • Una característica clave que proporcionan algunas de las soluciones basadas en JavaScript es Live Update: la capacidad de enviar una nueva versión de una aplicación a los usuarios sin tener que esperar a que se actualicen en la tienda o que la tienda apruebe una actualización. Dado que la aprobación en la tienda de Apple puede variar de días a semanas, la capacidad de enviar un parche a los usuarios casi de inmediato es poderosa. También significa que no necesitará admitir versiones antiguas de su API, si tiene una, ya que puede garantizar que la aplicación utilizará el último cliente API. En Native, obtienes acceso a las herramientas de desarrollo de la plataforma, que suelen ser buenas. En el desarrollo híbrido, tiene acceso a la increíblemente buena pila de herramientas de depuración disponibles en Chrome, y las herramientas en Safari, para depurar su aplicación en tiempo real. Los otros enfoques de JavaScript generalmente también tienen una forma de conectar Chrome, y React Native, en particular, admite la recarga en vivo: cambie un aspecto de la página que está viendo y lo volverá a procesar como si acabara de ejecutar todo el código para ese punto de nuevo. Es como una característica instantánea de "volver a ejecutar la aplicación y tomar las mismas decisiones". Los SDK nativos son típicamente detallados y molestos de usar para hacer algunas cosas comunes. Tener un ecosistema de plug-in disponible significa que agregar algo como pagos en la aplicación puede pasar de ser una molestia a agregar un plug-in y la interfaz de usuario. Lo mismo para el inicio de sesión en Facebook, notificaciones, etc. El ecosistema de complementos de Cordova es uno de los mejores, pero NativeScript se ve impresionante. NativeScript tiene una característica interesante: envuelve todas las API del sistema operativo con JavaScript, por lo que tan pronto como se publique una nueva API, Puede llamarlo directamente. De JavaScript Sin complemento nativo. Si tiene requisitos serios de procesamiento de datos, probablemente querrá un código nativo "real", con lo que me refiero a C / C ++ / Go / Rust o similar. La mayoría de las aplicaciones no necesitan esto, pero si lo necesita, casi todos los entornos anteriores tienen una forma de conectar su código nativo a la aplicación, pero es posible que deba conectarse por plataforma. Esto no se tiene en cuenta en la figura de "ahorro" anterior, porque no se aplica a la mayoría de las aplicaciones. Las estimaciones en la tabla anterior son realmente solo estimaciones. Muchos están tomados de (mi memoria de) lo que el equipo que desarrolla la tecnología respectiva ha afirmado, pero muchos son solo conjeturas educadas. Su experiencia puede ser diferente. Si necesita usar un complemento de terceros para su aplicación, es casi seguro que estará disponible en nativo para iOS / Android, pero no necesariamente para cualquier otra cosa. Muchos complementos están disponibles para Cordova, pero si el que desea usar no lo está, debe agregar el costo adicional de crear un complemento Cordova (u otro) para esa tecnología. También aumenta el costo. Si necesita partes sustanciales de su código para convertirse en un complemento, para ser utilizado por otras compañías, hay suficientes personas que desarrollan código nativo que probablemente esté atrapado desarrollando nativo.

En conclusión: hay muy pocas razones para desarrollar el uso del SDK nativo de la plataforma directamente, y cuesta casi el doble hacerlo. Excepto si va a proporcionar su código como complementos para otros, le recomiendo encontrar una solución multiplataforma y usarla.

EDITADO para agregar información sobre Live Update ("parches en caliente") como lo menciona Shai Alon en los comentarios.