Sin duda el desarrollo de aplicaciones móviles ha ido en incremento en los últimos años y las estadísticas indican que seguirá la tendencia.

Desde del hito del 2007 con la presentación del iPhone por parte de Apple y Android por parte de Google, la industria del móvil cambió para siempre, pasó de ser un dispositivo casual a uno cotidiano en el que podemos gestionar todas nuestras comunicaciones, organizar nuestras tareas  y para entretenimiento, ya que al incorporar hardware y software más potentes; la industria del videojuego ha visto un nicho de mercado muy importante para jugadores casuales y no tan casuales. Al igual que el mundo del desarrollo en general, muchas empresas se han visto obligadas a reinventarse y otras han visto la oportunidad de oro. Ejemplos de ello Nintendo y Niantic, el recordado Flappy Birds, el adictivo Candy Crush y en cuanto a aplicaciones, quién no conoce Whatsapp.

Pero con tanta variedad de modelos móviles incluyendo las tabletas, el desarrollo se ha salido un poco de control, a pesar de que en el caso de Apple, ha tratado de mantener una línea estándar con sus modelos y con su sistema operativo (iOS). En cambio Android ha sido mucho más segmentado, su fortaleza es su gran debilidad, ya que cada casa de hardware maneja una versión modificada de Android como es el caso de Samsung y HTC. Y Google se ha dado cuenta de ello, e por eso que hace unos años compró Motorola y aunque no logró estandarizar el mercado de Android por completo, este año ha lanzado la gama Pixel, ya veremos cómo les va.

Al momento de realizar un proyecto para una app móvil, se discute para quiénes va dirigida y cuál sería la plataforma más idónea, un ejemplo, si desea lanzar para América del norte, sin duda la opción sería iOS, en cambio si desea el mercado latino, sin duda debería ser lanzado para  Android. Claro está que si se tienen los recursos y el tiempo, se podría hacer para ambas plataformas, pero  he allí el principal inconveniente que se nos presenta a los desarrolladores,  ya que implica elevar significativamente los costos y por lo regular se desarrolla para una plataforma a la vez, y adicionalmente en el caso de iOS se debe contar con una Mac.

Por ese motivo, estos últimos años aproximadamente desde el 2012, han comenzado a surgir una multitud de alternativas y herramientas para agilizar el desarrollo móvil, las cuales tienen sus ventajas y desventajas.

Aplicación con marco web

Ya prácticamente extinta, consiste es un simple marco o view que renderiza el navegador, decimos que extinta, porque con las directrices y exigencia del mercado actual de los buscadores, los sitios a estas alturas deben ser responsives o adaptables a móviles. Actualmente también ha mermado el mercado de los lunchers (a sitios web), ya que los Stores han ido prohibiendo su uso, pues no se consideran una aplicación, sólo una redirección a algún sitio.

Ventajas

  • Su bajo costo
  • Tiempo
  • Visualización en todas las plataformas
  • Curva de aprendizaje

Desventajas

  • Apariencia
  • Rendimiento
  • Funcionalidad
  • No soporta offline
  • Ninguna experiencia de usuario
  • No se permite publicación en los Stores

Aplicación híbrida

Este tipo de aplicaciones es la que ha tenido la mayor tasa de crecimiento en los últimos años, ya que fusiona lo mejor de ambos mundos entre web y nativa.  Se construye usando HTML, CSS y JavaScript pero a diferencia de la app web, ésta compila y usa los controles nativos de cada plataforma, usando por ejemplo Phonegap o Cordova, que a la vez otros framework se sirven de ellos,  como es el caso de Ionic o React Native. De igual forma para el mundo de los videojuegos, en el caso de Unreal Engine, Godot o Unity, estos usan Apache Cordova para su compilación a móviles.

Ventajas

  • Su costo
  • Tiempo de desarrollo
  • Se puede desplegar en todas las plataformas
  • Curva de aprendizaje
  • Reusabilidad del código fuente

Desventajas

  • Aspecto visual
  • Rendimiento (Tiene buen rendimiento pero nunca comparada con una app nativa)

Aplicación nativa

Como su nombre lo indica, son las aplicaciones desarrolladas específicamente para cada sistema operativo y por ende, están complemente optimizadas para dicho entorno, proveyendo la máxima experiencia de usuario.

En el caso de Android, se usa Java y para iOS Objective-C o Swift, cada uno provee de un entorno de trabajo bastante eficiente, como lo son Android Studio y Xcode respectivamente.

Ventajas

  • Compatibilidad y optimización garantizadas
  • Rendimiento
  • Aspecto visual nativo
  • Uso completo de los recursos y funcionalidades del dispositivo

Desventajas

  • Su costo
  • Tiempo de desarrollo
  • Curva de aprendizaje
  • Reusabilidad del código fuente

Aplicación nativas multi plataforma

En este apartado, nos referimos a aquellas aplicaciones que son completamente nativas pero pudiendo desplegarse en distintas plataformas, por ejemplo Xamarin o Genexus, la ventaja específica es que podemos reusar recursos, como el lenguaje de programación y las UI. Todo usando un IDE único.

El código generado por ejemplo en Xamarin con C# se transcompilará a Objective-C o Java dependiendo de la plataforma.

Ventajas

  • Su costo (Menor que las nativas pero mayor la híbridas)
  • Se puede desplegar en diferente plataformas
  • Compatibilidad y optimización
  • Rendimiento
  • Aspecto visual nativo
  • Uso completo de los recursos y funcionalidades del dispositivo
  • Reusabilidad del código fuente (De 30 a 70%)
  • Tiempo de desarrollo
  • Curva de aprendizaje (Menor que las nativas pero mayor las híbridas)

Desventajas

  • El tamaño del empaquetado suele ser un poco mayor frente al nativo
  • Hay que esperar para obtener las últimas versiones de cada plataforma

En conclusión, desde nuestro punto de vista, es necesario conocer las estructuras de cada una de las plataformas, es la única forma de apreciar las diferencias entre cada una y qué estrategias se pueden tomar al momento de enfrentar un proyecto.

Claro está, que el mercado actual exige productividad y eficiencia, es por ello que, cada proyecto tiene una identidad propia y se deberán tomar medias que apliquen para una mejor respuesta, por ejemplo llega cliente con la conducta habitual de grandes expectativas y poco presupuesto, evidentemente que su proyecto aplica para aplicaciones híbridas, no hay duda que esa es la elección.

Pero ya, si requiere una aplicación con mucha más optimización y con un presupuesto y tiempo conveniente se puede optar por la nativa multi platafroma.

Quizás hayan unos casos muy específicos en que el cliente requiera una plataforma en particular y además el código fuente o simplemente hacer ajustes a una app ya iniciada, en este caso no tenemos otra opción sino de usar el ecosistema nativo.

Finalmente, si nos tocara elegir sin duda elegiríamos optimización y productividad, y la que mejor aplica es la nativa multi plataforma.