¿Cuáles son las ventajas y desventajas de desarrollar aplicaciones móviles con JavaScript?

Cuando comenzamos a trabajar en Visit [1] teníamos un sentido de dirección y visión para el producto que queríamos, pero carecía de mucha claridad. Los detalles del producto fueron borrosos, lo que se tradujo en un popurrí de características y diseños que queríamos probar. Después de haber trabajado mucho en Javasript y AngularJS, mi primer instinto fue llevar a Cordova a dar una vuelta para construir el MVP. No recuerdo todos los detalles, pero esto es lo que nos propusimos construir:

  1. Función de video llamada para permitir a los usuarios chatear por video con sus médicos.
  2. Chat de texto uno a uno entre usuarios y médicos.
  3. Perfil básico para usuarios y médicos.
  4. Información y eventos basados ​​en la ubicación.

Esto es lo que aprendí:

  1. Construir una interfaz de usuario simple no es demasiado difícil. Como recién comenzábamos con MVP, queríamos centrarnos solo en los usuarios de Android. Pero aún así trataría de hacer que el código funcione para iOS porque bueno, ¿cuál es el punto de usar Cordova si no estás haciendo multiplataforma, verdad? Pero si quería un control absoluto de la interfaz de usuario y admitir la mayoría de los dispositivos, era un poco desagradable. Especialmente pruebas, ya que algunos componentes se rompieron sin ningún motivo (esos teléfonos MiUi – ¡qué asco!).
  2. El uso de la memoria y la batería estaban fuera de serie. Las videollamadas durante 15 minutos a menudo provocarán que el dispositivo se caliente y pierda batería como una barra de helado en un día caluroso y soleado.
  3. Las animaciones se sintieron forzadas y no limpias. Especialmente en dispositivos más antiguos. En aquel entonces, la mayoría de los usuarios ejecutaban Android 4.1–4.4 y apestaba a los Samsung. ¿Te imaginas lanzar una aplicación que apestaba en dispositivos Samsung?

Sin embargo, solo 4–5 meses antes de comenzar en Visit, había creado una aplicación Cordova simple para uno de mis proyectos de investigación. Todo lo que hizo la aplicación fue dejar que un grupo de estudiantes y nuestro profesor exploren y filtren a través de un montón de datos tabulares y hagan CRUD / filtrado / clasificación / búsqueda, etc. en el conjunto de datos. Nada sofisticado, pero una aplicación genial para impresionar al profesor.

Pero Shashvat, ¿por qué demonios construiste una aplicación móvil para ESO?

Bueno, estaba jugando con un montón de herramientas en ese entonces y las aplicaciones híbridas parecían aparecer de vez en cuando en mi feed y probarlo parecía lógico. Me sentí cómodo con AngularJS, por lo que construir en Cordova fue como una extensión para mí. Además, ¡obtuve algunos premios en mi universidad por construir la misma aplicación y 3 plataformas!

Entonces sí, tldr; Si es una aplicación simple, JS parece una muy buena opción.

Notas al pie

[1] Visita – Chat gratis con un médico

Hay una serie de posibles marcos js a considerar, siendo el más popular:

  1. Iónico
  2. Phonegap / cordova
  3. Plataforma de desarrollo de aplicaciones móviles y MBaaS | Appcelerator

El uso de js como lenguaje de código ofrece algunas ventajas como:

  1. Una sola base de código (puede ser que algunas cosas no sean iguales para Android vs iOS, pero esos cambios son pequeños)
  2. Se puede construir utilizando tecnología web (HTML, CSS, Javascript)
  3. Menos de una curva de aprendizaje en comparación con los idiomas nativos si aún no ha estado expuesto a ellos

Contras :

  1. Rendimiento de la aplicación más lento que el código nativo
  2. Es posible que no tenga acceso a las últimas API, ya que es necesario realizar ingeniería inversa para agregarlas.
  3. No todos los marcos admiten la misma funcionalidad. Appcelerator admite más que iónico / Cordova pero no es gratis.

