Conoce los entornos de desarrollo de una app móvil

Conoce los entornos de desarrollo de una app móvil

Carlos Yañez

01-06-2016

Cada día se publican nuevas apps para móviles y el crecimiento de las mismas es exponencial. Desarrollar una app móvil requiere obviamente de conocimientos de programación, y si queremos que nuestra app sea multiplataforma es posible que debemos convertirnos en grandes programadores, ¿o no?

Aspectos a tener en cuenta para el desarrollo de una app móvil

En el mundo del desarrollo de app móviles nos encontramos con muchas opciones de herramientas, lenguajes y entornos para la programación de las mismas.

Antes de iniciarnos en este mundo en importante decidir entre una de estas opciones de cara al desarrollo de nuestras apps:

  • Usar lenguajes y herramientas nativos de cada plataforma:
  1. ObjectiveC/Swift y XCode en iOS
  2. Java y Android Studio en Android
  3. #, XAML y Visual Studio en el caso de Windows Phone y Windows 8 o Windows 10
  • Herramientas multiplataforma que compilan a código nativo. La más conocida y utilizada es Xamarin.
  • Herramientas multiplataforma basadas en HTML5. La más conocida es PhoneGap/Apache Cordova, pero existen muchas más.

Encontraremos ventajas e inconvenientes en cada una de las opciones por lo que podemos tener dudas a la hora de elegir uno de los caminos. Voy intentar orientaros en la elección.

Desarrollar con lenguaje nativo

Desde mi punto de vista, desarrollar de forma nativa es sin duda lo mejor ya que puedes sacarle el máximo provecho a tu programación al adaptarse totalmente al entorno en el que se ejecutará la app.

El problema existe en que cada plataforma 8Android, iOS, Windows) usa un lenguaje de programación diferente por lo que si se pretende desarrollar de forma nativa para varias plataformas el tiempo de desarrollo se dispara pues se debe partir de cero para cada plataforma, no pudiendo reutilizar código entre una y otra plataforma.

Normalmente los programadores sólo se especializan en una plataforma de desarrollo para poder hacerse expertos en la misma.

Ya he nombrado anteriormente las plataformas de desarrollo más conocidas para cada una de las plataformas.

Desarrollar en multiplataforma con compilación a código nativo

Existen herramientas en el mercado que permiten programar en un único lenguaje que luego compilan al código nativo de cada plataforma.

La ventaja de estas herramientas es que sólo es necesario usar un código de programación para poder desarrollar para todas las plataformas. Además, te permite reutilizar el código y acelerar de esta forma la programación de tus apps.

Quizás la herramienta más conocida es Xamarin. Si sabes programar en C# y .NET, este entorno de desarrollo te permitirá crear tus propias apps para las tres plataformas principales del mercado (Android, iOS y Windows) con un único código que será compilado de forma nativa para cada plataforma.

Es un entorno muy completo ya que las aplicaciones escritas con Xamarin en C# al compilarse a código nativo en cada plataforma, tienen un rendimiento exactamente igual al que el de una aplicación nativa. Además, ofrece acceso directo nativo a todas las APIs de cada plataforma, así como a los controles de interfaz de usuario nativos

Desarrollar en multiplataforma basado en HTML

Para un programador web lo más sencillo para desarrollar una app móvil es usar alguna herramienta basada en HTML que permita generar aplicaciones para las diferentes plataformas.

Aunque existen varias opciones en el mercado, quizás una de las más usadas es PhoneGap/Apache Cordova (dos nombres para un mismo entorno de desarrollo)

Las apps escritas en HTML5 y compiladas con PhoneGap, permiten crear la interfaz usando HTML, CSS y JavaScript, y desplegar a las diferentes plataformas.

En cada una además podemos utilizar un “skin” concreto para que el aspecto sea lo más similar posible al de las aplicaciones nativas.

PhoneGap crea un contenedor para la aplicación que la ejecuta como si estuviesen en un servidor web local. Además, exponen gran parte de la funcionalidad nativa del dispositivo móvil a través de librerías JavaScript, de modo que es muy sencillo “engancharse” desde la aplicación HTML5 que estamos creando.

El problema o desventaja principal de este tipo de entornos de desarrollo es el rendimiento de las aplicaciones resultantes que es inferior al de una aplicación desarrollada de forma nativa.

Otro aspecto “negativo” es que tampoco tenemos acceso a las API’s nativas de cada plataforma, limitando algunas funcionalidades.

¿Porque opción debo decantarme?

Después de exponer estas tres alternativas se nos plantea la duda de qué tipo de entorno utilizar. Yo creo que la elección es bastante sencilla y dependerá por un lado de nuestras capacidades y de otro de nuestras necesidades:

  • Si sólo vas a programar para una sola plataforma (por ejemplo, Android) y no conoces C# ni HTML, entonces aprende las herramientas y el lenguaje nativo de la plataforma elegida.
  • Si conoces C# o HTML, puedes optar por programar en un entorno como Xamarin o como Phone Gap
  • Si, sin embargo, quieres tener una aplicación para todas las plataformas, entonces tus opciones son:
    1. Aprende ObjectiveC y Cocoa Touch para iOS, Java y el SDK de Android para Android, y C#/XAML para Windows Phone. Esto es bastante complicado pues requiere ser un experto en diferentes lenguajes.
    2. Usa C# y Xamarin y podrás desarrollar para todas las plataformas con compilación nativa.
    3. Usa HTML5 y PhoneGap (u otra herramienta similar) y podrás desarrollar para todas las plataformas, aunque con algunas limitaciones.

Después de este repaso a las diversas opciones de entornos de desarrollo para app móvil creo que queda bastante claro que todo pasa por dos aspectos básicos:

  • Qué capacidades o conocimientos tenemos para programar de forma nativa o no
  • Para qué plataformas vamos a querer desarrollar.

¿Por qué no me cuentas cuál de estas tres opciones crees que es la más adecuada para ti?

Curso relacionado: Desarrollo de Aplicaciones Web

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.