Principales entornos de desarrollo en aplicaciones multiplataforma

Principales entornos de desarrollo en aplicaciones multiplataforma

Carlos Yañez

12-09-2018

Cada día se publican nuevas aplicaciones para móviles y el crecimiento de estas es exponencial. Desarrollar una aplicación móvil requiere de conocimientos de programación y tiempo de dedicación.

Lo más normal es que queramos que nuestra aplicación sea multiplataforma, pero el problema es que cada sistema operativo tiene su lenguaje de programación.

 

Opciones de programación multiplataforma

Antes de ver los entornos de desarrollo para aplicaciones multiplataforma, debemos entender las tres estrategias que tenemos hoy en día para realizar estos desarrollos.

 

Estamos hablando de tres estrategias distintas:

 

-Desarrollo de WebApps con HTML5

-Desarrollo de aplicaciones híbridas:

-Desarrollo de aplicaciones compiladas

 

WebApps con HTML5

Esta es posiblemente la estrategia más recomendada y fácil ya que mediante las API de HTML5, JavaScript y CSS podemos casi garantizar que nuestro desarrollo va a funcionar sobre cualquier dispositivo que disponga de un navegador web basado en WebKit.

 

Tiene ventajas importantes que podemos resumir en tres puntos:

 

-No es necesario conocer ningún lenguaje de programación complejo, con HTML, JavaScript y CSS es suficiente

-Esta programación esta soportada por un gran número de plataformas

-El código es reutilizable independientemente de la plataforma

 

Aunque también tiene una serie de inconvenientes que debemos valorar como son:

 

-El rendimiento de este tipo de aplicaciones es menor que el de una aplicación nativa.

-Tienen un acceso limitado a las funciones del dispositivo móvil y no pueden sacarle el máximo rendimiento al mismo.

-Al correr sobre el navegador web, la mayor parte de este tipo de aplicaciones requiere una conexión a Internet para poder ejecutarse.

-Limitaciones de almacenamiento de HTML5, donde normalmente tendremos acceso a 5MB que en muchas aplicaciones no será suficiente.

 

Si nos decantamos por este tipo de desarrollo tendremos dos tipos de entornos de desarrollo adecuados:

 

-Usar cualquier entorno de desarrollo JavaScript para el frontend, como Backbone.js, Angular, React, Ember.js, … junto con algún entorno de desarrollo CSS como Ratchet o TopCoat.

-Usar un entorno de desarrollo que dispongan de un catálogo de componentes especializados en interfaces móviles, como podrían ser Ionic Framework, Onsen UI, Framework7 o Sencha Touch.

 

La primera opción está más orientada a aplicaciones web adaptativas que deban funcionar en sobremesa y en dispositivo móvil. La segunda opción es más usada en desarrollo de aplica-ciones únicamente enfocadas a dispositivos móviles y probablemente candidatas a ser en-capsuladas como aplicaciones híbridas.

 

Desarrollo de aplicaciones híbridas

Las aplicaciones híbridas son aplicaciones HTML5, JavaScript y CSS que encapsulamos en una aplicación nativa. 

 

La diferencia con las aplicaciones HTML5 vistas anteriormente es que en vez de ejecutarse en el navegador del dispositivo lo hacen en un componente nativo WebView.

Este tipo de desarrollo se encarga de montar el componente WebView y cargar dentro nues-tra aplicación, además de ofrecer los mecanismos para comunicar la aplicación JavaScript con la parte nativa, y de esta forma ofrecer funcionalidades que dentro de un navegador no es posible ofrecer, pues podremos acceder a cualquier API nativa que nos ofrezca cada SDK.

 

De la misma forma que la opción anterior, tendremos ventajas e inconvenientes. Como ven-tajas podemos mencionar:

 

-Al encapsular el desarrollo en una aplicación nativa, esta podrá ser publicada en las tiendas de cada plataforma.

-Como hemos comentado, podremos acceder a las APIs nativas mediante JavaScript y usar funcionalidades del dispositivo.

-Existen plugins desarrollados de acceso a las APIs mencionadas, lo que nos agilizará el desarrollo.

 

Como inconvenientes deberíamos mencionar:

 

-El rendimiento no es el de una aplicación nativa pese a estar encapsulada.

-Aunque tenemos acceso a las APIs para funcionalidades nativas, los componentes visuales no acaban de funcionar de forma adecuada

-Podemos encontrarnos que no exista un plugin para acceder a una funcionalidad na-tiva, en ese caso no queda otra que desarrollar de forma nativa dicha funcionalidad

 

Para este tipo de desarrollo existe un entorno de desarrollo preferente que es Apache Cordova. La mayoría de los entornos de desarrollo en HTML5 ofrecen opciones de integración con Cor-dova a la vez que la cantidad de plugins disponible es muy elevado.  Se esta convirtiendo en un  estándar de facto pues empresas como Adobe, Intel o Microsoft están ayudando a su desarro-llo, y disponen de productos orientados a Apache Cordova (Adobe con PhoneGap, Intel con su IDE de desarrollo XDK y Microsoft con su cliente de línea de comandos TACO).

 

Desarrollo de aplicaciones compiladas

Entendemos como aplicaciones compiladas aquellas que han sido desarrolladas con un en-torno de desarrollo capaz de generar código nativo a partir de código escrito en lenguajes como JavaScript, C#, Python, etc

 

La aplicación parecerá nativa, pero estará desarrollada bajo una única capa de abstracción y lenguaje de programación comunes. Con este tipo de desarrollo desaparecen las limitaciones teóricas a la hora de acceder a cualquier librería o componente nativo ofrecido por cada plata-forma soportada.

 

Como en los casos anteriores tendremos pros y contras. Las principales ventajas son clara-mente:

 

-El rendimiento de este tipo de desarrollos es muy similar al desarrollo nativo.

-Podemos acceder a componentes nativos sin restricciones.

 

Pese a todo, también existen aspectos no tan positivos como son:

 

-La cantidad de código reutilizable es menor que en las otras opciones

-Para obtener buenas aplicaciones es necesario conocer a fondo las APIs nativas, lo que requiere un esfuerzo de aprendizaje.

-Los entornos de desarrollo están básicamente enfocados en genera código para Android e iOS, dejando de lado otras plataformas minoritarias.

 

Tenemos varias opciones donde elegir como plataformas de desarrollo con diferentes opciones de programación. Las más utilizadas son:

 

-Xamarin (C#): Tiene soporte para iOS, Android y Windows Phone. Inicialmente fue de pago, pero tras la compra por parte de Microsoft es posible publicar nuestras aplica-ciones sin adquirir licencias de pago.

-Appcelerator (JavaScript): de los primeros entornos de desarrollo de esta categoría. Requiere adquirir licencias para poder publicar aplicaciones. Soporta iOS, Android y BlackBerry.

-Qt (C++): Muy utilizado en multiplataforma. Soporta iOS, Android, Windows Phone y BlackBerry.

-NativeScript (JavaScript): Buen entorno de desarrollo que permite acceso a APIs nati-vas directamente desde JavaScript.

 

Curso relacionado: Desarrollo de Aplicaciones Multiplataforma 

Profile picture for user Carlos Yañez
Carlos Yañez

Ingeniero Superior de Telecomunicaciones por la UPC. Director de Informática en un Laboratorio de Análisis con implantación nacional. Profesor de los cursos de Electrónica y Técnico en Sistemas Microinformaticos y Redes.