Universitat Oberta de Catalunya

Flash Lite: estado actual y perspectivas de futuro

Actualmente es raro encontrar a alguien que no tenga teléfono móvil, en concreto de los considerados “multimedia”. La expansión de la telefonía móvil ha puesto terminales con capacidades de proceso más que suficientes para ejecutar aplicaciones complejas al alcance de casi cualquier bolsillo, lo que ha su vez ha generado una demanda creciente de aplicaciones y servicios específicos para esa plataforma. Pero, ¿cómo se puede convertir esa omnipresencia de terminales en una fuente de negocio?, ¿con qué herramientas contamos para desarrollar aplicaciones para dispositivos móviles? Y sobre todo, ¿qué tiene que ver Flash con todo esto? Veámoslo.

Actualmente, el desarrollo de aplicaciones para dispositivos móviles, olvidándonos del mundo Windows Mobile, está basado en tres grandes plataformas: C++, J2ME, y Flash Lite. Obviamente, cada una de ellas tiene sus ventajas e inconvenientes, que, resumidos, son los siguientes:

C++

El lenguaje de programación por excelencia para aplicaciones que necesitan extraer el máximo del terminal, tanto en capacidad de procesamiento y por lo tanto en velocidad de ejecución, como en utilizar las posibilidades de hardware que ofrezca el dispositivo. El ejemplo más claro de aplicación candidata a ser realizada en C++ sería un juego de conducción, con capacidades multiusuario a través de bluetooth.

Sus inconvenientes vienen dados por el propio lenguaje, que probablemente sea el más potente pero el más complicado para casi cualquier programador. Hacen falta, por tanto, programadores de un perfil muy especializado o muy alto, y el lenguaje en sí no hace posible el desarrollo de aplicaciones con gran rapidez, con lo que los proyectos desarrollados en C++ suelen ser caros.

J2ME

En términos generales, se puede decir que es el gallo del corral. El número de aplicaciones desarrolladas en J2ME es enorme, el lenguaje cuenta con el respaldo incondicional de SUN, y se ha convertido en el estándar de facto en el desarrollo de aplicaciones para móviles. Básicamente, es un subconjunto de J2EE, por lo que casi cualquier desarrollador Java puede ponerse a programar para móviles tras un breve periodo de adaptación al medio.

Sin embargo, como sucede en general con todas las tecnologías basadas en Java, no es oro todo lo que reluce. Es casi imposible escribir un programa en J2ME con unas garantías mínimas de que vaya a poder funcionar en un amplio abanico de dispositivos, sobre todo cuando se intenta utilizar alguna de las APIs que permiten acceder al hardware del teléfono (bluetooth, 3D, etc), tal es la jungla de perfiles y configuraciones disponibles. Además, el proceso de desarrollo replica alguno de los vicios del desarrollo J2EE, como la tendencia a excederse en la arquitectura, o a complicar algunos procesos.

Flash Lite 1.1

El recién llegado, el vecino nuevo. Sin lugar a dudas FlashLite es la plataforma con menor funcionalidad de todas las enumeradas. No se puede acceder al bluetooth, no se puede implementar ningún mecanismo de persistencia de datos, no es que se ejecute a velocidades de vértigo, y además, el lenguaje de programación es el ActionScript que se empaquetó con Flash 4, lo que convierte el proceso de desarrollo de aplicaciones de tamaño medio, por decirlo suavemente, en un infierno.

Pero precisamente, sus limitaciones son su gran arma. El proceso de desarrollo es mucho más sencillo y rápido que para cualquiera de las otras plataformas, de forma que se pueden construir aplicaciones sencillas en tiempos realmente cortos, y con resultados gráficos difícilmente alcanzables por sus competidores. Además, no hay que preocuparse de perfiles o configuraciones. Lo que se desarrolla una vez sirve para todos los dispositivos que soporten Flash Lite (con la única precaución de prever que no todas las pantallas tienen el mismo tamaño).

No basta con querer desarrollar aplicaciones para dispositivos móviles. No es suficiente porque hay que tener en cuenta que un teléfono móvil no es un ordenador, aunque pueda funcionar como tal. Y no es un ordenador sobre todo por dos aspectos, que son precisamente las limitaciones fundamentales a tener en cuenta cuando se desarrollan aplicaciones para estos dispositivos: la memoria y la capacidad de proceso limitadas.

