fcbk
Conéctate con TwitterConéctate con Facebook
30

Aplicación híbrida o nativa: ¿Cuál es mejor?

13315Puntos

hace 4 meses

Antes de empezar me gustaría que vieras la siguiente imagen y deduzcas cuál aplicación es híbrida y cuál es nativa: al final te dare la respuesta:

Artboard.png

Hacer una aplicación nativa o híbrida siempre a sido un tema de controversia desde que HTML5 se volvió lo suficientemente maduro para casi igualar la funcionalidad de una aplicación nativa. ¿Por qué? Bueno, porque el desarrollo móvil nativo es difícil.

Platzi tiene cursos para desarrollo nativo en iOS y en Android con Java o con Kotlin. También híbrido con React Native, Xamarin o Electron y más.

Antes de saber qué funciona mejor en cada caso, aclaremos algunas cosas.

Híbrido no es desarrollar en un lenguaje diferente

Una de las mayores confusiones que existen al momento para desarrollar en móvil, es pensar que si no usamos Swift o Java ( los lenguajes oficiales de iOS y Android) se trata de un desarrollo híbrido, pero no es así. La mayor diferencia entre un aplicación nativa y una híbrida no es como se programan, si no como se ejecutan para el usuario final.

Si requieren algo adicional para ejecutarse como un navegador o un contenedor, son híbridas. Es el caso de Apache Cordova, Ionic y Unity. Si se se ejecutan directamente en el OS, son nativas, tal como lo hace ReactNative, NativeScript y Xamarin.

Inclusive, el desarrollo híbrido no es exclusivo del ecosistema móvil. Existen aplicaciones de escritorio híbridas que usas con frecuencia como WhatsApp, Visual Studio Code, Brave, Github, Slack. Cómo te darás cuenta son aplicaciones muy buenas y lo suficientemente complejas para pensar lo contrario.

El rechazo de las aplicaciones híbridas

Ya no estamos en 2011, por lo cuál decir que una aplicación híbrida o hecha de manera nativa con otros lenguajes tendrá problemas de rendimiento ya no es del todo cierto.

Esta percepción se tuvo debido a que las primeras iteraciones de Phonegap nos entregaron productos muy malos en las tiendas de aplicaciones, pero las herramientas ya maduraron lo suficiente para igualar casi cualquier aplicación nativa.

Pongamos de ejemplo a Ionic, que a pesar de ser híbrido, sus componentes están pensados para respetar los guidelines de cada sistema operativo. Además que la conexión con hardware es muy amplia.

Captura de pantalla 2017-08-04 15.42.15.png

Por cierto, por usar otro lenguaje no quiere decir que será una aplicación híbrida. El caso de React Native y Xamarin se ejecutan de manera nativa gracias a algo llamado Bridge. Por lo cual el rendimiento no se ve afectado.

User experience vs Development Experience

Hablar de la experiencia que vamos a entregar a los usuarios contra la forma en que vamos a desarrollar el producto es el único factor que debería importar.

Creo que aún se tiene miedo y se piensa que algo que facilita el desarrollo en móviles por defecto es malo. Sin embargo, el desarrollo multiplataforma tiene algo que el nativo no tiene: el poder compartir aprendizajes entre plataformas.

Si eres desarrollador web, este es el mejor momento para hacer tu salto a móviles usando todo lo que aprendiste ya sea con React Native o Ionic. Si te gustan las tecnologías de Microsoft, C# ahora te permite llegar a móviles iOS y Android gracias a Xamarin.

Quizás, hay casos en los que no hay otra opción que usar el desarrollo nativo y los lenguajes oficiales, ya que es la única forma de acceder a cosas a muy bajo nivel y a las últimas APIs del sistema operativo. Pero a nivel de rendimiento o de la percepción de usuarios que estarán usando tu aplicación notarán muy poca diferencia contra algo nativo o creado usando algún otro lenguaje. Si no es tu caso, dale la oportunidad a otras opciones.

Facebook, Instagram, Airbnb, Uber Eats, son sólo algunas de las aplicaciones que usan millones de usuarios día con día y fueron creadas usando JavaScript como lenguaje y React Native como librería.

Los juegos que amas jugar en tu teléfono surgieron gracias a la facilidad que tiene Unity por usar una sola base de código y entregarla en casi cualquier OS y te aseguro que no te molesta que sea híbrido.

Al final, las limitantes de usar una opción u otra dependerá bastante de que tantos usuarios y funcionalidades va ganando tu aplicación.

