sábado, 29 de noviembre de 2014

Herramientas de la programación móvil

ELIZABETH RAMIREZ   1151256
OMAR CONTRERAS       1151226
CRISTIAN CONTRERAS    1151220



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 hacen 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:
  1. Los lenguajes y herramientas nativos de cada plataforma: ObjectiveC/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....
  2. Herramientas multiplataforma que compilan a código nativo. La más conocida y utilizada es Xamarin.
  3. 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).
Xamarin-Apps-Nativas

Desarrollo multiplataforma basado en HTML5

Una opción muy popular, sobre todo si eres un programador Web, es utilizar alguna herramienta basada en HTML que genere aplicaciones para todas las plataformas. Existen muchas, pero la más conocida es PhoneGap/Apache Cordova.
Las apps escritas en HTML5 y compiladas con PhoneGap, permiten crear la interfaz usando HTML, CSS y JavaScript, lenguajes muy conocidos y utilizados, 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 y similares crean 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.
PhoneGap es una plataforma muy interesante si eres un programador web y si además tu aplicación dispone de una versión web.
Entre las desventajas principales están que las aplicaciones no tiene el mismo rendimiento que una app nativa, ni tampoco te dan acceso a todas las APIs nativas de cada plataforma. aunque sí a todas las importantes. Además, aunque algunas bibliotecas como jQuery Mobile te dan la opción de adaptarse al aspecto de cada sistema operativo móvil, no puedes simular todos los controles nativos (aunque sí muchos de ellos).
Si ya conoces HTML, CSS y JavaScript, entonces PhoneGap te deja construir aplicaciones para cualquier plataforma móvil usando lo que ya sabes, y te brinda la funcionalidad necesaria para poder construir el 90% de las aplicaciones habituales que puedas necesitar, con un rendimiento adecuado también para el 90% de los casos.
Si lo que quieres es una aplicación súper-especial que entre muy a bajo nivel (por ejemplo un juego complicado) y que sea muy compleja en cuanto a interfaz y por lo tanto el rendimiento es muy importante, entonces PhoneGap seguramente no es para ti.

¿Cuál escojo entonces?

Para ayudarte a decidir hemos creado este sencillo diagrama de flujo:
Elegir-Entorno-Programacion-Movil

En resumen y para darte una ruta más clara:
  • Si vas a programar para una sola plataforma (por ejemplo, Android) y no conoces C# ni HTML, entonces aprende las herramientas y el lenguaje nativo.
  • Si 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.
    2. Usa C# y Xamarin y ataca todas las plataformas.
    3. Usa HTML5 y PhoneGap (u otra herramienta simular) y  ataca todas las plataformas.
Como podemos ver, al final todo se reduce fundamentalmente a dos cuestiones fundamentales:
  • Conocer de qué punto partes (qué sabes y qué quieres/puedes aprovechar)
  • Decidir para qué plataformas quieres programar.


No hay comentarios:

Publicar un comentario