Software

Aplicaciones web, híbridas y nativas. ¿Qué son y en qué se diferencian?

El mercado móvil está muy extendido, y a cada plataforma la acompañan multitud de aplicaciones que enriquecen el ecosistema. Contribuyen, además, a fortalecer el sistema operativo, proporcionando alternativas para conseguir prácticamente de todo; sin embargo, no todo lo que descargamos de las distintas Stores se programó de la misma manera, ni utilizando los mismos lenguajes. Hoy en Just Unboxing te explicamos qué son las aplicaciones web e híbridas, y en qué se diferencian de las nativas.

Distintos tipos de aplicaciones

Las aplicaciones móviles, como todo proyecto del mundo de la informática, tienen que ser escritas en un determinado lenguaje de programación. Los utilizados por los grandes, Android, iOS y Windows, son Java -aunque como ya os contamos, podría cambiar en un futuro-, Swift y C#, respectivamente. De esta forma, es necesario tener conocimientos al respecto para poder elaborar y publicar aplicaciones de esta clase en los respectivos Stores. Estas se conocen como nativas.

LenguajesNativos

No obstante, en el mercado actual existen más tipos, que posiblemente hayáis usado sin saber que no pertenecían al grupo comentado: las web y las híbridas, en las que los lenguajes de la web tienen mucho protagonismo.

Una vez introducido el tema, vamos a centrarnos en cada uno de estos conjuntos.

Aplicaciones nativas

Estas aplicaciones están pensadas para ejecutarse únicamente sobre Android, iOS o Windows Mobile, por lo que aprovechan al máximo el hardware del dispositivo; de esta forma se consigue, por norma general, un rendimiento sobresaliente.

Una vez listas para ser usadas, se publican en la tienda de aplicaciones pertinente, siendo descargada a continuación de la forma que todos conocemos. En la mayoría de ocasiones se sigue esta metodología, sobre todo en lo referente a juegos; exigen más recursos al terminal, por lo que tiene sentido que se le intente sacar el máximo provecho a posible a los componentes.

Aplicaciones web

A día de hoy, se requiere una conexión a Internet para llevar a cabo muchas acciones dentro de lo que permite una aplicación, desde descargarla del Play Store hasta enviar y recibir datos para refrescar cierto contenido. Además, estas ocupan espacio en la memoria del smartphone, lo que puede suponer un serio inconveniente para aquellos que tengan poca capacidad. Estos argumentos son los más comentados a la hora de justificar la existencia y la utilidad de las aplicaciones web, o web apps.

Este tipo de software no se instala en el dispositivo, sino que el propio navegador procesa la información recibida de un servidor web; es decir, tal y como se hace con una página convencional. De esta forma, en lugar de consumir datos, este hecho se lleva al extremo de tenerlo todo en Internet. La idea es acceder a una web que parezca una aplicación, con la que el usuario pueda interactuar y consumir contenido por medio de una URL.

Modelo web

Un gran punto a favor de este modelo es la la reducción -o eliminación- de la fragmentación en lo que respecta a aplicaciones; este sistema responde a un modelo centralizado, donde estas se publican en un lugar común a todos los dispositivos (la web). De este modo, no es necesario descargar periódicamente nuevas actualizaciones de la Store, sino que al acceder a la URL se dispone siempre del último contenido. Además, todos los desarrollos son multiplataforma, al poder ser consumidos desde cualquier sistema operativo móvil.

La mayor contrapartida la encontramos en el rendimiento, ya que la aplicación se ejecuta en el contexto del navegador. Por lo tanto, si no se programa teniendo este aspecto muy en cuenta, la experiencia puede ser poco satisfactoria al encontrar bastante lag en un uso normal.

En la mayoría de ocasiones, los lenguajes utilizados son HTML5, CSS3 y JavaScript (o jQuery), aunque se pueden usar otros como PHP o Python.

Lenguajes web

A pesar de las ventajas, las aplicaciones web siguen presentando limitaciones que pueden ser consideradas decisivas con respecto las nativas. Estas últimas aprovechan al máximo el hardware, siendo posible acceder a todas las funcionalidades del mismo como los sensores o las cámaras. Por lo tanto, surge una alternativa intermedia que pretende aunar ambos modelos y contentar a la mayoría de usuarios: las aplicaciones híbridas.

Aplicaciones híbridas

