martes, 12 de abril de 2016

Programación móvil: Qué herramienta y lenguaje elegir







En casi cualquier ámbito de programación que escojas, hoy en día tienes disponibles infinidad de herramientas, lenguajes y entornos que puedes elegir. Toda esa maraña de opciones hace que, en ocasiones, sea muy complicado decantarse por una opción u otra.

En el mundo del desarrollo para móviles y tabletas pasa lo mismo. Actualmente dispones de muchas opciones si te quieres dedicar a este ámbito, y en concreto debes elegir entre:
Los lenguajes y herramientas nativos de cada plataforma: Objecto/Swift y XCode en iOS, Java y Android Studio en Android, C#, XAML y Visual Studio en el caso de Windows Phone y Windows 8....
Herramientas multiplataforma que compilan a código nativo. La más conocida y utilizada es Xamarin.
Herramientas multiplataforma basadas en HTML. La más conocida es PhoneGap/Apache Cordova, pero existen muchas más.

Cada una de estas opciones tiene sus ventajas e inconvenientes, así que ¿cuál deberías elegir?.

En este post repasaremos por encima las principales opciones que existen a la hora de realizar programación móvil con sus ventajas e inconvenientes, y te daremos unas pautas básicas para ayudarte a decidir por dónde tirar.

Desarrollo Nativo

Está claro que, siempre que puedas, el desarrollo nativo es la mejor gran opción.

El problema es que cada plataforma (iOS, Android, WP...) es un mundo. Cada una de ellas utiliza un lenguaje de programación diferente, herramientas propias y paradigmas de programación particulares. A cambio obtienes la máxima flexibilidad, adaptación total al entorno en el que se ejecuta la aplicación y el máximo rendimiento.

La desventaja principal es que tienes que dominar muchos lenguajes y herramientas y que el tiempo de desarrollo se multiplica mucho, pues es necesario crear desde cero tres versiones diferentes de la misma aplicación (una para cada plataforma).

Por regla general los programadores se especializan y eligen una única plataforma, de modo que puedan dar lo mejor de si mismos en ésta.

Por ejemplo, si decides especializarte en iOS y así programar para la popular plataforma iPhone/iPad, entonces deberás aprender a programar con ObjectiveC o Swift y a utilizar el entorno XCode, comprándote además un ordenador Mac.

Tratar de abarcarlas todas es muy complicado, aunque desde luego siempre es una opción.

Desarrollo multiplataforma compilado a nativo

Una opción de compromiso es utilizar alguna plataforma de desarrollo mixta que independiza el desarrollo del lenguaje nativo de cada plataforma móvil.

Con este tipo de herramientas se utiliza un único lenguaje y se crean aplicaciones para todas las plataformas, eso sí, adaptando algunas cuestiones para poder funcionar en cada caso. Lo bueno es que te permite conocer un solo lenguaje, reutilizar gran parte del código entre todas, y generar aplicaciones nativas para todos los entornos móviles.

La más conocida es, sin duda, Xamarin. Está basada en el lenguaje C# de Microsoft y en la plataforma .NET, y gracias a sus herramientas permite crear aplicaciones para todas las plataformas, reutilizando gran parte del código (a excepción de la interfaz).

Si ya conoces C# y .NET, aprender Xamarin te ayuda a aprovechar los conocimientos que ya posees y con ellos desarrollar para todas las plataformas móviles relevantes del mercado (iOS, Android y Windows Phone).

Se obtienen muchas ventajas de su uso, pero fundamentalmente dos:

· Puedes programar en algo que ya conoces y evitar aprender nuevos lenguajes innecesariamente.
· Tus aplicaciones funcionarán con pocos cambios en varias plataformas.

O sea, al final ahorras tiempo, esfuerzo y llegas antes al mercado.

Las aplicaciones escritas con Xamarin en C# se compilan a código nativo en cada plataforma, por lo que su rendimiento es exactamente el mismo 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 (de hecho esto es lo que debes aprender con Xamarin para cada plataforma de manera diferente según quieras programar para iOS, Android o Windows Phone).

No hay comentarios.:

Publicar un comentario