Versiones y ediciones de Java.
¡Saludos! Después de un largo tiempo en que he dejado de escribir para dcodingames, regreso a la carga con este post sobre algo muy básico pero esencial: las versiones y distribuciones de Java. Es muy común que al iniciar a programar no te preguntes el porqué del lenguaje a aprender, o incluso desconozcas sobre versiones y distribuciones. Pero conforme vas madurando como programador, es muy importante que te adentres a este tema y sepas decidir en un momento dado que tipo de distribución java vas a utilizar para desarrollar un proyecto.
Un poco de historia.
Curiosamente, el lenguaje de programación Java no fue creado para la programación de microcomputadoras, sino para los que en los 90s denominaban dispositivos electrónicos de consumo inteligente, lo que en nuestros tiempos corresponde a productos que forman parte del IoT (Internet of Things).
Todo comenzó cuando la empresa Sun Microsystems financió un proyecto de investigación denominado proyecto Green, en 1991. Este proyecto tenía como objetivo la construcción de un dispositivo semejante a un control remoto que pretendía controlar absolutamente todos los dispositivos electrónicos de un hogar, como la TV y el teléfono. Se buscaba venderlo a las compañías de televisión por cable, pero estas compañías aún no estaban listas para este tipo de tecnologías. Puedes leer más sobre la historia de Java aquí.
Una de los principales obstáculos del proyecto Green era el lenguaje de programación y las herramientas para el desarrollo del software, debido a que se buscaba un lenguaje que fuera capaz de correr en diversas plataformas y dispositivos. Por ello se le encargó a James Gosling, Mike Sheridan y a Patrick Naughton, esa “parte” del proyecto.
Gosling creó un lenguaje de programación basándose en los fundamentos de C y C++; y decidió llamarlo Oak –roble en inglés- inspirado precisamente en un roble que podía ver todos los días desde la ventana de su oficina en Sun. Posteriormente se le tuvo que cambiar de nombre debido a que ya existía un lenguaje de programación llamado Oak. Al visitar una cafetería, alguien de los participantes del proyecto Green sugirió llamar al lenguaje Java, un término con el que también se conoce al café en el idioma inglés.
Aunque el proyecto Green fue cancelado, en 1993 la World Wide Web creció en popularidad y los desarrolladores de Green detectaron el potencial que el lenguaje Java podía ofrecer para generar páginas web con contenido dinámico.
De esta forma, el 23 de mayo de 1995 Java fue presentado oficialmente en la conferencia, para en 1996 lanzar la primera implementación pública de Java 1.0, a través de su Java Development Kit o JDK.
Versiones de un software.
La versión de un software es un número, código o nombre que su indica el nivel de desarrollo. Por ejemplo, al hablar de Windows Vista, Windows XP, Windows 7 o Windows 10 se hace referencia a un software, en este caso Windows, y su nivel de desarrollo. Nota como el desarrollador puede decidir entre usar un nombre – como en Vista -, un código –XP- o un número -7, 8, o 10. Si quieres saber más sobre el versionado de software, puedes hacer click aquí.
Versiones de Java.
El lenguaje Java ha atravesado una serie de cambios desde la liberación de su JDK 1.0 Cada versión diferente le ha adicionado un conjunto numeroso de clases y paquetes a la librería estándar. En 1997, Sun Microsystems intentó formalizar Java acercándose a los estándares ISO/IEC JTC 1 y al Ecma International, sin éxito. Por lo que el estándar de facto es controlado a través de la Java Community Process.
A continuación, puedes ver una línea de tiempo de las versiones de Java. Si requieres información más detallada sobre la historia de Java, puedes hacer click aquí.

Ediciones de Java
A diferencia de una versión, una edición no implica una mejoría con respecto a una edición anterior, sino más bien, un conjunto de características que se agregan a lo que se conoce como la edición o distribución estándar. Están dirigidas a apoyar a los desarrolladores en áreas de una especialización específica.
A partir de 1998, Sun Microsystems, además de presentar la versión Java 2, hace distinciones entre la plataforma base –JDK- con las ediciones orientadas al desarrollo de proyectos empresariales con la J2EE y dispositivos móviles como J2ME.
Así como la plataforma estándar ha cambiado de nombre -JDK, J2SE, Java SE- a través del tiempo, también las ediciones han sido renombradas. Sin embargo, a la fecha, las ediciones de Java vigentes son las siguientes:
- Java SE
- Java EE
- Java ME
- Java FX
- Java Card
Java EE representa la edición más completa, pues se compone de paquetes y clases que permiten crear software para servidores y entornos empresariales. Las demás ediciones son un subconjunto de la J2EE. Esto se muestra en la siguiente figura:

Como lo mencioné, cada edición proporciona paquetes y clases para desarrollar software que se ejecutará en diversos dispositivos.
Java SE
La Java Platform, Standard Edition permite el desarrollo de aplicaciones de escritorio y servidores. Básicamente, es la edición estándar por el que todo aprendiz inicia. Además, es obligatorio tenerla instalada si quieres utilizar las demás ediciones.
Los productos que pertenecen a esta plataforma son:
- Java SE Runtime Environment o JRE: es el entorno de ejecución del lenguaje Java, también se puede ver como un conjunto de utilidades que permiten la ejecución de programas Java. JRE incluye la JVM, Java Virtual Machine o Máquina Virtual de Java, Java Plug-in que permite que las applets puedan correr en los navegadores más populares, y Java Web Start que ejecuta aplicaciones independientes a través de una red.
- Java Development Kit o JDK: es el Kit de Desarrollo de Java, el cual proporciona las herramientas necesarias para la creación de programas en el lenguaje Java.
- Java SE API: la API es la Application Programming Interface o Interfaz de programación de Aplicaciones. Ésta indica la forma en la que los programadores pueden utilizar las bibliotecas de clases compiladas de la Java SE. La API se compone de tecnologías centrales, de escritorio o cliente, y otras tecnologías:
- Las tecnologías centrales proporcionan la funcionalidad esencial para construir aplicaciones poderosas en áreas como bases de datos, seguridad, y comunicaciones.
- Los componentes de escritorio añaden un conjunto de características para ayudar al desarrollo de aplicaciones que proporcionan una mejor experiencia al usuario.
La figura 3 muestra los componentes que integran la Java SE.

