EL LEGADO DE SUN AHORA DE ORACLE, EL LENGUAJE JAVA Y SU INCURSIÓN Y MUERTE EN LOS MÓVILES

J2ME

J2ME

Cuando en su momento escuche del lenguaje JAVA en 1995 jamás me hubiera imaginado que años después estaría en los móviles resolviendo arquitecturas incompatibles probadas en los electrodomésticos, sistemas operativos y en la web, pero este lenguaje de programación orientada a objeto tiene su historia.

Desarrollado por James Gosling de la empresa Sun Microsystems ( SUN = Stanford University Network) empresa  informática que se dedicaba a vender estaciones de trabajo, servidores, componentes informáticos, software (sistemas operativos) y servicios informáticos, fue comprada por Oracle en el año 2009.

Quiero rescatar que SUN se dedico a todo un poco tanto en el mundo del software como del hardware para sobrevivir  y pagar a sus desarrolladores, pero el legado de SUN y sobre todo de Gosling es el lenguaje JAVA y su arquitectura neutral, se comenzó a desarrollar a comienzos de 1990 con la premisa  de permitir ejecutar programas sin tener relativamente en cuenta el hardware final, sin volver a reescribir todo el código del programa, ni tener que recompilar un programa para un cierto procesador; lo cual se logró usando una maquina virtual llamada JVM (Java Virtual Machine) técnicamente JRE (Java Runtime Environment); este proceso es conocido en inglés como WORA, o «write once, run anywhere».

La forma en que esta JVM trabaja no dista mucho de los emuladores de consolas de hoy en día, pero utilizando técnicas «Just-in-time compilation» , que hace referencia a como tratar de interpretar el código «bytecode» que genera el compilador de Java y ejecutarlo lo más rápido posible, ya que este código no es lenguaje ensamblador y no tiene dependencias del hardware o sistema operativo.

Me quiero enfocar en unos de los 3 entornos de funcionamiento de los bytescodes generados por el compilador Java, es la especificación J2ME o conocida como Java 2 Platform, Micro Edition para ambientes móviles; se trata de un reducido uso de la API Java para entornos reducidos, precisamente los móviles de los años 90 y parte de la década del 2000 donde se produjo toda una revolución en lo que a la extensión de Java se refiere. Quisiera rescatar además que es posible encontrar microprocesadores diseñados para ejecutar bytecode Java y software Java para tarjetas inteligentes conocidas como Java Card, teléfonos móviles, buscapersonas, set-top-boxes, sintonizadores de TV y otros pequeños electrodomésticos.

Cuando nos encontramos con una aplicación java que se ejecuta en un móvil se denomina MIDlets,  en las década de los 90 el desarrollo móvil de aplicaciones java usando J2ME era a través de los que se conocía como CLDC Connected Limited Device Configuration un framework que definía un conjunto base de librerías en Java ME junto a la máquina virtual reducida para equipos móviles; usualmente funcionaba en conjunto con MIDP 1.0 o MIDP 2.0 y existieron 2 versiones la CLDC 1.0 y la CLDC 1.1.

Para la década del 2000 se utiliza la especificación MIDP de Mobile Information Device profile o MIDP (JSR 118); que viene hacer una versión de J2ME integrada en el hardware de los celulares modernos, esta fue usada por juegos y aplicaciones sobre todo para extender las capacidades del dispositivo; fue desarrollado bajo el Java Community Process, y existen tres versiones importantes MIDP 1.0 (JSR 37) lanzada en el 2000; luego vino la versión 2.0 (JSR 118) en el 2002 incompatible con la 1.0 pero esta es  quizás la más utilizada; y por último la versión 3.0 (JSR 271) en el 2009.

Juegos

Juegos

Las aplicaciones hechas con Java para móviles venían empaquetadas en un archivo con extensión «jar»; a menudo un archivo «cod» que define las ubicaciones; recuerdo que una de las empresas que supo aprovechar y exprimir al máximo las librerías J2ME fue «Gameloft» entre otras desarrolladoras importantes con sus videojuegos en varias temáticas. RIM la creadora de los teléfonos inteligentes «Blackberry» y que fue la plataforma por excelencia en el mercado corporativo de los 90 y parte de la década del 2000 baso su sistema operativo en tecnología Java, así que el desarrollo de aplicaciones es con este lenguaje de manera primaria.

La muerte de este lenguaje en el soporte J2ME en el mundo móvil dejando su legado en las aplicaciones robustas  desde mi punto de vista vino en el 2007 cuando Apple y su iPhone que venía con el sistemas iOS declaraba el no soporte a Java ni flash; hoy en día se pueden encontrar convertidores de código Java a Objective-C (este último parecido a Java en mucha de su sintaxis).

El otro suceso importante es que Google con su Android tampoco soporta Java de manera nativa pero se puede instalar la JVM conforme al estándar J2ME/JAR de Google Play, aunque lo paradójico es que Google hizo su jugada maestra al usar un modelo parecido a Java en su sistema operativo y apps con una maquina virtual llamada Dalvik sobre el núcleo de las bibliotecas de Java, C y C++ incluso el lenguaje de desarrollo primario en el SDK Android es JAVA, pero aclaro Android no soporta archivos «Jar» (aunque se pueden convertir en APK).

Les dejo un vídeo exposición sobre parte de la historia de Java y SUN:

Así que mi recomendación a los nuevos desarrolladores de app móviles es que NI se les ocurra aprender el soporte de J2ME sea CLDC o MIDP; pero si el lenguaje Java porque tiene futuro y aplicación en Android, además mucha de su sintaxis por ser parecida a C y C++ es tomada por muchos frameworks de desarrollo móvil como Corona SDK, Unity3d, JQuery Mobile, AIR con Actions Scripts 3 entre otros.

Fuente: SUN, Oracle, Wikipedia, Opinión y conocimiento personal

Leave a Reply