java Descripción de J2ME - Origen y evolución
Versión: 2.0, Septiembre, 2006

Juan Manuel Fernández Luna
Web: http://decsai.ugr.es/~jmfluna, Mail: jmfluna@decsai.ugr.es
IndiceInicioPerl

(C) Decsai
Web: http://decsai.ugr.es

Java comenzó su andadura como lenguaje de programación a mediados de la década de los noventa del siglo pasado. Originalmente fue concebido como un lenguaje para poder programar un amplio rango de aparatos electrónicos con capacidades de conectividad a partir de otro dispositivo del tipo de un asistente personal digital.  El espíritu inicial era realizar una adaptación de C++, tomando lo mejor de él y a la vez mejorándolo y que se adecuara a las restrictivas condiciones ofrecidas por los chips de los aparatos a programar, teniendo como principales objetivos la fiabilidad y la seguridad. Además, se intentaba que una vez que fuera desarrollado el programa, éste se pudiera ejecutar en varios tipos diferentes de aparatos sin necesidad de volver a compilarlo.

 Con la llegada de Internet y los primeros navegadores para la World Wide Web, los desarrolladores de Java se dieron cuenta de su aplicabilidad a este nuevo medio, naciendo así la tecnología de los applets de Java, que permite, de nuevo, poder desarrollar una aplicación una única vez y ejecutarla tantas veces cómo se desee en un conjunto heterogéneo de ordenadores conectados a la Red.

Así, en Mayo de 1995 Sun lanzó oficialmente Java al mercado con el Java Development Kit (JDK) en su versión 1.02., es decir, un entorno de desarrollo y una implementación del lenguaje Java.  Este JDK fue ampliado  y mejorado (se subsanaron algunos problemas), dando lugar a la versión 1.1. De ahí se pasó a la siguiente, el SDK 1.2 (Software Development Kit), la cual, entre otras muchas características, incluía una colección nueva de clases y elementos para el diseño de interfaces gráficos. Surgieron seguidamente la versión, SDK 1.3 y, finalmente y actual, el SDK 1.4.

Cabe destacar en este punto la distinción entre la plataforma Java y las diferentes versiones JDK y SDK. El primero se refiere al lenguaje abstracto y a la especificación del mismo. Los segundos son, como ya hemos dicho, implementaciones que ha realizado Sun, así como un conjunto de herramientas que ofrece esta empresa para facilitar el desarrollo de aplicaciones.  Si nos fijamos en la plataforma, sólo ha habido dos versiones principales Java 1 y Java 2.  La segunda se introdujo coincidiendo con la llegada de el SDK 1.2.

Y finalmente, ya en 1999, se vuelve a cerrar el ciclo que lleva a Sun a desarrollar una versión de Java especialmente diseñada para dispositivos móviles: Java 2 Micro Edition, basada en una máquina virtual llamada KVM.  Este primera versión sólo contenía una única máquina virtual y un único API (inicialmente diseñados para Palm OS), hecho que puso de manifiesto la insuficiencia de esta solución para la gran variedad de dispositivos diferentes. De esta forma, en el año 2000, nació la primera versión de una configuración, es decir, el Connected Limited Device Configuration (J2ME CLDC 1.0).  Una configuración ofrece el API básico para programar dispositivos, aunque no aporta todas las clases necesarias para desarrollar una aplicación completa.  Por tanto, la primera configuración no tenía las herramientas necesarias para permitir a los desarrolladores escribir programas para el dispositivo Palm.  En julio de 2000 nació la primera implementación de un perfil, concretamente el llamado Mobile Information Device Profile (MIDP), aunque no estaba destinado a PDAs sino a teléfonos móviles y a paginadores.  A partir de este primer perfil, J2ME fue considerablemente aceptado por la comunidad de desarrolladores de dispositivos móviles, expandiéndose a una gran velocidad hasta nuestros días.

Por tanto, actualmente, la versión 2 de Java de Sun Microsystem contiene tres ediciones distintas:

En la siguiente ilustración podemos ver gráficamente la relación entre cada una de las ediciones de Java y los tipos de dispositivos con que se podrían programar:

Ediciones de Java 2 y dispositivos.


Algunas diferencias que ofrece J2ME con respecto a J2EE, directamente derivadas de las condiciones en las que se va a hacer uso de esta edición, son las siguientes