Tipos de Apps: nativas, híbridas y Web Apps

Si tienes en mente realizar un proyecto App, llegará un momento en el que deberás tomar la decisión de cómo va a estar construida técnicamente. Primeramente deberás definir bien tu proyecto, porque es en función de lo que necesites hacer lo que va a dictaminar cómo hacerlo. Este artículo intentará darte una visión inical que te resultará de utilidad cuando te encuentres en la fase de toma de decisiones técnicas.

De manera general digamos que existe un acuerdo para separar las Apps en 3 grupos:

1. Aplicaciones nativas

2. Aplicaciones híbridas

3. Aplicaciones web

De todas maneras, desde Appio queremos indicar que las líneas que separan estos grupos no están tan delimitadas como podrías imaginar.

Aplicaciones nativas

Una app nativa, en principio (y solo en principio), es una aplicación que se desarrolla directamente en el lenguaje nativo de cada terminal. Por eso, si vamos desarrollar una App nativa tendremos que utilizar un lenguaje diferente para cada Sistema Operativo. Los lenguajes de programación serán por tanto los siguientes:

iOS: Objective C

Android: Java

Windows: C# y Visual Basic .NET.

BlackBerry 10: C++

Obviamente todo depende del nivel y experiencia del equipo de desarrollo y de que el código resultante de su trabajo sea el correcto, pero en principio, una App nativa es la opción cuyo resultado es el más robusto y fluido ya que se desarrolla directamente para integrarse en el Sistema Operativo. Si tu App surge de una buena idea y un diseño bien trabajado a todos los niveles, la experiencia de usuario será completa ya que su funcionamiento, rendimiento y respuesta será el más inmediato de todas las opciones de desarrollo incluso en los diseños más complejos y personalizados.

Desarrollar Apps nativas te permitirán:

· Tener acceso a todo el hardware del móvil como puede ser el GPS, la cámara y demás accesorios.

· Acceso a todas las librerías gráficas del SO (botones, etc).

· Envío de notificaciones push, una de las herramientas de comunicación más potentes de las Apps.

· Modular todas las ventajas que ofrece estar las diferentes stores de aplicaciones como puede ser integrar contenidos de pago para modelos de negocio Freemium mediante In-App Purchasing.

· Sincronizar o cachear datos para funcionar sin conexión a internet.

Las desventajas son fundamentalmente del tipo económico ya que, como decíamos antes, para hacer apps nativas debemos conocer los diferentes lenguajes de programación de cada Sistema Operativo. No será posible reutilizar el código de un SO en otro y no solo eso, debes tener en cuenta que las Apps necesitan actualizaciones a nuevas versiones del SO, mantenimiento y/o aumento y mejoras de las funcionalidades… y todas estas cosas deberás hacerlas directamente en el código nativo de cada plataforma.

Por lo tanto, realizar tu proyecto en nativo te obligará a contar con una plantilla de técnicos con alta preparación y experiencia en lenguajes mucho menos utilizados entre los desarrolladores (comparado por ejemplo con lenguajes web). Los programadores expertos en estos lenguajes están muy solicitados y a mayor nivel y experiencia, mayores serán sus expectativas económicas. Factores sin duda determinantes en el precio final de todo desarrollo.

 La línea que se difumina: Titanium Appcelerator

AppceleratorPero, ¿una App nativa es exclusivamente la que se desarrolla en su código nativo? ¿O también podríamos considerar como nativa aquella App cuyo código resultante sea nativo a pesar de haber utilizado otro lenguaje para su desarrollo? Titanium Appcelerator es un framework de desarrollo multiplataforma en lenguaje Javascript (un lenguaje web standard) que te permitirá crear aplicaciones cuyo código compilado final será nativo. Esto implica que con Titanium podrás hacer todo lo que haría una App desarrollada directamente en nativo y además con los mismos tiempos de respuesta en su uso.

Al ser multiplataforma, utilizarás un sólo lenguaje de programación (Javascript) para generar una App para casi todos los SO y dispositivos del mercado (iOS, Android, BlackBerry 10 y Web App). Tan sólo necesitarás realizar pequeñas modificaciones sobre el código para adaptar la App a cada SO y dispositivo. La traducción a todo esto es que reducirás muchísimo los costes sin perder ninguna de las ventajas de las aplicaciones desarrolladas directamente en código nativo.

Por nuestra parte, la única desventaja que le vemos es que a nivel de diseño no tendrás la libertad total que ofrece desarrollar directamente en nativo. Sus limitaciones a este respecto son muy pequeñas, pero lo cierto es que siendo totalmente sinceros, haberlas, las hay, por lo que deberás tener algo de flexibilidad en este punto.

De momento preferimos quedarnos en esta breve explicación ya que en próximos artículos de este blog nos extenderemos más sobre este Framework. Baste decir que nosotros (y no somos los únicos) consideramos como nativas a las aplicaciones desarrolladas con Appcelerator.

Aplicaciones híbridas

Generalmente consisten en Apps que contiene en su interior el navegador web del dispositivo. Para su desarrollo se utilizan frameworks de desarrollo basados en lenguajes de programación web (HTML, CSS y JS). Actualmente Phonegap es el más conocido (aunque no el único) y el que concentra mayor número de desarrolladores a su alrededor.

