El siguiente análisis
se realizó con el objetivo de tener una referencia sobre las herramientas de
desarrollo Mobile utilizadas por los equipos de desarrollo en la actualidad a
fin de poder evaluar las virtudes y desventajas de los diferentes enfoques.
“Podremos desarrollar aplicaciones para las
diferentes plataformas window phone, IOS
, Android logrando reducir costos de construcción y tiempos de desarrollo , pero será difícil
alcanzar el rendimiento , tamaño de las
aplicaciones , la vinculación con el sistema operativo que logra el desarrollo
nativo para las diferentes plataformas.”
La necesidad puntual del proyecto que se quiera llevar
acabado indicara que costos estamos
dispuestos a asumir.
En la actualidad hay varias herramientas para desarrollo
multiplataforma cada una de ellas como una cuestión de venta indican entre
líneas pequeñas “Generadores de código
nativo” cuando desde el punto de vista técnico algunas no se acercan nada a
lo esperado de una aplicación nativa.
En esta ocasión vamos a analizar en modo resumen la más
importantes o difundidas entre comunidades de desarrollo de dispositivos
móviles con sus diferentes enfoques de construcción multiplataforma existentes:
- · PhoneGap
- · Appcelerator Titanium
- · Xamarin
Phonegap
La construcción se realiza con la utilización de hitos
tecnológicos como HTML, CSS, JAVASCRIPT y al momento de empaquetar para alguna
plataforma utilizamos el contenedor phonegap que encapsula todo el proyecto
web en un binario para la plataforma en
cuestión.
Los programadores para simular la interfaz de las diferentes
plataformas utiliza CSS y para lograr una dinámica de funcionamiento se
utilizan muchas librerías jquerymobile , kendo , sencha , entre otros.
Un tema importante es el hecho de que nos proporciona una
librería para cada plataforma que es la encargada de interaccionar con los
correspondientes SDK.
Lo preocupante es que los desarrollos de estas librerías se
realizan por separado por lo que es
probable que en alguna plataforma se pueda contar con funcionalidades que en
otra no están disponibles.
Uno de los aspectos que reduce el rendimiento de las
aplicaciones desarrolladas con esta herramienta es el hecho de que cada
aplicación al ser utilizada referencia al engine del navegador de nuestro
dispositivo para lograr ser operativa cada vez que la llamamos en nuestro
teléfono, algo que claramente afecta el rendimiento de las aplicaciones.
Por otro lado en numerosos foros hablan de los problemas que
manifiesta la herramienta a la hora de acceder al hardware de los dispositivos
dado que para algunos dispositivos funciona de manera aceptable y para otro en
muchos casos se recurre a desarrollos nativos externos para lograr alcanzar la
necesidad.
Ventajas
·
Los tiempos desarrollo son más cortos en algunos
casos, en muchos casos ya tenemos una
versión operativa web del producto por lo que en este caso se trabaja en adatar
el frontend lo que reduce tiempos de construcción.
·
Los costos del desarrollo son más bajos
comparado con el valor hora de programadores nativo mobile, la curva de
aprendizaje de phoneghap para un desarrollador web es corta por utilizar los
mismos hitos de desarrollo, motivo por el que quizás no tengamos que salir a
contratar especialistas sino reutilizamos la mano de obra existente.
·
La curva de aprendizaje es corta.
·
Es gratis
·
Hay mucha documentación
·
El conseguir profesionales idóneos es más fácil.
Desventaja
·
Se debe trabajar con otros framework para lograr
interfaces similares a la de las plataformas para la cual estamos desarrollando
y por supuesto en algunos casos creamos un frontend para cada plataforma con el
objetivo de lograr interfaces en armonía con la plataforma para la cual estamos
desarrollando. En pocas palabras la
interfaz de las aplicaciones Android no es igual a las de iphone.
·
No tiene rendimiento nativo al pasar siempre por
el engine del navegador, al ser
dependiente del navegador de nuestro equipo produce claramente una dependencia
en cada ejecución con un software intermediario, en algunos casos se nota y en
otro solo al iniciar.
·
Problemas a la hora de interaccionar con el
hardware del teléfono.
·
En casos particulares no será posible obtener en
algunos casos una misma funcionalidad para diferentes plataformas, ya lo
mencionamos con anterioridad existen librerías de acceso a los sdk que
evolucionan en paralelo.
Nota Final:
Presenta grandes problemas a la hora de desarrollar para IOS por lo dificultoso
que se vuelve lograr simular UI e funcionalidad en una aplicación web. Recordemos que hablamos de una aplicación web
encapsulada en un binario que le permite existir en un dispositivo de una
plataforma determinada por lo que no podemos pedir que alcance un rendimiento
nativo. Otro problema detectado por
equipos de desarrollo es el tamaño de los empaquetados que en un muchos casos
difiere en mucho del generado con una herramienta nativa, lo que produce muchas
veces problemas a la hora de subir a algún store por las limitaciones impuestas
por cada plataforma.
Appcelerator Titanium
Esta herramienta es otra alternativa a la hora de realizar
un desarrollo multiplataforma de una manera un poco más híbrida dado que el
desarrollo tiene parte nativa.
Debemos olvidar HTML
, DOM, CSS y las librerías javascript desarrolladas para navegadores como
jquery , molotools..etc. Uno de los puntos a favor que tiene es la capacidad de
poder manipular controles nativos para las diferentes plataformas y gestionar
la lógico por medio de la utilización de javascript.
El trabajo de la interfaz gráfica se realiza por medio de
una librería puente entre nuestra lógica javascript y los controles nativos de
las diferentes plataformas.
Nota: Es claro que genera aplicaciones resultante con
mayor performance por acercarse a un escenario hibrido (controles nativos +
javascript compilado).
Como ¿? Una vez hemos terminado la aplicación en
código en Javascript, este es transformado y compilado. Posteriormente, cuando se arranca la
aplicación en el dispositivo móvil, el código se ejecuta dentro de un motor
Javascript que todos los dispositivos tienen, ya sea el JavaScriptCore en iOS o
Mozilla Rhino en Android/BlackBerry.
Los programadores java de seguro se sentirán mas cómodos con
el entorno de trabajo dado que estaba basada en un eclipse (ide de trabajo
java) con las modificaciones necesarias
para lograr la herramienta deseada.
Alguna de las cosas de las que se quejan los desarrolladores
es que estas librerías puentes javascript como todo se desarrollan y mantienen
por separado por lo que nuevamente podemos lograr funcionalidades para una
plataforma y quizás no este disponible para otra.
Ventajas
·
Desarrollo para múltiples plataformas
·
Muchas documentaciones
·
Mejor rendimiento al ser desarrollos híbridos
entre javascript y controles nativos.
·
Versión gratuita
Desventajas
·
Problemas de funcionamiento en la ide que al
parecer se muere dado que utiliza muchos recursos en algunos casos.
·
Es una comunidad muy chicas de desarrolladores
por lo que hay pocos ejemplos.
·
Require Mac y XCode para aplicaciones iOS
XAMARIN
La tecnologías de Xamarin nos da una muy buena alternativa
para el desarrollo móvile, apoyándonos sobre la tecnología .NET (a través de
mono) para mejorar la productividad de las aplicaciones que desarrollamos.
Xamarin por otro lado promueve al igual que muchas
herramientas que analizamos como generador de aplicaciones nativas.
Sera verdad ¿? Podríamos decir casi casi
Su esquema de desarrollo se base en desarrollar interfaz de
usuario para cada plataforma y desarrollar
la lógica de negocio utilizando c#.
Nota: Una librería
portable (PCL) es una librería cuyo código y dependencias externas pueden ser
llevadas a diversas plataformas sin perder funcionalidad.
Para decirlo de una manera práctica nosotros tendremos
nuestra aplicación net corriendo sobre mono runtime embebido de nuestra aplicación
y para ciertas tareas tendremos comunicaciones con api nativa Android, IOS ..etc.
Entonces? Tenemos interfaces nativas para cada
plataforma y una lógica desarrollada con c# que interacciona con api nativas
ios o android cuando lo necesita, pero no deja ser un ensamblado net que se
comporta como un código nativo y se comunica con código nativo.
Como lo podemos observar Xamarin corrige algunos problemas
que tiene algunas herramienta como ser el hecho de que no se preocupa para
estandarizar la Interfaz dado que esto
lleva a interfaces pobres y limitadas
Ventajas
·
Ide potente
·
Propone un ambiente de test para diferentes dispositivos Tablet y
teléfonos donde se puede probar el funcionamiento.
·
Genera código nativo
·
Muy buen rendimiento de las aplicaciones.
·
Desventaja
·
Algunos desarrollados con la herramienta
documentaron problemas con el tamaño del empaquetado final, como sabran todo
los store fijan un tope para el espacio que puede tener una aplicación.
·
No hay mucho soporte en la red dado que es una
herramienta relativa nueva.
·
Es necesario tener una mac para poder realizar
la compilación para IOS
·
El ambiente de test es pago.
·
Algunos proyectos reportaron problemas en un
pequeño delay al inicio de toda aplicación que es mas largo de lo común.
·
No todos los controles visuales nativos de cada
plataforma se encuentran disponibles para su uso.
·
La herramienta de desarrollo todavía presenta
algunos problemas.
En conclusión llegada
la necesidad podremos elegir algunas de estas herramientas que se acerque al
rendimiento, estética, funcionalidad de
aplicaciones nativas.
Excelente análisis, muy buen aporte. Definitivamente la de mejor relación de rendimiento es Titanium.
ResponderEliminar