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 🙂

//