En este tipo de Apps el nivel de integración con el SO dependerá del framework de desarrollo utilizado y como de abierto sea el SO (BlackBerry 10 es todo un ejemplo), teniendo cada uno de ellos sus ventajas e inconvenientes. Actualmente con esta opción tendrás bastante acceso al hardware del teléfono e incluso en algunos casos a las librerías del SO, pero lo cierto es que aunque de momento no se ha conseguido igualar la respuesta y la experiencia de usuario de una App nativa, hay que reconocer que va camino de hacerlo.

De todas maneras, la cosa ha ido evolucionando a desarrollos más complejos en los que ciertas funcionalidades se ejecutan como una web y otras en nativo, como por ejemplo Instagram que utiliza nativo para hacer y publicar la fotografía, pero web para desplegar las fotografías y perfil.

Su uso es una opción muy económica y muy interesante para llegar al mayor número de usuarios repartidos en las diferentes plataformas y dispositivos aunque por el momento sus limitaciones son claras.

Aplicaciones Web

¿Una web que al visitarla desde el navegador de tu dispositivo móvil se adapta al tamaño de su pantalla podría considerarse una App?

Pues una Aplicación Web o Web App es precisamente eso, una web a la que se accede a través de una URL en el navegador del dispositivo (Safari, Chrome o el que sea) y se adapta al formato de tu pantalla para que tenga aspecto de navegación App. Los navegadores de los móviles permiten crear un acceso directo en nuestro escritorio de esta web, así que esa será la manera de “instalarla” (si se le puede llamar así) en nuestro dispositivo.

En función de como sea nuestro proyecto tecnológico quizá solo nos interese adaptar nuestra web a formato móvil con lo que hacer una Web App se convierte en una solución estupenda. O quizá consideremos necesario que además de tener nuestra App en las diferentes tiendas, tener una versión web a la que se acceda desde un navegador, en ese caso es importante que tengas en cuenta que muchos de los diferentes frameworks de desarrollo híbridos que existen (y también Titanium Appcelerator) te permitirán un desarrollo multiplataforma completo que incluirá también la web.

A nivel de lenguajes de programación pues efectivamente es lo que estás suponiendo: al ser una web deberás usar lenguajes de programación web (HTML, CSS y Javascript).

Sus inconvenientes principales son:

Están altamente limitadas en el acceso al hardware del dispositivo.

Tiempos de respuesta y experiencia de usuario propios de una navegación web.

No se encuentran en las Stores, siendo este el lugar donde la gente está acostumbrada a buscar apps.

Bueno, y ahora, ¿cómo hago mi App?

Pues depende de los siguientes factores:

1. Coste que puedas asumir: las finanzas de toda empresa mandan sobre todo los demás puntos que aparecen aquí debajo. Lo mejor es ser lo más realista posible en este punto y adaptarte a tus capacidades.

2. Las características y funcionalidades de tu proyecto tecnológico: Valora si vas a sacar rendimiento a los componentes del dispositivo como el GPS, la cámara, etc… o si solo vas a hacer llamadas a bases de datos. Si vas a exprimir el dispositivo lo mejor es hacerlo nativo o, si quieres reducir costes sin perder calidad, hazlo con Titanium Appcelerator.

3. Tu modelo de negocio y el Target al que te diriges: hay ciertos modelos de negocio donde los usuarios están acostumbrados a experiencias propias de una Web App y otros a Apps propiamente dichas. Un pequeño estudio de mercado te ayudará a centrarte hacia donde ir.

4. La complejidad del diseño y la importancia que le des a la experiencia de usuario: si eres un perfeccionista, exiges un diseño totalmente personalizado, unos tiempos de respuesta espectaculares, pretendes demostrar que tu y tus proyectos son referencia de excelencia y tu economía lo permite, entonces la opción nativa es la que estás buscando. Con un poquito de Flexibilidad Appcelerator también es una gran opción.

5. Tu intención de hacerlo crecer: obviamente no es lo mismo una app sencilla que utilizas para realizar una acción concreta (calculadora, brújula, etc) que otra que va a tener un montón de opciones y contenido y sobre la que construirás todo un modelo de negocio. A mayor complejidad, la decisión que tomes de como hacerlo puede suponer su éxito o fracaso.

6. La estructura de tu empresa: para desarrollar tu proyecto puedes tener a desarrolladores en plantilla o a externalizar este proceso. Cuestiones como los derechos de autor sobre el código fuente generado o el tipo de perfil tecnológico que puedes contratar o subcontratar pueden ser fundamentales a la hora de tomar esta decisión de como hacer tu App.

7. Otros: hemos puesto 6, factores pero seguro que hay muchos más. De todas maneras, cuanto más acotes tu proyecto más claro será tomar una decisión técnica. Pero sin duda, lo más importante de todo es tomar la decisión en firme de hacerla. El empuje, el trabajo y la ilusión que generes alrededor de tu proyecto suelen ser los factores fundamentales para el éxito de tu proyecto App… o de vida.