Java EE
La Java Platform Enterprise Edition permite desarrollar y ejecutar aplicaciones para el entorno empresarial. Ofrece una plataforma rica para el desarrollo de software para las empresas con cerca de 20 implementaciones a elegir. Java EE consiste de 28 especificaciones y un ambiente de ejecución.
Una definición más formal la podemos encontrar en DZone, y es la siguiente:
Dzone: https://dzone.com/articles/java-ee-basics
Java EE es una plataforma que define las ‘especificaciones estándar / API’s que luego son implementadas por los proveedores y se utilizan para el desarrollo de aplicaciones empresariales (distribuidas, multicapas, robustas). Estas aplicaciones están compuestas de módulos o ‘componentes’ que usan ‘contenedores’ de Java EE como su infraestructura de tiempo de ejecución.
El surgimiento de JEE se dio en mayo de 1998 con el lanzamiento del JPE (Java Professional Edition) Project. Posteriormente se le fueron agregando una mezcla de diversas tecnologías como Servlets, y EJB. La figura 4 muestra la historia de JEE.

Al igual que Java SE, EE se basa en especificaciones o APIs, como Enterprise Java Beans (EJB), Java Persistence API (JPA), y Java Message Service (JMS), entre otras. Estas especificaciones son ejecutadas por diversos proveedores, como pueden ser GlassFish, Oracle Weblogic o Apache TomEE.
Las aplicaciones JEE se construyen a partir de componentes.
Un componente Java EE es una unidad de software funcional autónoma que se ensambla en una aplicación Java EE con sus clases y archivos relacionados y se comunica con otros componentes.
http://pawlan.com/monica/articles/j2eearch/#appl
Los componentes Java EE son los siguientes:
- Componentes de cliente: los clientes de aplicación y los applets
- Componentes Web: los componentes de la tecnología Java Servlet y Java Server Pages (JSP).
- Componentes empresariales: los componentes Enterprise JavaBeans o EJB.
En esencia una aplicación JEE es una aplicación que se escribe en lenguaje Java, pero en la que se revisa que los componentes EE cumplan con estas especificaciones y se implementen y administren en el servidor EE,
Java ME
La Java Plattform Micro Edition o Java ME proporciona un ambiente robusto y flexible para aplicaciones que se ejecutan en dispositivos móviles. [Java ME – Oracle]
Los dispositivos móviles para los que fue diseñada esta edición de Java incluyen productos de consumo como teléfonos celulares, PDAs, o tablets. Pero además, a otros dispositivos especializados como sensores y microcontroladores, entre otros más que se utilizan en el Internet de las cosas.
Por ello, Java ME incluye interfaces de usuario flexibles, seguridad robusta, protocolos integrados de redes e incluso soporte para aplicaciones que se ejecutan off-line. Además tiene la ventaja de crear aplicaciones portables entre muchos dispositivos, además de ofrecer acceso a las capacidades propias de cada uno de ellos.
Como se puede apreciar en la figura 5, Java ME es un subconjunto de la plataforma Java.

La arquitectura de Java ME se compone de 3 capas:
- La máquina virtual
- Una configuración: que es un conjunto mínimo de bibliotecas de clase que proporcionan funcionalidad básica a un rango de dispositivos específicos. Existen dos configuraciones: CLDC (Connected Limited Device Configuration) y la CDC (Connected Device Configuration)
- Y un perfil, que es una extensión de la configuración dirigida a satisfacer las necesidades específicas de una familia de dispositivos.
Java FX
JavaFX no es una edición de Java, sino una familia de tecnologías para la creación de RIAs (Rich Internet Applications) o Aplicación de Internet Enriquecida.
La familia de tecnologías que incluye la denominación JavaFX son Java FX Script y Java FX Mobile, entre otros productos.
Básicamente Sun Microsystems buscó competir con Flash y Silverlight cuando FX fue liberado en diciembre del 2008.
En la figura 6 te muestro la arquitectura clásica de JavaFX, acorde a la especificación definida por Oracle.

Actualmente JavaFX se ha mudado al proyecto OpenJFX, como un proyecto open source para ser usado con el JDK.
Java Card
Por último, pero no menos importante, tenemos a la edición Java Card, la cual se diseñó para ejecutar applets en smart cards y otros dispositivos embebidos.
La arquitectura de Java Card se muestra en la figura 7, conforme se explica en los documentos oficiales de Oracle.

Como en otras ediciones de Java, la base es una máquina virtual. Además, el kit de desarrollo incluye Java Card JRE que permite simular la ejecución de las applets como se ejecutarían en una smart card.
Sun Microsystems Inc. anunció la especificación de Java Card el 29 de octubre de 1996, y en tan sólo poco más de 10 años se convirtió en el estándar más usado para la programación de tarjetas inteligentes.

Con esto concluyo con la información básica sobre las versiones y ediciones del lenguaje Java.
Si consideras que este artículo te fue útil, compártelo en tus redes sociales. Y si tienes alguna duda sobre el tema, no dudes en dejar tu comentario y/o pregunta.
¡Hasta la próxima!