IMG_2776-85ac17b0-adf9-432a-9cd8-10695bfd181a.png

No tienes por que casarte con algo desde el inicio, cambiar está bien. Por ejemplo, spoiler alert, en Platzi decidimos migrar la aplicación de nativo con Swift y Java a React Native. Esto nos permite tener al talento del team que usa a diario React en web en la aplicación móvil, y esto se traduce a que nuestros Platzinautas tengan las mismas funciones al tiempo sin importar que OS usen. Y tener una sola base de código hace el desarrollo más sencillo.

Lo más importante, es el indio, no la flecha. El elegir nativo no quiere decir que automáticamente será mejor o que usar cualquier otra plataforma no logrará concluir en un producto de calidad, actualmente podemos encontrar buenos y malos ejemplos de aplicaciones tanto híbridas o nativas.

Déjame saber en los comentarios que plataforma estás usando para crear aplicaciones móviles y que dificultades has tenido.

Por cierto, retomando la imagen del inicio, la de la derecha es una aplicación nativa y la de la izquierda es híbrida.

Uriel
Uriel
@ThespianArtist

13315Puntos

hace 4 meses

Todas sus entradas
Top
Nuevas
4
1484Puntos
4 meses

Lo más importante, es el indio, no la flecha jaja. Gracias, muy buen artículo.

1
19Puntos
4 meses

Hola buen post. Yo soy desarrollador de Android de la vieja escuela y he tenido que ver la evolución que ha tenido el lenguaje pel desarrollo de de app o las plataformas homologas que tambien permiten hacerlo, he tenido la posibilidad de ver otras alternativas como titanium estudio (un asco) o ionic lo cual no me gustaron mucho por algunas razones frente a funcionalidades o rendimiento yo había pensado que las app hibridas eran de lo peor debido a que hacían perder el feeling que una nativa podría ofrecer. pero luego experimente con React Native fue algo curioso me pareció interesante lo fácil y rápido que se puede trabajar con ella lo cual me hizo tener una percepción diferente sobre las formas de hacer apps hibridas. Pero de todos modos es recomendable siempre analizar que tipo de forma uno va a elegir al momento de realizar futuros desarrollos.

1
13315Puntos
4 meses

Exacto, plataformas como React Native han funcionado para bien. Y tienes razón, en el inicio eran muy malo pensar en alguna otra plataforma cuando hemos visto y usado muchas apps híbridas como Juegos.

1
4 meses

creo que es bueno aprender nuevas maneras de hacer las cosas, en mi caso soy iOS Developer, pero estoy pensando en expandir mi conocimiento a Xamarin, que en realidad me agrada mucho. En mi caso la mayor limitante es que no tenemos de manera instantánea los nuevos features que introduce apple.

1
11Puntos
4 meses

Pero cualquier feature nuevo lo sacan rápido, sí se tiene que esperar pero es mínimo 😄

1
5992Puntos
4 meses

¿Estás diciendo que Monument Valley es una aplicación híbrida? Increíble ¿Puedes decirme qué tecnología se usó (PhoneGap, Xamarin, React Native, …)?

Gracias, muy buen artículo que romperá muchas cabezas… para bien.

0
5992Puntos
4 meses

Vale, después de pensarlo creo que se me olvidó pensar en Unity ¿Es esa la plataforma de desarrollo de Monument Valley?

Gracias.

0
13315Puntos
4 meses

Exacto, monument valley está hecho en Unity.

1
2078Puntos
4 meses

…, spoiler alert, en Platzi decidimos migrar la aplicación de nativo con Swift y Java a React Native

No creo que la app de Platzi sea un buen ejemplo, ya que en realidad es una app bastante simple y limitada. Considerando que podría ser una app para disfrutar los cursos (video), podrían considerar agregar features que permitan opciones para disfrutar el contenido (Chromecast, SmartView, AirPlay, Picture-In-Picture). ¿Qué tan facil sería hacerlo siendo ésta híbrida?

Imaginemos el siguiente use case:

Como usuario de Platzi mobile en iPad, me gustaría poder minimizar el video con Picture-In-Picture para poder tomar notas del curso al mismo tiempo que continuo viendo el video. Una vez tomada la nota quisiera poder regresar el video a full screen.

Personalmente creo que podrían ofrecer mucho mas, y siendo ésta híbrida no creo que sea el mejor approach.

5
13315Puntos
4 meses

