Frameworks multiplataforma "write once, run everywhere"

Cada dispositivo móvil necesita una aplicación con un entorno de desarrollo distinto, un lenguaje de programación distinto. Eso obliga a hacer una gran inversión de aprendizaje de cada una de las tecnologías para abarcar el mayor número de dispositivos móviles.

Cuando queremos hacer una aplicación para los dispositivos iOS y para Android a la vez y no queremos programar dos veces, o simplemente sabemos Objetive-C pero no nos gusta Java o viceversa, la mejor solución es emplear frameworks multiplataforma, “write once, run everywhere”.

El desarrollo de aplicaciones multiplataforma implica reducción de costes y tiempo de desarrollo. La curva de aprendizaje de este tipo de frameworks de desarrollos es menor que el de desarrollos nativos. También es recomendable el uso de estas herramientas para proyectos que no sabemos si en el futuro llegarán al mercado o no y de esta manera nos ahorramos costes en los que podríamos haber incurrido en caso de usar una app nativa. Las aplicaciones nativas son más caras porque requieren incremento del tiempo de desarrollo, cada software requiere un lenguaje de programación distinto.

Algunas herramientas para desarrollo multiplataforma:
Phonegap, Titanium Appcelerador y Ansca Corona, que nos permiten construir aplicaciones usando lenguajes como Javascript y Lua, pero estas requieren Mac y Xcode.


Ventajas e inconvenientes:

-PhoneGap: se puede emplear en 7 diferentes plataformas móviles (iPhone/iPad, Android, WebOS, W7, Black Berry, Palm y Symbian). Debido a que las funcionalidades disponibles para PhoneGap son más limitadas respecto a las disponibles en plataforma nativa, se requieren menos habilidades de implementación sobre aplicaciones móviles dentro del equipo de desarrollo.

Ventajas:
-Existe mucha documentación acerca de PhoneGap e inluso la propia web 
proporciona muchos ejemplos.
-Es fácil de desarrollar y proporciona gran libertad a los que tienen conocimientos de HTML y JavaScript.
-Es gratis, soporte de pago. Licencia BSD.

Inconvenientes:
Dado que PhoneGap está diseñado para soportar diferentes plataformas, no contará con las características nuevas de cada plataforma tan pronto como estas se publiquen.
-En algunos casos es necesario usar el sistema operativo de la plataforma. 
Por ejemplo empaquetar aplicaciones Windows Phone solo es posible 
con el sistema operativo Windows. Lo mismo ocurre con iOS, es 
necesario usar un Mac.
-Dependiendo de la plataforma se necesita un sistema diferente, para 
Android se requiere el uso de Eclipse y para iOS el uso de Xcode.
Se desarrolla una aplicación híbrida, por lo que el rendimiento no es 
como el de una aplicación nativa.

- Titanium Appcelerador: un framework muy potente donde el lenguaje de programación utilizado es un Javascript adaptado. Es posible crear aplicaciones para Android, iPhone y , además, de escritorio. Una de las características más interesantes de Appcelerator (y que más confusión produce, debido a que se vende como una generador de aplicaciones nativas: the native advantage), es que al empaquetar la aplicación, el Javascript es transformado y compilado.

Ventajas:
Multiplataforma móvil y también de escritorio.
Aspecto y controles nativos. El mejor rendimiento.
Reutilización del 60-90% de código en varias plataformas. 
Buenos ejemplos (el KitchenSink tiene prácticamente todo lo que se puede hacer)
Gratis, soporte de pago. Licencia Apache.

Inconvenientes:
Requiere Mac y Xcode para empaquetar aplicaciones IOS.
Definición de componentes visuales y controles “a mano” (PhoneGap es HTML y Flex es MXML).
Mucha documentación pero poco actualizada y descolocada.
El IDE y las aplicaciones fallan a veces, no he podido exportar ni arrancar una aplicación Iphone desde el IDE, he tenido que hacerlo desde Xcode.
Las aplicaciones de escritorio se distribuyen con el código fuente en claro (html, js, css, imágenes, todo)

- Ansca Corona : Corona es un framework para el desarrollo de juegos y aplicaciones gráficas para Iphone/Android. Se desarrolla en Lua y no tiene IDE, aunque si viene con un interprete-emulador y varios ejemplos de juegos bastante espectaculares.

Ventajas:
 Motor gráfico y físico ideal para juegos.
Lua es un lenguaje bastante sencillo.
Buena documentación, ejemplos y plantillas.

Inconvenientes:

El precio de la licencia anual. Aunque se puede usar para cualquier cosa, realmente es ideal para aplicaciones gráficas y juegos al incluir motor físico.


Otras herramientas de desarrollo multiplataforma son: 
Flex 4 y Adobe Mobile, esta herramienta te permite construir apps iOS y Android sin tener un MAC ni Xcode, el entorno de desarrollo oficial de Apple. Es un programa en ActionScript.