En qué casos os decantaríais por el desarrollo de una app híbrida frente a una nativa? A día de hoy no le veo ninguna ventaja a las apps híbridas, sobre todo por los problemas de rendimiento.
La única excepción que veo yo sería para hacer una demo y me estoy arriesgando... Por que luego tiraría ese código para picar nativo.
Si quieres algo completo, NATIVA siempre.
Si no te importa usar todas las características de los dispositivos y lo que quieres es llegar a un público más amplio, de manera más rápida y menos presupuesto, WebApp.
Lo híbrido nunca me gustó.
#2 yo estoy sufriendo el desarrollo híbrido en primera persona y tengo constantemente la sensación de que estoy peleándome con versiones de plugins de córdova y paquetes npm para un rendimiento de mierda
Ni con el xamarin del vecino. Nativa o puestos a hacer una mierda, una web muy muy responsive.
El único contexto sería la típica app clonada de una tienda online que te viene ya con la app o plantilla.
El resto, insisto, ni con el teclado del usuario #20 hago yo una web en entornos híbridos.
#6 yo xamarin no lo he probado pero desaconsejo ionic (incluso versiones en ts) y por si alguien lo sigue utilizando en 2k18, phonegap. En definitiva, toooodo lo web que genere un apk
#6 No hay huevos a instalar xamarin de cero sin tardar 2h en pegarte con mil dependencias, complementos, etc. No hay huevos xD
Claro, que puestos a eso, ni Android Studio con Gradle.
Ni caso a los que te dicen lo de que siempre nativo xD.
Técnicamente hablando, a día de hoy una app híbrida un poco cuidada te puede valer para la inmensa mayoría de casos. Tires por la tecnología que tires (Xamarin, Ionic 3, React Native...) vas a tener un buen rendimiento, y si aún por encima tiras por tecnologías web (RN/Ionic) tendrás un código que te valdrá para hacer la versión web también. Y creo que no hace falta aclarar que es una ventaja gigantesca tener la misma codebase para 3 plataformas (Android, iOS y Web). Más interesante será todavía cuando Ionic 4 esté estable (pista: no lo está aún xD) y se pueda aprovechar la considerable ganancia de performance que tiene con respecto a su versión anterior, que tampoco estaba mal.
Usar tecnologías nativas, no obstante, sigue teniendo su nicho, pero considero que cada vez está más limitado a cosas como:
- Juegos pedichones de recursos.
- Aplicaciones que manejen una cantidad ingente de datos y necesiten ser lo más "smooth" posibles.
- Aplicaciones en las cuales debas ser lo más respetuoso posible con la batería.
- Si tienes que targetear a móviles muy viejos y el tamaño de la app ha de permanecer pequeño. Ambas condiciones van unidas porque los móviles viejos pueden usar apps híbridas punteras a través de añadir unos paquetes que mejoran sus viejos navegadores, lo malo es que éstos ocupan bastante. Pero para la gran mayoría de los OS no hace falta ya.
- Si tienes que manejar algún tipo de dispositivo externo para el cual no tengas un driver accesible mediante plugins de Cordova (antes por ejemplo gran parte de los sensores y otros mecanismos del teléfono no se podían usar; a día de hoy todos o prácticamente todos. Pero para un dispositivo de conexión externo así raruno, generalmente tendrás que sacarte tú mismo las castañas del fuego y hacerte tus propios plugins de Cordova para usarlos).
Algunos me da que os habéis quedado en versiones viejunas de tecnologías híbridas viendo vuestras quejas, porque ya mismamente el año pasado con las versiones iniciales de Ionic 3 hice una app que aún tenía bastante mierda, era grandota y no estaba precisamente bien hecha, e iba bastante bien aún sin activar AOT y sin hacer lazy-load de los módulos. Lo único de lo que uno se podía quejar era que tardaba un poco en cargar (poco más de 2 segundos en un Samsung de baja gama, tampoco tanto). Luego el cambio entre vistas era rápido y responsivo.
Voy abriendo paraguas ante los JS-haters xDDD.
edit: por cierto, si quieres rascar un poco más de rendimiento, espérate unos meses a que Ionic 4 esté bien estable (porque ahora está fatal xD) y úsalo, porque la ganancia de rendimiento es bastante considerable. He estado haciendo una cosa y aparte de que el tooling mola más que nunca, los tiempos de carga y responsiveness de la interfaz no se distinguen de una nativa, da puto gusto. Lo malo es eso, que todavía tiene un huevo de errores y, francamente, no es viable construir nada con esta versión todavía.
#7 ¿Por qué?
#11 porque para una app con unas 6 vistas, varios componentes internos, llamadas a api y los 4 plugins de turno (maps, storage...) la aplicación no se siente rápida ademas de problemas de versiones con plugins y versiones de npm con las distintas versiones de Android. En definitiva, que para una "pequeña" app que he hecho mas alla del "hola mundo" empieza a flojear y a ser mas inestable segun va avanzando el desarrollo, no quiero imaginar en una app mas tocha.
#12 Yo en esa app que comentaba, por ejemplo, tenía una vista que cargaba un mapa por CDN (osea, ya de por sí poco optimizado), hacía secuencialmente llamadas a 3 APIs externas, y populaba un list-view. Lo hacía todo bastante rápido, y como ya dije, sin AOT ni lazy-load de los módulos... y todo estando bastante mal hecho xD (era bastante peor en JS que a día de hoy). No sé qué habrás hecho para que te vaya tan mal algo así, la verdad.
#13 si no va ""tan"" mal. Tiene cierto delay pero nada importante. A lo que voy es que según vaya creciendo eso ira empeorando seguro. Si me encuentro con unos pequeños problemas en este punto, no quiero ni imaginar según escale.
#14 Para evitar que empeore la cosa, lo suyo es usar lo que te comentaba del AOT y module lazy-load, en caso de que tengas muchísimas vistas y movidas, para que sólo te cargue las cosas necesarias para una determinada ruta.
En Ionic 4 sí que se nota bastante mejor el rendimiento general incluso, pues usa todo webcomponents nativos y da todo el gustazo. A ver para cuando lo tienen del todo listo.
En este video se compara más o menos todos los tipos, aunque en el título solo ponga NativeScript vs Flutter:
Has probado la 4.0.0-beta.3 de ionic? Hace no mucho me llego un email de que ya estaban bastante avanzados para la RC..
Has probado NativeScript? Es otra de las que tengo pendientes
#16 Ah leches pues no probé a actualizar a esa versión... habrá que probar, porque al menos la que tengo yo, es un ascazo desarrollar porque no para de dar errores por todos lados xD.
NativeScript nunca lo probé, pero si es verdad lo que prometen, se supone que debería ser una opción muy top.
Yo te diria tira por PWA, es la verdadera salud.
En Android funcionan casi como una nativa.. en IOs solo son unos desalmados pero funciona casi todo . Y por supuesto se puede ver en cualquier browser.
Yo estoy haciendo ahora una y la verdad que encantado, te ahorras de aprender mierda codigo limitado a un solo market
#18 Hice una pequeña pwa, muy simple, en angular para testear y me gusta el rollo. El problema que veo es de cara a "venderlo" como una app.
#20 Como si tú demostrases saber algo diciendo las cosas que dices. ¿Tanto esfuerzo mental te es pensar y argumentar un poco, antes de soltar bilis cada vez que aparece JS en una conversación?
#22 Profesionalmente capaz, stack java aparte de js/ts, y algo básico de PL/SQL, PHP, Python, C# y C.
Que te crees que no debí salir de JS en mi vida, cuando realmente pasé más tiempo en Java xDD.
Y te puedo programar en gallego, ¿cuenta eso como lenguaje?
Pues veo bien las híbridas en casos que sean las típicas aplicaciones de información que no tienen mucho más. Es decir, aplicaciones de pequeños comercios que quieren tener una app con sus horarios y cosas básicas. Vamos, las app que tienen 4 peticiones contadas y poco más.
Luego, si es ya para cosa más gordas pues nativas. Aunque creo recordar que, por ejemplo, la app de Soundcloud era híbrida, no sé si ya no sigue siendo así.
#20 Eres tan tonto que hablas de nativo cuando Xamarin, si bien compila con las libs nativas de Android/iOS, al final tienes una capa superior de mierda por encima que no se corresponde con el 100% de los objetos nativos. Mira si eres tonto.
O trabajas con esa capa de objetos que no son exactamente iguales para luego poder compilar en ambos entornos, o trabajas directamente con una API de cada entorno y para eso sudo de xamarin y abro mi entorno nativo evitando hacer un pan con unas tortas.
Insisto, mira si eres tonto que te piensas que Xamarin es nativo. El que compile con las libs nativas no quiere decir que sea nativo. Quiere decir que es híbrido sí o sí en su desarrollo aunque al compilar te genere un binario nativo. Pero vamos, que lo mismo no lo entiendes porque eres tonto.