Echemos un vistazo a las opciones, y por qué podría ser adecuado para usted ser nativo o híbrido o web.
- Native significa escribir código nativo de la plataforma, por lo que para iOS es Swift u Objective-C, y para Android es Java.
- Híbrido significa usar una solución de middleware que sirve como envoltorio nativo alrededor de un marco (a menudo) basado en tecnología web. Ejemplos: Apache Cordova, PhoneGap, Appcelerator.
- Web significa usar tecnología web pura, crear efectivamente un sitio web que de hecho es una aplicación web que se ejecuta en el navegador. Ejemplos: construido con AngularJS, React, etc. combinado con herramientas como jQuery Mobile y Famo.us.
- Los editores de aplicaciones, una cuarta categoría, es básicamente una plataforma SaaS en torno a una de las 3 categorías anteriores. Efectivamente, creando una aplicación con componentes prefabricados y exportándola a una aplicación binaria y / o web en ejecución. Ejemplos: App Machine, AppMakr.
Me centraré en las categorías 1 y 2 en mi respuesta, porque es el tema principal de la pregunta original. Las categorías 3 y 4 podrían cambiar la perspectiva de alguien que investiga qué plataforma usar.
Profesionales nativos
Las aplicaciones nativas generalmente funcionan mejor, porque tienen acceso directo al hardware y la memoria. Los componentes de la interfaz de usuario se representan en una forma nativa del sistema operativo, por lo que el procesamiento de gráficos es más rápido. Es posible el procesamiento en segundo plano, el uso de hardware como el acelerómetro y la interacción con productos externos como HealthKit, Bluetooth y redes de bajo nivel. Las aplicaciones nativas se pueden publicar en App Store / Google Play.
- ¿Qué aplicación puedo descargar para aumentar mi vocabulario?
- ¿Cuántas líneas de código tiene una aplicación como WhatsApp o Tinder? ¿Y cuál es el costo promedio de una aplicación de ese tamaño?
- ¿Qué es más importante para una aplicación de noticias: la tecnología detrás de ella o el diseño de la aplicación?
- Technorati: ¿Cuáles son las principales aplicaciones utilizadas por los periodistas?
- ¿Por qué es WhatsApp más popular que GroupMe?
Contras nativos
Una desventaja de las aplicaciones nativas es que cualquier aplicación debe hacerse una vez para cada plataforma, duplicando o triplicando efectivamente el esfuerzo y el costo involucrados. Para equipos más grandes y aplicaciones complejas, la sobrecarga se crea al necesitar múltiples diseños para múltiples dispositivos y mediando entre estándares de IU que difieren de una plataforma a otra.
Pros híbridos
Las aplicaciones híbridas pueden funcionar bien, dependiendo de la plataforma utilizada. Muchas plataformas de middleware tienen buenas soluciones para escribir una vez, desplegar dos veces, independientemente del hardware. Se crean bibliotecas Wrapper, que proporcionan una interfaz no adecuada para funciones que funcionan de manera diferente en los múltiples sistemas operativos móviles. Plataformas como Cordova y PhoneGap tienen un muy buen soporte de todos los principales sistemas operativos de teléfonos. No hace falta decir que el uso de middleware disminuye el esfuerzo y el costo para crear una aplicación para múltiples plataformas.
Contras híbrido
Aún así, debido a que dependen del navegador web y especialmente de la representación de HTML basado en árboles, los gráficos son lentos y torpes. Hay menos memoria disponible y los objetos a menudo se representan de una manera que no es nativa de la plataforma, lo que genera una sobrecarga y una carga en el procesamiento. JavaScript, de uso frecuente, se evalúa e interpreta en una máquina virtual, creando una barrera entre el hardware y la aplicación. Además, las aplicaciones iOS en particular, deben usar las vistas web basadas en Safari y no pueden confiar en una representación más avanzada que se encuentra en Chrome, por ejemplo.
¿Lo mejor de ambos mundos?
Nunca tome una decisión de diseño o desarrollo solo en función del costo. Tal decisión seguramente te morderá en el trasero más adelante, porque no consideraste los otros factores que entran en juego. Por ejemplo: muchos desarrolladores que conozco, que trabajan con middleware, no tienen una comprensión básica de las plataformas separadas y su hardware. Se construyen sobre arena y, a menudo, se topan con excepciones insolubles que dependen de la plataforma, cosas que hacen que se dedique más tiempo a la creación de la plataforma de middleware, consumiendo el beneficio de costo inicial.
¿Cómo puede beneficiarse de una solución de middleware, incluso cuando es nativo?
Considere mover una parte de la lógica de su aplicación a su back-end, reduciendo efectivamente la funcionalidad que tiene cada aplicación individual.
Un ejemplo simple es el formato de fecha y hora, digamos para un artículo de noticias. No envíe marcas de tiempo del servidor a la aplicación, sino que envíe cadenas de fecha y hora bien formateadas. Esto reducirá la molestia de formatear la cadena en la aplicación, una vez para cada plataforma involucrada.
Otro ejemplo sería usar una vista web cuando sea posible. Tomemos por ejemplo la aplicación Quora. Podrían haber usado una vista web simple, en lugar de una vista nativa, para la “vista detallada de respuestas”. Esto les habría ahorrado tiempo creando una vista detallada de respuestas flexibles para cada plataforma separada. Para Quora, esto seguramente no hubiera funcionado, sus puntos de vista son simplemente demasiado complejos. Para una aplicación más simple, vale la pena explorar optimizaciones como estas.
Seguridad
La seguridad también era parte de la pregunta, así que profundicemos rápidamente en eso. En general, las aplicaciones nativas y / o híbridas no son más seguras entre sí.
Considere esto: una aplicación web es como un automóvil. La plataforma que usa es el motor del automóvil. Pero, está el conductor, la carretera por la que conduce (¿Internet?), Las señales de tráfico, el chasis, tal vez un pasajero.
En términos de seguridad, todos estos sistemas tienen inconvenientes e implicaciones importantes para la seguridad de su producto. El camino puede tener agujeros, su pasajero se vuelve loco, el conductor se desmaya y OOPS ahora le falta una rueda.
Un error común que veo que hacen los desarrolladores de aplicaciones es que piensan que su código se mantiene oculto para los extraños. Las cadenas, o claves secretas de API, son visibles cuando realiza ingeniería inversa de un binario de la aplicación, y a menudo son visibles en la red cuando no se utiliza SSL.
Por supuesto, el código nativo se compila y no se puede realizar una ingeniería inversa completa después de eso. Cadenas, nombres de métodos, a veces variables, pueden ser . Las aplicaciones híbridas usan HTML / JS / CSS que no está compilado, por lo que de hecho podría leer el código fuente original. Por lo general, este código se ofusca, eliminando nombres originales de variables y funciones y demás. Todo esto no introduce ninguna seguridad en su sistema: la seguridad por oscuridad no es segura.
La buena seguridad se basa en una comprensión intrincada de los sistemas utilizados, y en la confianza en aquellos que construyen sistemas para usted. No es necesario entender cómo funciona SSL, si confía en que está bien construido. Use la práctica común, como el uso de HTTPS, la salazón con HMAC y el cifrado de clave compartida.
Entonces, ya sea eligiendo una plataforma o asegurándose de que su producto sea seguro, asegúrese de estar informado y elija basándose en la perspectiva, no en una sola métrica.
Supongo que su próxima pregunta es: ¿dónde encuentro un buen desarrollador?
¡Buena suerte!
Reinder, LearnAppMaking.com