Esta clase de apps también se escribe con lenguajes de la web, con la particularidad de que se pueden combinar con código propio de cada plataforma. Al igual que las nativas, se publican en los respectivos Stores; y al igual que las web, se ejecutan sobre el navegador, con la salvedad de que este se encuentra incrustado en la propia aplicación (en lugar de abrir una página con el Chrome, por ejemplo). Y esta vez sí, pueden tener acceso a prácticamente todo el hardware del dispositivo, como el GPS o el acelerómetro.

Para desarrollarlas suelen utilizarse plataformas como Apache Cordova o Phonegap, que empaquetan todo el código para instalar la aplicación en nuestros smartphones, además de generar el apk correspondiente.

Apache Cordova

Tanto unas como otras suelen escribirse utilizando un IDE (Integrated Development Envirnment), un programa de escritorio que facilita la tarea con respecto a editores simples como el Notepad++ o el famoso bloc de notas. En la web existen múltiples alternativas gratuitas y de pago: Xcode para iOS; Eclipse, IntellijIDEA o Android Studio para Android; o Visual Studio para Windows.

IDEs

En el siguiente gráfico os muestro un resumen de las características de cada modelo.

Gráfico comparativa

Ventajas y desventajas

Como en todo, cada tipo de aplicación tiene sus defensores y sus detractores. En función de las necesidades de los programadores y de los usuarios, estos preferirán aquello que les proporcione más ventajas y menos inconvenientes, aunque existen algunas características objetivas que pueden marcar la diferencia.

En primer lugar, se debería barajar cuán importante es el rendimiento. Desarrollos que muevan texto y pocos gráficos, como la página de algún periódico, pueden ser perfectamente satisfechos con lo que ofrecen las web apps. No obstante, si la aplicación es un poco más compleja y requiere de más recursos, creo que merece la pena dar el salto e intentar conseguir una buena aplicación nativa. Además, en caso de necesitarse acceso total al hardware del terminal, sigue siendo recomendable adaptarse a este modelo; el híbrido cuenta ya con multitud de APIs que cumplen bastante bien su función, pero están en desventaja en lo que respecta a un funcionamiento impecable.

Otro punto destacable, esta vez mucho más “superficial” -así somos-, es la estética. La programación web requiere crear prácticamente de cero todos los componentes que veremos en pantalla, mientras que con código nativo existen muchos elementos predefinidos que -por supuesto, con un poco de buen gusto- facilitan un resultado más bonito; y no sólo eso, ya que también se consiguen estructuras más coherentes con menos esfuerzo.

La capacidad de ejecutarse en cualquier sistema operativo es la mayor baza a favor de las aplicaciones web e híbridas. No son necesarios conocimientos de lenguajes propios, y en poco tiempo se podrían tener funcionando en prácticamente cualquier terminal del mercado.

Para resumir un poco toda esta maraña de afirmaciones y aclarar lo que os he ido comentando, os dejo una tabla comparativa entre las tres plataformas.

Tabla comparativa

Entonces, ¿para quién es cada tipo?

Aunque no soy un experto en ningún tipo, sí que me ha tocado pelearme con los tres. Personalmente, recomendaría siempre aplicaciones nativas, salvo que se puedan aprovechar conocimientos previos en HTML, CSS y JavaScript. Las aplicaciones web e híbridas están en un punto intermedio que pretende contentar a todo el mundo, pero que bajo mi punto de vista, no consigue satisfacer a casi nadie.

Si eres un desarrollador web y quieres explorar el ámbito de las aplicaciones móviles, seguramente consigas proyectos muy chulos, en poco tiempo y multiplataforma. Una buena idea sería comenzar con algo de este estilo, para más adelante variar a código nativo si la propuesta inicial funciona bien. No obstante, deberíais tener siempre en cuenta las limitaciones que implica.

Como habéis podido ver, existe bastante variedad detrás del “ejecutar y disfrutar”. De esta forma, distintos perfiles de programador pueden lanzarse a desarrollar para móviles, lo que creo que favorece mucho los distintos ecosistemas que nos encontramos a día de hoy.

¿Vosotros qué pensáis? ¿Os parecen interesantes las alternativas web?

Marco

Marco

Ingeniero de Telecomunicaciones, estudiante y usuario de Android desde el HTC Magic. Muy crítico con todo lo que pruebo, ¡hay quien me llama hater!
Marco
¡Comparte!
Advertisment ad adsense adlogger