Aplicaciones nativas VS HTML5, ¿En qué lenguaje programo mi aplicación?

Con toda la red colapsada de noticias acerca de la reciente presentación del nuevo Iphone 5, en Sozpic vamos a hablar de un tema que, debido a las recientes declaraciones provenientes de Marc Zuckerberg, creador y CEO de Facebook, también se ha convertido en reciente actualidad. ¿Y qué fue lo que dijo el Sr. Zuckerberg? Preguntado en una entrevista en California dijo lo siguiente:

«El mayor error que hicimos como empresa fue apostar demasiado por las aplicaciones en HTML5 en lugar de las nativas…desperdiciamos dos años. (…) Apostaremos completamente a las aplicaciones nativas en iOS y Android.»

Así de tajante se mostró el CEO de Facebook, y razones no le faltan. La nueva versión nativa de iOS (lanzada a finales de agosto), está optimizada hasta el punto de correr el doble de rápido que su anterior versión. Y en lo que respecta a Android, no hay más que echarle un vistazo a los comentarios en la Play Store para darse cuenta del mal rendimiento que da la aplicación para el sistema operativo de Google.

Entonces, ¿tan malas son las aplicaciones desarrolladas en HTML5? ¿Tan buena idea es programar en el lenguaje nativo de cada plataforma? 

Para responder a esas preguntas, vamos a desgranar las ventajas e inconvenientes de desarrollar aplicaciones en cada una de las dos formas:

Aplicaciones web

  •  La principal ventaja de desarrollar aplicaciones web es que son multiplataforma. Pese a la posible necesidad de tener que hacer determinados ajustes, una aplicación en HTML5 funciona generalmente en todos los dispositivos móviles, siempre y cuando sean compatibles con el engine del Safari Webkit.
  • Programar en lenguajes como HTML5 es mucho más sencillo y se necesitan menos requisitos que programar en algún lenguaje nativo. Por citar un ejemplo, para desarrollar aplicaciones para iPhone, tal y como ya comentamos en este post, hace falta un Mac. Una vez que tienes un Mac, si tienes la última versión de Mac Os, podrás descargarte el último Xcode, en cuyo caso contrario, tendrás que pagar.  En consecuencia, está mucho más extendida.
  • Al ser independientes de la plataforma, no se someten a ningún control, ni en el inicio ni en las posteriores actualizaciones, como sucede por ejemplo con las aplicaciones en el AppStore. Por tanto, no hay revisión de las versiones que se publiquen, y las actualizaciones llegan de manera automática a todos los usuarios y plataformas a la vez.
  • Pese a que las distancias se van reduciendo, el rendimiento en las aplicaciones Web sigue siendo mucho menor, por lo que es son mucho más lentas en comparación con las apps nativas.
  • La interfaz de usuario. En una aplicación web es difícil conseguir la sensación de la aplicación parezca  integrada en el propio teléfono, ago que sí ocurre con las nativas.

Aplicaciones nativas

  • Al programar aplicaciones nativas podremos explotar al máximo cada una de las prestaciones integradas en los dispositivos, tales como acelerómetro, calendario, agenda de contactos, audio y vídeo, 3D, y así un largo etcétera.
  • Las tiendas de aplicaciones son otra de las ventajas. El hecho de disponer de un lugar donde encontrar todas las aplicaciones disponibles supone una mayor difusión y propagación de la aplicación, permitiendo que mucha más gente acceda a ella.
  • Notificaciones instantáneas. En aplicaciones que requieran actualizarse constantemente y en el momento exacto, las notificaciones push son completamente necesarias.
  • Las compras dentro de la app se realizan a través de la cuenta de usuario del dispositivo, por lo que el proceso es muy sencillo para cualquier usuario y no requiere facilitar los datos de la tarjeta de crédito.
  •  Una aplicación nativa puede funcionar aunque no esté conectada a la red. De esta manera, el usuario podrá acceder a los contenidos de la aplicación en cualquier momento. Aunque en HTML5 ya hay mecanismos para el funcionamiento off-line, todavía está poco desarrollado y no se pueden garantizar buenos resultados.
  • Las aplicaciones nativas proporcionan una mejor experiencia de usuario, puesto que la interfaz no tiene que cargarse junto con el resto de datos, lo que se traduce en interfaces más intuitivas y un mejor rendimiento en general.
  • Necesitaremos programar una aplicación para cada plataforma, si queremos que esté disponible para todo el mercado.
  • La implementación es bastante más costosa (véase programar para iOS).
  • Poder lanzar una aplicación y que esté disponible en la tienda de aplicaciones supone cumplir con todos los requisitos impuestos por las respectivas compañías, destacando Apple y sus normas a la hora de lanzar una aplicación, lo cual limita al programador de hacer cuanto le plazca.
  • Un ejemplo en la web de abogados online.

Aplicaciones híbridas

  • Otra solución podría ser diseñar una aplicación híbrida, que consisten en aplicaciones nativas en las que determinadas secciones muestran contenido web cargado desde un servidor o desde dentro de la propia aplicación, disponiendo así de la potencia de las aplicaciones nativas y de las facilidades de implementación de las web apps. El problema surge debido a que empresas como Apple no acepta aplicaciones que intentan colar contenido que no puede ser revisado por ellos mismos.

Conclusión

Una vez aclarados los pros y contras de cada uno de los métodos, volvemos a la pregunta inicial. ¿Aplicación nativa o Webapp? La respuesta, y como ocurre casi siempre, depende. Si por ejemplo tu empresa es una start up que quiere lanzar y distribuir lo más rápidamente una sencilla aplicación para promocionarse, la mejor opción sería hacer una aplicación Web. Si por el contrario deseas una aplicación más potente, que aproveche los recursos ofrecidos por cada teléfono y dispones de los conocimientos y medios necesarios, elige aplicaciones nativas.