La memoria de los dispositivos móviles suele ser bastante escasa. Aunque los terminales multimedia de gama alta, como los teléfonos Nokia que corren el sistema operativo Symbian Series 60 Second Edition, pueden implementar de serie hasta 16 MB de RAM, lo normal es que haya teléfonos con tan sólo 4Kb de memoria. En lo que al desarrollo en Flash Lite se refiere, probablemente ésta sea la limitación menos importante, ya que es el player de Flash el que se encarga de manejar el uso de la memoria por parte de los swf que se ejecutan en él, pero en todo caso es algo que debe tenerse en cuenta.

La potencia de proceso, o mejor dicho, la escasa capacidad de proceso de estos dispositivos sí puede resultar un problema de complicada solución. Lo que en un PC funciona sin ningún problema, puede resultar totalmente inutilizable en un teléfono. Por tanto, hay que ser muy cuidadoso con la cantidad de elementos a presentar en pantalla a la vez, y hay que ser muy cuidadoso con la forma en que se maneja la presentación de dichos elementos, instanciando sólo lo que sea estrictamente necesario.

Pero también hay otras limitaciones que se deben tener en cuenta, y que ya no vienen motivadas por la “fuerza bruta” con la que procese el teléfono, sino que vienen dadas por las condiciones de utilización de la propia plataforma. Dicho de otra forma, los botones son pequeños, la pantalla es pequeña, y por si fuera poco, intentamos utilizarlo con una sola mano, bajo la luz solar directa, y en movimiento. Por tanto, el interfaz tiene que ser muy sencillo, a ser posible limitando al mínimo imprescindible las entradas de datos alfanuméricas, y con elementos grandes y visibles. Casi nada.

Por si fuera poco, el precio de las conexiones GPRS es desorbitado, más aún el de las conexiones 3G, por lo que hay que ser muy cautos a la hora de utilizar la conectividad del teléfono.

Aún así, pese a todas las limitaciones, se han visto ya algunas aplicaciones para Flash Lite francamente ingeniosas. Probablemente, en el caso de los móviles, más que en ningún otro, lo que más falta hace es tener una buena idea. Eso sí, a la hora de llevarla a la práctica está bien conocer las herramientas con las que se cuenta.

En principio, la herramienta principal para el desarrollo de aplicaciones para Flash Lite es el propio Macromedia Flash, que en su última versión, que hace ya la número 8, incluye un emulador que permite testear el contenido desarrollado contra una amplia variedad de dispositivos (en realidad, contra todos los dispositivos que soportan Flash Lite). Además, el emulador permite filtrar los dispositivos según el tipo de aplicación a desarrollar, es decir, que si se está implementando, por ejemplo, un salvapantallas, dicho salvapantallas se puede probar sólo en los teléfonos que soporten dicha funcionalidad. También, el nuevo Fireworks 8 incluye elementos de interfaz que pueden ser directamente utilizados en aplicaciones Flash Lite, así como procesos de optimización específicos para dispositivos móviles.

Mobile Emulator de Flash

Mobile Emulator de Flash

Lamentablemente, el disponer de un potente emulador no es suficiente para compensar el hecho de que Flash Lite soporta ActionScript 1.0 con la sintaxis y las limitaciones de Flash 4. Por tanto, antes de ponerse a programar, hay que hacer un doloroso ejercicio de vuelta atrás en el tiempo, y recuperar una sintaxis que casi cualquier desarrollador ActionScript debería haber abandonado hace tiempo, así como unas metodologías de desarrollo que tampoco deberían ser muy utilizadas en la actualidad.

Por tanto, volverá el código en botones, el uso masivo de código en movieclips, la descentralización del código, prácticas todas ellas que no son malas por sí mismas, ya que en parte permiten hacer que el tiempo de desarrollo sea mucho menor, pero que, a la vez, impiden construir aplicaciones grandes.

No hay que olvidar que la explosión de Flash como plataforma de desarrollo se ha producido entre las versiones 6 y 7 del mismo, por lo que un gran porcentaje de los programadores que trabajan con ActionScript en la actualidad nunca trabajaron con Flash 4, por lo que el cambio de mentalidad que tienen que realizar puede resultar traumático para ellos. Pero es que, además, no se puede aprovechar todo lo bueno que trae consigo la programación orientada a objetos (reusabilidad de código, y organización del mismo en entidades de funcionalidad concreta, sobre todo), por lo que cualquier proyecto de un tamaño medio se puede convertir en algo muy difícil de desarrollar y mantener.

