Ivan Fernández Smart Apps Techinal Leader

Tipos de plataformas de desarrollo cruzado en entornos de movilidad

Hace unas semanas, nos situábamos en el inicio del desarrollo de una aplicación móvil y reflexionábamos sobre la conveniencia de optar por un enfoque estrictamente nativo o uno basado en el uso de plataformas de desarrollo cruzado y sobre las ventajas que esta segunda alternativa presentaba en un buen número de escenarios.

La segunda pregunta llega una vez descartado el desarrollo nativo y no es precisamente más fácil de contestar que la primera: ¿cuál de las múltiples tecnologías de desarrollo cruzado vamos a emplear? De nuevo, aquí nos encontramos con un buen número de opciones que resultarán más o menos idóneas en función de las características y objetivos de nuestra app.

Las plataformas de desarrollo cruzado (cross platform development frameworks) disponibles en la actualidad en el ámbito móvil, tienen en común la capacidad de generar, a partir de una única codificación, las versiones de la aplicación necesarias para las diferentes plataformas, pero pueden dividirse en dos grandes grupos en función del tipo de código generado para cada una de ellas: las de desarrollo cruzado híbrido y las de desarrollo cruzado nativo.

Plataformas de desarrollo cruzado híbrido

Este primer grupo de plataformas parten del primitivo concepto de web app, basando el desarrollo en tecnologías web y proporcionando un envoltorio nativo que permite el acceso a las capacidades de los dispositivos (cámaras, GPS, biometría, etc…). El resultado es una aplicación nativa pero con un núcleo codificado a modo de web, de ahí el considerarlas un híbrido entre ambos mundos.

  • El principal handicap que deben superar estos frameworks es la merma de rendimiento provocada, a diferencia del desarrollo puramente nativo o del grupo que veremos a continuación, por no ejecutar directamente el código propio de cada plataforma.

  • El no tener un acceso directo a los SDK nativos también hace que las aplicaciones desarrolladas con estos frameworks estén fuertemente condicionadas por la evolución de los mismos, necesaria para adaptarse a los cambios y nuevas funcionalidades que van siendo incorporadas en las nuevas versiones de cada SDK.

  • En el lado de los pros, hay que destacar que, al basarse en tecnologías bien conocidas y ampliamente utilizadas, suponen una buena vía de entrada al desarrollo móvil, haciendo posible incluso reaprovechar siquiera parcialmente, desarrollos web previos.

  • Otro punto a favor, es la agilidad que proporciona el poder probar en un simple navegador los avances en el desarrollo.

La gran mayoría de desarrollos que siguen esta filosofía toman como base la plataforma Apache Cordova, encargada de empaquetar adecuadamente el código HTML, CSS y JavaScript que luego será renderizado internamente y presentado en una webview nativa, y de proporcionar el acceso al hardware de los dispositivos a través de plugins disponibles para las diferentes plataformas y que deben ser actualizados periódicamente.

Sobre esta base, el desarrollador tiene libertad para escoger entre varios frameworks con los que llevar a cabo el desarrollo, destacando los siguientes:

  • Adobe Phonegap: muy vinculado a Apache Cordova pero actualmente separados, proporciona un GUI que facilita los procesos de compilación y distribución de las apps construídas sobre esta plataforma y otras herramientas como plantillas o un servidor integrado para asistir al desarrollo.

  • Framework 7: también apadrinado por Apache Cordova, proporciona un framework en JavaScript que incluye componentes predefinidos que replican los componentes nativos de las iOS y Android.

  • Ionic Framework: con la ventaja de estar basado en el popular AngularJS, es el de mayor implantación actualmente entre los frameworks de desarrollo híbrido.

Plataformas de desarrollo cruzado nativas

Son denominadas así porque a partir de un código único generan en tiempo de compilación las versiones en el código propio de cada plataforma, obteniendo una aplicación nativa a (casi) todos los efectos.

  • Además de la mejora de rendimiento respecto de las anteriores, en la mayoría de los casos esto permite por ejemplo que en la construcción del interfaz puedan utilizarse los controles o soluciones de usabilidad propias de cada plataforma, lo que puede suponer un ahorro de tiempo destacable en la construcción de las vistas.

  • También en estos casos la dependencia de la evolución de la plataforma de desarrollo cruzado seleccionada resulta menos crítica, ya que lo habitual es que permitan un grado mucho mayor de customización a través del acceso directo al SDK y el uso de código nativo en aquellos casos en que se requiera.

  • La principal desventaja de este tipo de plataformas es la utilizar lenguajes y herramientas menos extendidas y en algunos casos, muy novedosas, lo que dificulta su adopción por parte de los desarrolladores.

Los factores a tener en cuenta a la hora de elegir entre los diferentes frameworks que se engloban en este grupo serían el lenguaje de programación que usa, la madurez del acceso que el framework proporciona al SDK, los recursos y entorno de desarrollo disponibles o la previsión de que el proyecto y la comunidad tengan continuidad en el futuro.

Entre las alternativas que encontramos actualmente mejor posicionadas dentro de este tipo de desarrollo estarían:

  • Xamarin: plataforma de desarrollo en C# propiedad de Microsoft. En la actualidad es una tecnología en alza gracias al uso de un lenguaje más asentado en la comunidad de desarrolladores, a contar con un IDE de la solvencia de Visual Studio y sobre todo por conseguir el nivel de rendimiento más cercano al de las aplicaciones nativas, sobre todo en su versión Xamarin.Android/iOS.
  • React Native: creado por Facebook y basado en JavaScript y en su librería React.JS. Permite al desarrollador crear las aplicaciones a partir de un set de componentes listos para su uso que aceleran la construcción de la UI.
  • Flutter: auspiciado por Google. Utiliza el lenguaje de programación Dart y comparte con la anterior la filosofía basada en un set de widgets predefinidos y el hot reloading, que permite ver en tiempo de ejecución los cambios realizados en el código.

Conclusión

Teniendo en cuenta la mayor semejanza del resultado con el de las aplicaciones puramente nativas, el segundo grupo de plataformas de desarrollo cruzado debería ser la elección prioritaria en aquellos casos en lo que el desarrollo nativo quede descartado.

En Izertis apostamos actualmente por Xamarin como plataforma de desarrollo cruzado para nuestros proyectos de movilidad. Tras haber llevado a cabo el desarrollo de aplicaciones sobre varias de las tecnologías descritas, tanto híbridas como nativas, creemos que Xamarin aporta un grado de customización extra al posibilitar el trabajo directo sobre código nativo, permitiendo extraer el mejor comportamiento posible en aquellas funcionalidades que lo requieran y capacitándonos de esta manera para cubrir de la manera más completa y satisfactoria los requisitos y expectativas de nuestros clientes.