Estoy a punto de codificar una aplicación, ¿cómo elijo qué tecnología usar?

Si realmente quiere apuntar solo a Android, puede comenzar con Java.

O puede usar uno de los muchos entornos de desarrollo multiplataforma, y ​​su código se ejecutará en múltiples plataformas.

Si este es un ejercicio de aprendizaje, de cualquier manera está bien. Aprender a codificar es transferible de una plataforma e idioma a otro.

Pero creo que los entornos multiplataforma se han vuelto lo suficientemente buenos como para justificar su uso para la mayoría del desarrollo de aplicaciones.

Elegir uno puede ser difícil, pero en algún nivel no importa, porque puedes cambiar a otro si decides que odias a uno. Aquí hay algunas ideas sobre las opciones:

Xamarin

  • Compila el código nativo, por lo que la aplicación resultante es rápida, incluso si tiene un procesamiento algo extenso.
  • La seguridad tipo está integrada y aplicada. Esto evitará muchos errores incluso antes de ejecutar la aplicación.
  • Debido a los tipos, obtienes un excelente soporte de herramientas: Autocompletar siempre funciona y es exactamente preciso. Refactorizar es lo mismo.
  • C # es detallado, por lo que es más lento de escribir que los lenguajes dinámicos más nuevos. Para un principiante, esto puede considerarse algo bueno, pero también puede ser intimidante o desalentador debido a la curva de aprendizaje.
  • Su aplicación no puede compartir código con una aplicación web.

NativeScript

  • Utiliza controles nativos para la velocidad nativa en las interacciones de la interfaz de usuario.
  • Resume las diferencias entre Android e iOS para que pueda escribir o modificar la interfaz de usuario una vez. Hasta un 95% de reutilización de código como resultado.
  • Utiliza JavaScript / TypeScript, que es más conciso que C # y más accesible para los nuevos desarrolladores.
  • Le permite llamar a API nativas desde JavaScript, por lo que no está obligado a escribir código específico de la plataforma en Java / Swift.
  • Integrado con Angular 2, que es muy rápido y tiene una gran base de usuarios.
  • JavaScript no es tan rápido como C # compilado, pero eso solo importa si está haciendo un procesamiento no trivial en el código.
  • La curva de aprendizaje es probablemente más fácil que C # y React Native.

Reaccionar nativo

  • Utiliza controles nativos para la velocidad nativa en las interacciones de la interfaz de usuario.
  • Requiere modificaciones por plataforma, por lo que aún debe definir partes de la interfaz de usuario dos veces. Código típico de reutilización de aproximadamente el 70%.
  • Basado en React, que es rápido y tiene una gran comunidad.
  • Basado en React que es difícil. Angular es fácil. Reaccionar es difícil.
  • Requiere que escribas complementos en código nativo.
  • React Native tiene menos opiniones sobre la pila de aplicaciones: React es solo la capa de vista en MV *. Esto puede ser bueno (¡muchas opciones!) Y malo (¡¿muchas opciones ?!) en términos de qué otras herramientas utiliza para crear su aplicación.
  • La curva de aprendizaje puede ser la más difícil aquí si eres un desarrollador imperativo tradicional, ya que es más fácil pensar en React si estás pensando funcionalmente, por lo que debes aprender a pensar de manera diferente sobre el código.

Córdoba / Iónico / Meteor (Híbrido)

  • Utiliza un WebView, por lo que puede usar cualquier cosa diseñada para la web y funcionará.
  • Debido a que puede usar cualquier cosa que funcione en la web, las personas lo hacen, y con frecuencia termina con un rendimiento terrible porque los navegadores móviles no pueden manejar todos los megabytes de JavaScript que generalmente se lanzan a los navegadores de escritorio.
  • Para obtener rendimiento del desarrollo híbrido, debe ser conservador sobre los marcos y bibliotecas que agrega al proyecto. Empaquetar / minimizar la biblioteca para producción mediante la concatenación de JavaScript puede mejorar el tiempo de inicio.
  • Con Ionic 2 / Angular 2, o con Meteor / Blaze, obtienes un rendimiento bastante sólido de fábrica, pero aún es posible eliminar el rendimiento si extraes demasiadas bibliotecas.
  • La curva de aprendizaje para crear una aplicación es, sin duda, la más fácil de las cuatro opciones que describo, así como en comparación con el desarrollo nativo. Pero sí le da la opción de destruir el rendimiento si está dispuesto a importar una biblioteca para cada pequeña cosa.

¿A qué plataforma estás apuntando?

macOS o iOS -> Swift u Objective-C

Windows (incluida Xbox) -> C #, tal vez C ++

Android -> Java

Móvil multiplataforma -> C # con bibliotecas Xamarin

Webapp -> Javascript frontend, casi cualquier cosa para el backend (me gusta Python)

Las aplicaciones generalmente se escriben usando Java debido a su compatibilidad con cada tipo de sistema operativo. Estar familiarizado con Java lo pondrá en el camino para convertirse en un desarrollador de aplicaciones de Android. Para desarrollar una aplicación de Android, deberá descargar un entorno de desarrollo integrado para una aplicación de Android como eclipse con las bibliotecas de software para el desarrollo de aplicaciones de Android ya cargadas. Por lo general, puede obtener esto de forma gratuita registrándose en una cuenta de desarrollador en la tienda de Google Play.

Esta pregunta se hace con frecuencia. Eche un vistazo a la respuesta de Natalia Tyunikova a Quiero comenzar a desarrollar una aplicación móvil en Android / iPhone / Windows. ¿Qué tecnología debo usar?

Vea la respuesta de David Kra a Soy un estudiante de 18 años que quiere crear una aplicación. No tengo ninguna experiencia en programación. ¿De qué maneras puedo crear la aplicación?

Si es andoid, puede trabajar con Java, C #, LUA y mucho más, depende de usted con qué idioma prefiere trabajar, le sugiero que trabaje con Java o C # porque hay mucha comunidad disponible para ayuda.