La Apple App Store ha alcanzado los 25.000 millones de descargas y muchos de nosotros hemos comprado y disfrutado algunas de ellas. Realmente, las aplicaciones para iPad, iPhone y Android nos dejan impresionados muchas veces. La parte mala llega cuando volvemos a nuestros ordenadores para usar el software corporativo sólo para sentirnos como si viajaramos en el tiempos unos cuantos años atrás.
Estaría bien, pero que muy bien, poder usar nuestros dispositivos móviles para acceder a las aplicaciones de nuestra empresa. La pregunta es: ¿están las aplicaciones nativas para móviles listas para el software empresarial?
Los inconvenientes
Por supuesto que podemos escribir aplicaciones nativas para hacer funcionar toda nuestra empresa, sin embargo hay algunas limitaciones inherentes al software para móviles que no lo hacen optimo para desarrollar software de empresa. A continuación se muestran dos de ellas.
Actualización instantánea
En una aplicación empresarial típica escrita en Java y ejecutándose en un servidor de aplicaciones, un cambio en la aplicación tiene efecto inmediato en todos los usuarios. Los usuarios no necesitan un procedimiento especial para actualizarse, simplemente han de usar el navegador como cada día y la aplicación ya está actualizada. Por otra parte, una aplicación para móvil tiene que ser publicada en una app store y el usuario tiene que actualizar la applicación explícitamente. Además, muchas veces hemos de confiar la distribución de las aplicaciones a proveedores externos como Apple (con iOS Developer Enterprise Program) o Appaloosa.
Resumiendo, las aplicaciones empresariales tradicionales son más fáciles de actualizar que las aplicaciones nativas de móviles. Este es un punto importante en un entorno empresarial donde a veces necesitamos empezar con una versión en una fecha específica, a veces hemos de arreglar un bug crítico de inmediato, etc.
Multiplataforma
Con aplicaciones nativas hemos de escribir nuestra aplicación 3 veces, una con Objetive-C para iPhone, otra con Java para Android y otra más con C# para Windows Phone. Podemos ignorar Windows Phone, pero no podemos ignorar iPhone o Android, por tanto al menos hemos de escribir la aplicación dos veces. Aunque existen algunas soluciones multiplataforma, tales como HTML5 + PhoneGap, esto sigue siendo un serio problema.
Por su parte, una aplicación Java empresarial normal y corriente puede ejecutarse desde cualquier ordenador con un navegador y la propia aplicación puede correr en cualquier configuración posible de servidor. El mismo código funciona en todas partes.
La alternativa web
La alternativa obvia es ejecutar las aplicaciones web actuales usando el navegador del dispositivo móvil. Esto funciona, pero no produce una buena experiencia de usuario, porque las aplicaciones actuales están diseñadas para pantallas grandes en ordenadores de escritorio y para ser usadas con ratón. Los elementos visuales no tiene una correcta disposición en la pequeña pantalla del móvil y los vínculos y botones son demasiado pequeños y están colocados donde no toca, así que son díficiles de pulsar. Ademas, algunos elementos de una aplicación convencional web simplemente no funcionan en un navegador móvil, como los elementos redimensionables o los editores de texto rico. Y queremos una experiencia móvil completa pudiendo usar gestos para manejar nuestra aplicación o ver los efectos visuales típicos de una aplicación nativa.
Por supuesto, con la tecnología web actual (es decir, con HTML5) podemos crear aplicaciones web que parecen aplicaciones nativas móviles y se comportan como tales. Es cierto que una aplicación web pura no puede acceder a algunas características de los dispositivos como el acelerómetro, la cámara o la brújula, pero la mayoría de las aplicaciones empresariales no las necesitan y con el tiempo estas características también estarán disponibles para las aplicaciones web puras (de hecho, algunas ya lo están). También es cierto que las aplicaciones nativas puedes trabajar desconectadas, pero la mayoría de las aplicaciones empresariales necesitan conectarse a las bases de datos corporativas para trabajar con datos frescos, por tanto trabajar desconectado no es útil de todas formas. Además, podemos crear aplicaciones desconectadas (offline) con HTML5 si fuera necesario.
Crear aplicaciones web móviles nos permite usar nuestra actual infraestructura y desarrolladores. Sin embargo, no es tan fácil, porque tenemos que reescribir la interfaz de usuario de nuestra aplicación completamente y después hemos de manterner ambas interfaces, la de escritorio y la de móviles. ¿Cómo podemos evitar este problema?
Generación automática de la interfaz de usuario
No escribas la interfaz de usuario, sino genérala automáticamente. Esta es una manera de tener nuestras aplicaciones de empresa para escritorio y para móviles con muy poco esfuerzo. Quizás pienses que la generación automática de interfaces gráficos no da buen resultado, pero ya tenemos desde hace algún tiempo entre nosotros marcos de trabajo que generan la interfaz de usuario automáticamente con gran satisfacción para los programadores y usuarios.
Por ejemplo, usando el marco de trabajo
OpenXava puedes escribir una clase del dominio
Producto.java únicamente con la estructura de datos y la lógica de negocio, sin código relacionado con la interfaz de usuario. Y desde esto generar la siguiente aplicación para un navegador de escritorio:
Y la siguiente para un móvil (en este caso añadiendo una extensión a OpenXava llamada
XavaPhone):
Y todo esto escribiendo una única clase Java.
Conclusión
Mueve tus aplicaciones al mundo móvil usando aplicaciones web y considera usar una herramienta que genere la interfaz de usuario automáticamente, como
OpenXava, para genera multiples interfaces de usuario.
Reader Comments (1)
un aplauso para Javier, que bien hiciste la propaganda!!