La app que tenemos actualmente cuenta con todo lo que dices:

IMG_0033.PNG

Y de hecho, se mantendrá así en los siguientes updates.

La diferencia es que usaremos React Native , que por cierto, no es híbrido. Pero entregara una experiencia al tiempo en Android.

Como Chromecast, SmartView, AirPlay, Picture-In-Picture tienen soporte sin problemas, y en dado caso que no existieran, se pueden agregar esos modulos nativos con código en Swift y Java

0
47Puntos
4 meses

Otra de las ventajas de las app híbridas es que (no sé si todas), te permiten usar la misma base de código para crear apps multiplataforma (iOS, Android, Desktop, etc)

0
527Puntos
2 meses

Me encantó el artículo. Yo desarrollo pequeños sistemas Web con Laravel para el backend, pero nunca he entendido como puedo consumirla desde una plataforma iOs o Android, de no ser por el navegador. Saludos

0
505Puntos
2 meses

Hola @ThespianArtist, Quisiera saber si puedo migrar mi código de Android Studio a Xamarin. Si es así que tengo que exportar y que no?

0
972Puntos
3 meses

Muy bueno, gracias.

0
499Puntos
4 meses

Excelente articulo 😄
Creo que te quedo mal el final el App de la derecha es Nativa.
Saludos.

0
259Puntos
4 meses

Gracias por el articulo tengo debilidades en mobile y estoy por comenzar aprender y tenia esta duda de nativas vs hibridas.

Muy acertado el cambio a react native enorme ventaja poder usar el talento de web developers para app mobiles

Por cierto y si tenemos que hablar de meteor? tengo entendido que con eso si vas con un codigo para web y mobile. Ionic te ofrece esa ventaja?

Yo con este articulo me convenci en que Xamarin es la opcion ya que deseo aprender C# tambien

1
13315Puntos
4 meses

Ionic usa Angular 2+ para hacer aplicaciones, no es tan directo pasarlo de web a mobile, pero lo que si está haciendo ionic 3 es poder pasar de mobile a desktop con una sola base de código

1
259Puntos
4 meses

Gracias nuevamente por tu respuesta me has ayudado un monton

0
924Puntos
4 meses

O sea que React Native es nativo directamente? juraba que era hibrído ya que es una sola base de código O.o

0
15Puntos
4 meses

Pero hot dog or not hod dog(https://itunes.apple.com/us/app/not-hotdog/id1212457521?mt=8) fue hecho no nativo, teniendo en cuenta las necesidades de velocidad, etc; Todavía existe algún caso en los que se necesite una implementación nativa?.

Si uno directamente salta a aprender React Native van a haber conceptos que nunca va a conocer?, o esto no es problema?.

1
13315Puntos
4 meses

Ya no es obligatorio que sea nativo, de hecho depende mucho de lo que quieras hacer, el rendimiento puede ser igual, mejor o peor en ambos casos.

Uber para iOS y Android es nativo y la aplicación es algo que me imagine no podrían hacer de otro modo, sin embargo Uber Eats que es muy similar esta hecho con React Native.

Inclusive si te limitarán las APIs de React Native, puedes escribir código nativo directamente. Nosotros lo hemos hecho en nuestro modulo de descargar de video.

0
un mes

Que gran artículo! me dedico a el diseño de paginas web y la verdad es que artículos como estos ayudan bastante, sin duda alguna una fuente muy fiable Uri, una seguidora más a tus filas.

0
3 meses

Buen aporte, quiero empezar a desarrollar en móvil, veo que comentas de Reactive y Camarón, ¿Me recomiendan alguno de estos para empezar?

0
1401Puntos
3 meses

Yo tuve la oportunidad de hacer una aplicación en Ionic 3 para Android y iOS, fue bastante sencillo para mi aprender porque soy desarrollador web, y normalmente uso Vue.js para el lado del cliente, solo tuve que aprender un poco de Angular 4, y Typescript, y gracias a la comunidad de desarrolladores y la basta documentación que hay en internet pude aprender todo lo necesario para culminar el proyecto.

0
250Puntos
un mes

Yo creo que la usar una u otra cosa depende de las necesidades que se se tengan y evaluar lo que más se ajusten a ellas.

0
202Puntos
2 meses

Hola!, creo que es mi hora de saltar al desarrollo móvil, pero quisiera saber que me aconsejan? Xamarin o React Native. Ya he desarrollado en C, pero pienso que será algo tedioso… Ustedes que opinan?. Gracias.