El truco para decidir el desarrollo de aplicaciones nativas vs híbridas es entender qué características necesita la aplicación versus qué características están disponibles en la plataforma de código híbrido.

Depende del tipo de aplicación que desee compilar. Javascript ha ganado una gran cantidad de apoyo por parte de la comunidad en estos días. Hay muchos marcos que puede usar, como React Native, phonegap o Cordova para lograr lo que desea. A pesar de que no soy un experto en el campo, la comunidad recomienda usar ese tipo de marcos en aplicaciones como Instagram, Facebook (ya ambas están escritas con Javascript), quora, etc. Cuando el uso de gráficos en 3D sea muy extenso, considere usar el solución nativa (Java con C ++).

No estoy de acuerdo con la respuesta de Leon. Javascript no es un mal lenguaje. Es el núcleo de la web, es mantenido por una gran comunidad y en el futuro cercano será como una aplicación estándar escrita, solo dé unas pocas lecturas en la web y compruébelo usted mismo.

Oye. Soy estudiante de CS y trabajo a tiempo parcial con JS y Android (entre otras cosas), así que creo que estoy calificado para responder esto.

Tienes bastantes opciones para el desarrollo de aplicaciones JavaScript. Hay Ionic, ReactNative, Phonegap, Cordova y tal vez otros en los que no puedo pensar ahora. Ionic, Phonegap y Cordova compilan en aplicaciones híbridas. Lo que esto significa es que realmente no funcionan como aplicaciones nativas, sino que se ejecutan en WebViews, y eso tiende a ser bastante malo. Simplemente busque en Google “aplicaciones creadas con iónico” o algo así y pruebe esas aplicaciones, verá. Esos tres también son “escribir una vez, ejecutar en todas partes”, lo que significa que solo necesita escribir el mismo código en JS para iOS y Android. Sin embargo, ReactNative compila aplicaciones nativas, lo que significa que todo lo escrito se compila de manera similar a las aplicaciones nativas de Android o iOS. ReactNative es “aprender una vez, escribir en todas partes”, lo que significa que el código escrito en JavaScript no siempre se aplica a ambas plataformas (principalmente lo hace), pero a veces también necesitará escribir un código nativo. La experiencia de la aplicación ReactNative tiende a ser similar a las aplicaciones nativas. ReactNative es probablemente la mejor opción de estos marcos, pero desarrollar en ReactNative también requiere más trabajo.

Ahora con eso dicho, aquí está mi consejo: ejecutar desde JavaScript. En serio, JS es un lenguaje bastante malo en comparación con otras opciones, incluso con cosas como TypeScript o EcmaScript. No voy a hablar de eso, hay suficientes recursos en línea. Además, dijiste que ya estás creando la aplicación en Java, si ya has construido la mayor parte, ¿por qué volver a hacerlo solo por el simple hecho de JavaScript? Android SDK y las bibliotecas disponibles ya tienen tantas funciones que la mayoría de las veces solo necesitas unirlas.

Contras del desarrollo de aplicaciones JS:

Lenguaje malo utilizado para el desarrollo.

-Aplicaciones lentas (excepto ReactNative)

Ventajas del desarrollo de aplicaciones JS:

-Desarrollo rápido

– Se ejecuta tanto en iOS como en Android (a veces es necesario escribir un código nativo)

-Bueno si ya sabes JS, HTML, CSS

Mi consejo es que si realmente quieres un marco de desarrollo de aplicaciones multiplataforma, prueba Xamarin. Utiliza C #, uno de los mejores lenguajes disponibles, compila a nativo (tiempo de ejecución rápido), bastante similar a ReactNative en concepto, gran comunidad … Eso es solo mi 0.02 $.

Pros y contras de React Native: un curso de creación de aplicaciones nativas con JavaScript