¿Cuál es la mejor manera de desarrollar una aplicación para Android e iOS, React Native u otra cosa?

Tomemos diferentes perspectivas para discutir este tema.

Desde el punto de vista técnico

  • Actuación:

He estado desarrollando aplicaciones móviles con diferentes tecnologías. La primera diferencia viene a mi mente es el rendimiento. El código nativo (Java, Obj-C, Kotlin, Swift) le brinda el mejor rendimiento, puede escribir código no optimizado y sigue siendo rápido. El rendimiento de las aplicaciones híbridas (por ejemplo, Ionic) está muy por detrás de las aplicaciones nativas antes de la optimización. Reaccionar El rendimiento de las aplicaciones nativas se encuentra entre ambos.

Nativo> Reaccionar Nativo> Híbrido

  • Código compartido entre SO:

Debido a que las aplicaciones híbridas usan webview como medio, puede lograr el máximo intercambio de código entre diferentes sistemas operativos móviles, la biblioteca subyacente garantiza la coherencia.

Las aplicaciones React Native también pueden alcanzar el 100%, pero necesitará pequeños ajustes (inconsistencia) para que sea aún más nativo para cada plataforma.

Actualmente, también puedes usar Swift para desarrollar Android, ya que un ingeniero muy talentoso hace que esto suceda inicialmente (muchos desarrolladores de iOS predijeron que Google adoptará Swift desde entonces, pero desafortunadamente …). Recuerdo que la solicitud de extracción del ingeniero talentoso fue criticada debido a que el tamaño del código de confirmación es demasiado difícil de revisar. No he probado esa característica hasta ahora, cualquiera que lo haya hecho puede comentar a continuación.

Híbrido> = Reaccionar nativo> = Nativo

Desde el punto de vista comercial

Si tiene muy pocos desarrolladores internos y no va a externalizar, la elección de la tecnología de intercambio de código es definitivamente una buena elección, a pesar de que compromete el rendimiento de la productividad, puede probar el mercado rápidamente y maximizar su inversión. Dado que React Native ha sido adoptado por muchas grandes empresas y desarrolladores, hay muchos proyectos y bibliotecas de código abierto en Github que están listos para su reutilización, por lo que elegiré React Native sobre otras tecnologías para un pequeño equipo de desarrolladores (actualmente junio de 2017) .

Reaccionar nativo> híbrido> nativo

Esa es toda mi opinión, siéntase libre de comentar si tiene alguna pregunta.

Bueno, evitaría cualquier cosa que tenga que ver con JavaScript, por lo que React Native está fuera. JavaScript es un lenguaje monumentalmente malo.

Pero no tendría ningún problema en usar un lenguaje transpilado , por lo que algo como Amber Smalltalk sería bueno. Hay muchos buenos idiomas para elegir: vea The Super Surrogates of JavaScript.

Otra opción de idioma sería Java. Si Java! También es multiplataforma, con marcos como Codename One y Multi-OS Engine.

Otra opción es C # con Xamarin.

Otra posibilidad es Python con Kivy.

No hay una “mejor” manera. Todas las aplicaciones móviles multiplataforma son compromisos con respecto al desarrollo nativo (Java / Kotlin para Android y Objective-C / Swift para iOS). Es por eso que el desarrollo nativo sigue siendo abrumadoramente preferido sobre el desarrollo multiplataforma.

Pero si realmente debe hacer multiplataforma, recomendaría Java o C # con uno de los varios marcos disponibles.

Desarrollo de aplicaciones móviles y MBaaS | Axway Appcelerator es una forma de desarrollar aplicaciones móviles multiplataforma.

He usado Appc durante más de 5 años para desarrollar aplicaciones empresariales destinadas a teléfonos y tabletas iOS y Android. Es rápido, fácil y confiable.

Está basado en JavaScript y la mayoría de las funcionalidades nativas están disponibles incorporadas. Si algo no está disponible, también permiten desarrollar módulos de la función necesaria en lenguajes nativos (objetivo C / java) y hay muchos módulos de terceros disponibles en la red.

¡Vale la pena intentarlo!

React native es una buena solución, pero creo que al escribir una implementación para ambos, Xamarin es una mejor solución. Es C #, que es esencialmente Java, pero funciona mejor en iOS y Android que React Native. Realmente se reduce al mejor git y al conocimiento actual. Si sabe reaccionar y tiene experiencia, entonces las aplicaciones basadas en formularios sencillos probablemente se implementen mejor con React Native. Para cosas de simole, el rendimiento de JavaScript no será realmente una gran preocupación.