Paleomovilidad Parte 2

Paleomovilidad Parte 2

Ya tuve la oportunidad de comentaros un poco como fueron los primeros tiempos del desarrollo software para dispositivos móviles anteriores a los que ahora manejamos en la entrada titulada “Paleomobilidad Parte 1”. Ahí comentaba las tecnologías que se decidieron utilizar para poder ir permitiendo que cada vez pudiesen ser de más utilidad al usuario más allá de simplemente comunicarse por voz o mensajes.

Ya solo faltaba, por parte de los desarrolladores, estudiar como poder explotar al máximo esas nuevas tecnologías para sacarle el mayor provecho a los nuevos prodigios tecnológicos que iban apareciendo en el mercado.

Para poder escribir los programas iban surgiendo diferentes herramientas aunque las de siempre, estilo IDE, seguían siendo las más útiles y desarrolladas debido a su ya prolongada implantación para Java y otros lenguajes. A pesar de Jbuilder y NetBeans, el que empezó a ser más utilizado en general por la comunidad fue Eclipse con el Java ME SDK instalado.

También aparecieron las J2ME Wireless Toolkit de Sun Microsystems, para facilitar tareas de testeo con su gama de emuladores, optimización y personalización para diferentes dispositivos.

Aquí una foto de familia del Mobile Devices Department, equipo con el que trabajé en GexTech (De izquierda a derecha: Arriba: Rómulo, Fabián, Xeleh -el jefe-, Parra, Chaky, Isra, Más Abajo: Pako, yo y Toni):

El resultado de desarrollar con estas herramientas, una vez depurado el código, se sometía a otras herramientas de composición y linkado surgidas para poder aprovechar lo más posible un código común para un número cada vez más creciente y dispar de dispositivos.
Estas herramientas, una vez configuradas, permitían automatizar la consecución de código ejecutable para un celular en concreto o una familia de ellos, según se solicitase, seleccionando el código fuente adecuado gracias a un ingenioso sistema de etiquetas y compilándolo y linkándolo con las librerías necesarias y los recursos adaptados a esas capacidades del dispositivo, tipo gráficos o audios, sacados de repositorios preparados para tal efecto.

Solían ser del estilo a la tecnología Antenna basadas en bloques de decisión escritos en XML.

Para mi gusto, la mejor solución de aquel entonces fue J2ME Polish por como supo entender las dificultades de aquel tipo de desarrollos en porting y como facilitó las cosas a los desarrolladores en la medida que los tiempos y la tecnología de entonces lo permitía.

Gracias a estas herramientas se pudo conseguir que desarrollar para aquellos incipientes precursores de los smartphones actuales fuese algo menos complicado y no solo posible sino también competitivo para fines comerciales.

Paleomovilidad Parte 1

Paleomovilidad Parte 1

Corría finales de 2004 cuando comencé con el desarrollo móvil y estaba en pleno “boom” la descarga de juegos en los dispositivos móviles programables del momento.
La fiebre de los “politonos” ya había situado a los cada vez más cuantiosos usuarios de teléfonos móviles a la expectativa de cual sería la siguiente evolución de aquellos maravillosos cacharros cada vez más útiles y pequeños.

Hasta ese momento el entretenimiento y las utilidades incorporadas en esos aparatos estaban integrados de fábrica y escritos en código máquina en las memorias ROM.

Desde entonces, por un módico precio podías tener, por primera vez, varios juegos de tu elección instalados y jugar en tus tiempos muertos o cuando quisieras sin tener que esperar a llegar a tu casa y encender el ordenador o la consola.

Incluso las consolas portátiles tipo Game Boy se vieron superadas debido a su menor autonomía y mayor tamaño y precio, tanto del dispositivo como de los juegos, que además empezaron a tener menor oferta en sus catálogos, ya que el desarrollo de juegos para móviles y por tanto de la creación de empresas desarrolladas se disparaba exponencialmente y necesitaban cada vez más programadores, donde vi una muy buena oportunidad de incorporación al mercado laboral y además en un sector novedoso. Aquí aprovecho para tener un recuerdo al primer equipo con el que trabajé en European Software (De derecha a izquierda: MariCarmen, Iñigo, Bienve, Vania -el jefe- y yo):

