Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=99078bb2-6306-450a-92aa-5422ff10d5b2

Descifrando Java: lenguaje, plataforma, ediciones, implementaciones...

Que-es-Java_256El lenguaje Java se utiliza para programar aplicaciones que pueden ser ejecutadas en distintas plataformas, entre ellas las distintas ediciones de la propia plataforma Java. Esta se encuentra disponible para los sistemas operativos más extendidos, como son Microsoft Windows, Apple OS X y GNU/Linux, así como para otros con un uso más minoritario, como es el caso de Solaris.

En realidad una aplicación estándar Java, una vez compilada, puede ser ejecutada sobre cualquier sistema para el que haya disponible alguna versión del entorno de ejecución de Java, conocido como JRE (Java Runtime Environment). Asimismo, también es posible compilar para una plataforma diferente.

Es necesario distinguir claramente entre dos partes muy diferenciadas dentro de la plataforma Java:

  • JRE (Java Runtime Environment): su objeto es aportar el entorno necesario para ejecutar una aplicación Java. Forman parte del JRE la máquina virtual Java o JVM (Java Virtual Machine), encargada de ejecutar el bytecode Java, así como las bibliotecas que ofrecen los servicios definidos en la plataforma.
  • JDK (Java Development Kit): es el paquete de herramientas precisas para llevar a cabo el desarrollo de dicha aplicación.  Este JDK es un superconjunto del JRE, al que agrega herramientas como el compilador Java. Este toma el código fuente Java y genera como resultado bytecode, un formato de código objeto independiente del sistema operativo y el hardware.

La siguiente figura ilustra de manera visual la relación existente entre los diferentes componentes de la plataforma Java (pulsa para aumentar):

JRE-JDK

Tanto las herramientas aportadas por el JDK como los servicios ofrecidos por el JRE dependerán fundamentalmente de la edición de Java que esté utilizándose.

Ediciones de la plataforma Java

La configuración de una plataforma Java afecta fundamentalmente a los servicios que esta ofrece, las herramientas adicionales que incorpora y también a aspectos menos visibles, como el modo de funcionamiento de la JVM. De acuerdo a la documentación actual de Oracle podemos distinguir las siguientes cuatro plataformas Java:

  • Java SE: la conocida como Standard Edition es la edición más difundida de la plataforma Java. Incorpora los elementos necesarios para crear aplicaciones de escritorio con o sin interfaz gráfica de usuario, acceso al sistema de archivos, comunicación a través de redes, concurrencia y otros servicios básicos.

  • JavaFX: originalmente JavaFX era una alternativa a Java SE para el desarrollo de proyectos de tipo RIA (Rich Internet Applications), con un núcleo más ligero y fácil de distribuir, capacidad de aceleración 3D aprovechando la GPU, servicios avanzados para producción de gráficos y animaciones, y un mecanismo simplificado para el diseño de interfaces de usuario. JavaFX forma parte de Java SE desde la versión 7 de dicha edición de la plataforma.

  • Java EE: es la Enterprise Edition de la plataforma Java, dirigida al desarrollo de soluciones software que se ejecutarán en un servidor de aplicaciones. A las capacidades de Java SE, la edición EE agrega servicios para gestionar la persistencia de objetos en bases de datos, hacer posible la invocación remota de métodos, crear aplicaciones con interfaz de usuario web, etc.

  • Java ME: esta edición de la plataforma, Micro Edition, está enfocada a la creación de programas que se ejecutarán en sistemas con recursos limitados, tales como teléfonos móviles, electrodomésticos y dispositivos de domótica o equipos para entornos empotrados como la Rasperry Pi y similares.

Ediciones de java

Nota: Java SE, EE, ME, la JVM y otras partes de Java son en realidad especificaciones abstractas de los servicios y modos de funcionamiento de los distintos elementos de la plataforma. Encontraremos múltiples implementaciones de dichas especificaciones. Por ejemplo, HotSpot es la implementación de Oracle de la JVM, existiendo implementaciones alternativas de esa misma especificación como la de OpenJDK o la de IBM.

Por regla general, salvo que tengamos alguna necesidad más específica de desarrollo, partiremos siempre de la Java SE, procediendo después a instalar plataformas adicionales en caso de que precisemos algún servicio no disponible en la edición estándar.

Java y sistemas operativos

Para ejecutar aplicaciones desarrolladas en Java sobre un sistema operativo es necesario que exista para el mismo una implementación concreta de la plataforma.

Además de la implementación de cada plataforma procedente de Oracle, que podría considerarse la oficial o de referencia y que está disponible para múltiples sistemas, podemos encontrar otras alternativas:

  • OpenJDK, la organización respaldada por Oracle cuyo objetivo es mantener una versión de código abierto de la plataforma Java, ofrece Java SE para múltiples distribuciones de GNU/Linux.
  • Si queremos utilizar OpenJDK en otros sistemas, como Windows u OS X, podemos recurrir a Zulu.
  • IBM también ofrece su propia implementación de la plataforma Java, conocida como IBM J9, para GNU/Linux, así como para varios de sus sistemas operativos para mainframes y derivados de UNIX, como AIX y z/OS.

Nota: La implementación de Java SE de Oracle está basada en el código de OpenJDK, por lo que estas dos variantes comparten un núcleo funcionalmente idéntico.

  • Si nuestro objetivo es desarrollar para dispositivos embebidos, tales como Smart TV o dispositivos tipo Raspberry Pi, encontraremos versiones específicas de la plataforma Java para tal fin. Un ejemplo de ello son las versiones Embedded de Java SE y Java ME de la propia Oracle. También derivadas de OpenJDK, se están preparando versiones de Java SE para iOS, Android y Windows Mobile.
  • Android es un sistema operativo algo especial en cuanto a la ejecución de aplicaciones Java, ya que incorpora un entorno de ejecución propio, llamado ART (Android RunTime), en lugar de la correspondiente implementación del JRE. Las aplicaciones para Android se desarrollan usando el JDK de Java SE, pero el código se compila posteriormente para ART.

Espero que esto te ayude a tener clara la diferencia que existe entre Java, la plataforma Java, sus componentes y sus diferentes implementaciones.

También te puede interesar: Java y JavaScript: ¿son lo mismo?

Fecha de publicación:
Francisco Charte Francisco lleva más de 30 años dedicado a la enseñanza en informática, tanto en centros privados y públicos como a través de sus libros y artículos. Autor de más de 120 libros y varios centenares de artículos en revistas nacionales e internacionales. Charte es Doctor en Tecnologías de la información y la comunicación por la Universidad de Granada. Puedes seguirlo en Twitter en @fcharte Ver todos los posts de Francisco Charte
Archivado en: Lenguajes y plataformas

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Comentarios (2) -

Julio Trujillo León
Julio Trujillo León

Hola Francisco:
Si vais a hablar de Java os recomiendo que publiquéis algo de IKVM (http://www.ikvm.net/)

Yo me encontré una vez en una situación en que tenía que usar Java desde dotNET y gracias a ikvm pude hacerlo; en concreto tenía que usar un kit de comunicaciones facilitado por una operadora de telefonía para el envío de SMS, estaba construido en Java y pude usarlo desde dotNET gracias a IKVM

Un saludo

Responder

Francisco Charte
Francisco Charte

Hola Julio.

Gracias por la sugerencia. La tendremos en cuenta para un futuro artículo sobre distintas implementaciones de la máquina virtual Java que podría resultar interesante.

Saludos.

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.