Existen aproximadamente 5 estrategias diferentes que puede seguir para desarrollar una aplicación multiplataforma. La elección entre eso dependerá de lo que quieras construir. su experiencia y las compensaciones que está dispuesto a hacer (recursos, tiempo, experiencias, etc.).
- Una aplicación completamente nativa: escriba una aplicación para Android, otra para iOS, otra para Windows, etc. La única pieza común sería cualquier servicio en la nube al que sus aplicaciones llamen. Este es probablemente el más ineficiente desde el punto de vista de Ingeniería, pero proporcionará la mejor experiencia de usuario (incluido el rendimiento).
- Aplicación nativa con cierta reutilización de código: puede escribir su lógica de tiempo de ejecución / negocio en C ++ puro mientras que su IU se puede escribir en los marcos nativos proporcionados por la plataforma. Por ejemplo, en Android, escribirá su código UI en Java y usará JNI para hablar con el código C ++ mientras que en iOS, escribirá su código UI en Cocoa / Objective-C. También deberá escribir un código específico de plataforma para llamar a API de dispositivo / SO. También puedes hacer algunas optimizaciones aquí. Por ejemplo, puede usar algunas bibliotecas de código abierto o de terceros para API específicas del sistema operativo / dispositivo. Claramente, el código C ++ no le permitirá usar este código para el navegador. Este modelo generalmente funciona mejor que el primer enfoque, pero aún tiene todos los beneficios del enfoque anterior. También puede escribir su lógica de negocios en javascript en lugar de C ++, pero eso no le proporcionará muchos beneficios en este modelo.
- Proporcione experiencia de aplicación nativa pero escribiendo el código exactamente una vez. Aquí hay dos subenfoques, pero ambos enfoques le permiten escribir código exactamente una vez y usarlo en todas las plataformas principales.
- Crea una aplicación con Xamarin. En este modelo, crea la aplicación una vez que usa C # y se convierte en código nativo en otras plataformas. Esto aún le brinda todos los beneficios, incluido el rendimiento de la aplicación nativa, y será muy atractivo para los equipos que estén más familiarizados con las tecnologías .Net. Por supuesto, este enfoque cubrirá iOS, Android y Windows, pero no web u otras plataformas.
- Cree una aplicación web utilizando una tecnología javascript y cree la interfaz de usuario en JS pero utilizando React. Esto le permite proporcionar una experiencia nativa a sus usuarios en iOS y Android, al tiempo que le permite hacer que la misma aplicación esté disponible a través de la web. Aquí el tiempo de ejecución está en javascript, pero su interfaz de usuario será nativa. Esto también le permite incluir la web en sus plataformas, lo que le permite usar esta aplicación web en plataformas que no sean iOS y Android. Esto será más atractivo para los equipos con más experiencia en tecnologías web.
- Aplicaciones web: estas aplicaciones se crean completamente en HTML / JS y serán más atractivas para los equipos familiarizados con las tecnologías web. Puede usar muchas tecnologías aquí como Angular.js, etc., para escribir la aplicación en javascript. Sin embargo, aún necesitará escribir código o usar bibliotecas para llamar a las API específicas del dispositivo / SO. Para esto, puede usar tecnologías como PhoneGap / Cordova. Por supuesto, con esto, también puede apuntar a los navegadores. Aunque la desventaja es que estos pueden no ser más efectivos o eficientes en memoria en dispositivos de gama baja, la brecha se está cerrando rápidamente.
He categorizado las soluciones en las 5 categorías anteriores, pero no he enumerado todas las tecnologías allí. Estoy seguro de que una vez que identifique una estrategia, puede encontrar muchas bibliotecas y herramientas que harán que su desarrollo sea más fácil y rápido.
- ¿Qué es la arquitectura empresarial móvil? ¿Cómo es posible integrarse en un EA utilizando el marco Zachman o Togaf?
- ¿Cómo se debe mejorar el desarrollo de aplicaciones móviles y la promoción web?
- Si alguien pudiera crear una aplicación web y móvil para demostrar sus habilidades como desarrollador de pila completa que te haría querer contratarlos, ¿qué tecnología y fundamentos incluiría?
- ¿Qué requiere para alojar un sitio web o una aplicación de mensajería móvil (excepto para la programación)?
- ¿Puedo crear un sitio web o aplicación completamente estructurado usando solo Python?