Esta proliferación de empresas desarrolladoras de la que hablaba la impulsaba la gran demanda de las operadoras que necesitaban ofrecer cada vez más títulos, ya que para el usuario era, como he dicho, un precio muy asequible, pero multiplicado por la masa creciente de usuarios, las ganancias repentinas para estas compañías no tenía precedentes.

Pero todo esto necesitaba una base tecnológica sobre la que realizarse y funcionar.
Se había decidido poco tiempo antes utilizar mayoritariamente el lenguaje Java, que por aquel entonces iba de la mano de Sun Microsystems, aunque se lanzaron varias otras opciones como ExEn, Mophun o WGE y algunas perduraron paralelamente bastante en el tiempo y en ciertas regiones, como fue el caso de Brew basado en C, muy distribuido en los Estados Unidos, o Symbian auspiciado por Nokia que, aunque acabó conviviendo con Java, ofrecía la opción de instalar juegos únicos para este sistema operativo.

No tardó en imponerse Java en todo el mundo ya que era de los lenguajes más modernos de la época y por tanto no solo incorporaba todo lo más nuevo, como orientación a objetos y muy buen control de excepciones, sino que había aprendido de los errores de lenguajes de programación antecesores, por eso Java enmascara entonces el uso de punteros, cuenta con recuperador automático de memoria utilizada en desuso o “garbage collector” y se puede compilar en su famoso “bytecode”, que traía la novedad de ser independiente a la plataforma en la que se quisiera poner a funcionar, lo que era muy útil en un escenario de total falta de consenso entre fabricantes.

La adopción de Java y su adaptación a toda clase de plataformas hizo que los fabricantes vieran la posibilidad de utilizar un estándar sin impacto en sus procesos de fabricación. Por aquel entonces justo me encontraba inmerso en la programación en Java ya que fue un lenguaje que me enamoró desde mi primer contacto por el en la facultad de Informática por su evolución con respecto a otros lenguajes, así que en cuanto supe que los nuevos dispositivos eran por fin programables me lancé a ese sector.

El único problema que existía es que, a pesar de la rápida evolución de los móviles, aún eran muy carentes de capacidades de almacenamiento, memoria y procesamiento.
Este “bytecode” en el que se convertían los juegos y aplicaciones, por su capacidad multiplataforma, necesita para ser entendido con cada procesador dentro de cada tipo de móvil lo que se llama una JVM o máquina virtual que es la que adapta el software al hardware.
Esta JVM era demasiado extensa y sofisticada para poder ser introducida en aquellos primeros modelos que pretendían ejecutar Java, por lo que se les instaló una versión reducida denominada KVM.
La KVM, obligaba a renunciar a muchas funcionalidades ofrecidas por la JVM y por tanto de Java, pero se estudió muy bien a que se renunciaría y se consiguió sacar un subconjunto funcional y útil de Java denominado J2ME (Java2 Mobile Edition) que si podía correr sobre la KVM y dar el servicio adecuado, a pesar de su limitado acceso a bases de datos y capacidades gráficas, por ejemplo.

Junto a sus configuraciones CLDC de características y librerías básicas (Entrada/Salida, Red, Seguridad, operaciones en punto flotante…) y los perfiles MIDP que se fueron sucediendo (control de tamaño de pantalla, sonidos o de potencia de la batería) se pudo especificar y mejorar el uso de Java como soporte para posibilitar la instalación de software en dispositivos móviles como solo se había visto antes en ordenadores personales.

Se solucionó la falta de cobertura por parte de J2ME para algunas funcionalidades de entonces, como el control del Bluetooth, y añadidas a posteriori, como la vibración o el wi-fi, con la incorporación de librerías de código especificas para cada uso, que debían cumplir los protocolos JSR y que el programador añadía según las iba necesitando.
También existieron librerías propietarias de varios fabricantes para cubrir extras específicos que incorporaban algunos de sus dispositivos como podían ser segunda pantalla exterior o luces en los laterales, etc.

Una variante de mucho peso en Japón fue DoJa desarrollada por DoCoMo, que estaba basado en las especificaciones de J2ME.

La irrupción del iPhone en el mercado de la mano de Apple en 2007 y muy poco después del Android de Google y los smartphones arrasaron con todo lo anterior, en un momento en el que ya eran muy evidentes las carencias de J2ME para los nuevos tiempos. A partir de aquí la historia ya es conocida por todos 🙂