Bueno, pero si todo es malo (no se puede programar orientado a objetos, el lenguaje es obsoleto, la performance no es muy buena, y hay un “factor vudú” considerable) ¿por qué estamos hablando de Flash Lite? Sencillo, porque para muchas cosas sigue siendo la solución más rápida, con los tiempos de desarrollo más cortos, y con el mejor resultado visual, como ya comenté con anterioridad. Por eso, Flash Lite es la herramienta perfecta para aplicaciones con funcionalidades sencillas como por ejemplo relojes, salvapantallas, o microjuegos.

Los más viejos del lugar probablemente recuerden cómo se decía lo mismo de Flash hace un par de años, cómo para muchos sólo era una herramienta para hacer animaciones y alguna cosita más, y parecía impensable que se pudiera plantear el realizar aplicaciones de la complejidad de las que se realizan hoy en día, fuertemente datacéntricas, desarrolladas siguiendo los paradigmas de orientación a objetos, implementando patrones de diseño y utilizando las últimas metodologías de desarrollo.

Pues eso es precisamente lo que va a suceder en un futuro próximo con Flash Lite. ¿Por qué? Porque Flash Lite 2.0 está en camino. ¿Y eso qué implicaciones puede tener? Veámoslo con más detalle.

La principal novedad de Flash Lite 2.0 es que soporta ActionScript 2.0. Se acabó la sintaxis de barra, se acabó tellTarget( ), se acabó el código desperdigado por incontables símbolos gráficos, se acabó la vinculación brutal entre lógica de la aplicación e interfaz de la misma. Y todo eso se acabó porque con el ActionScript 2.0 llega no sólo un lenguaje nuevo, sino una metodología de desarrollo nueva (en comparación con la utilizada en Flash Lite 1.1). Aplicaciones dirigidas por eventos, separación entre interfaz y lógica de negocio, programación orientada a objetos… Comparado con el estado actual de la plataforma, es como pasar del purgatorio al cielo en un segundo.

Pero no se vayan todavía, aún hay más. Con Flash Lite 2.0 también se incluyen dos novedades de capital importancia. Por un lado, se da soporte a la carga y posterior tratamiento de archivos XML, algo que actualmente no está soportado (en Flash Lite 1.1 todos los datos a cargar deben estar url-encoded y la carga se debe realizar a través de loadMovie), con lo cual se abre un fabuloso mundo de nuevas posibilidades, que aún están pendientes de confirmar, pero que permiten al desarrollador soñar, con la información de la que se dispone actualmente, con integración con servicios web, sockets a aplicaciones J2ME que estén corriendo en el teléfono (y que de esa forma permitan al player de Flash acceder al hardware bluetooth, por ejemplo) y acercan el viejo sueño de poder desarrollar interfaces para aplicaciones web que puedan ser ejecutados tanto en un navegador en un PC de sobremesa como en un dispositivo móvil con cambios mínimos.

Pero es que aún hay más. La tercera gran novedad de Flash Lite 2.0 es que por fin, existe la posibilidad de tener datos persistentes en el dispositivo, lo que permitirá volcar a la memoria del teléfono estructuras de datos que podrán ser recuperadas en posteriores sesiones de la misma aplicación.

Y eso no es todo. También se podrán cargar imágenes y sonidos en tiempo de ejecución, desde el dispositivo o desde la red (aunque esta segunda opción, como ya hemos visto con anterioridad puede ser prohibitiva). Y también se podrán reproducir vídeos, delegando dicha reproducción en el hardware del dispositivo, y permitiendo que esos vídeos también puedan ser cargados en tiempo de ejecución.

Y todas estas novedades estarán disponibles, según parece, en el primer trimestre del próximo año.

Por tanto, si el presente de Flash Lite ilusiona, el futuro cercano es más que prometedor. La tecnología está a punto de dar un salto cualitativo importantísimo, y va a pasar de ser una plataforma ideal para realizar animaciones, microjuegos, y pequeñas aplicaciones, a un serio competidor de la tecnología más extendida y utilizada a la hora de desarrollar aplicaciones para dispositivos móviles: J2ME. Aún habrá muchos aspectos en los que Flash Lite estará por detrás, pero en términos generales, va a ser viable el mirar a ambas tecnologías en términos de igualdad.

La sensación de estar a punto de que algo grande ocurra no es nueva. Ya la vivimos hace un par de años con el lanzamiento de Flash 7 y el ActionScript 2.0. Al igual que entonces, estamos a punto de recibir una herramienta de gran potencia. Lo que seamos capaces de hacer con ella es cosa nuestra.