En este tema se intenta dar una visión general del lenguaje de programación java.
Empezamos con un poco de historia y continuamos con las características más importantes del lenguaje, versiones, entornos de desarrollo más utilizados y la documentación.
El origen del lenguaje de programación Java se sitúa en el año 1991.
Un grupo de ingenieros liderados por James Gosling trabajaban en un proyecto para la empresa Sun Microsystems. Este grupo de ingenieros era conocido como el Green Team y al proyecto lo llamaron The Green Project.
El propósito de este proyecto era desarrollar software para programar pequeños dispositivos electrónicos: electrodomésticos y otros aparatos electrónicos de consumo.
Cada uno de estos dispositivos tenía un software específico incompatible entre ellos.

El proyecto de Gosling tenía como objetivo crear un único software que se pudiera aplicar a cualquier dispositivo compatible sin necesidad de modificar y recompilar el código para cada uno de ellos.
El objetivo de Sun era crear un lenguaje independiente del dispositivo.

Los lenguajes de programación existentes como C ó C++ no servían para ese propósito. En estos lenguajes los programas son dependientes del dispositivo. Esto quiere decir que solo pueden ejecutarse en un tipo de dispositivo concreto y deben ser modificados y compilados de nuevo para que se puedan ejecutar en dispositivos diferentes.
Por este motivo Gosling y su equipo crearon un nuevo lenguaje con las características básicas de C/C++ pero que fuera capaz de crear aplicaciones independientes de la arquitectura en la que se ejecutaran.
Inicialmente este nuevo lenguaje se llamó Oak (Roble) pero tuvieron que cambiarle el nombre porque Oak ya era una marca registrada y pasó a llamarse Green.
A pesar de lo innovador del proyecto, este nuevo lenguaje para pequeños dispositivos no tuvo demasiado éxito probablemente porque los equipos en los que se tenía que implementar no eran lo suficientemente potentes para poder utilizarlo así que Sun decidió aparcar el proyecto.
Este fracaso coincidió en el tiempo con algo que hizo que Internet, que hasta el momento no estaba muy extendida, diera un salto de gigante.
Hasta ese momento la navegación por internet se hacía mediante navegadores como el WordWideWeb. A este navegador lo llamaron después Nexus para evitar confusiones y no llamarlo igual que como era conocida internet en ese momento. El navegador Nexus permitía visitar sitios web en modo texto.

Pero en abril de 1993 se crea el navegador gráfico Mosaic.
Este navegador gráfico se podía utilizar en sistemas Unix, Windows y Mac y revolucionó la forma de navegación entre los hiperenlaces que en ese momento formaban Internet y esto hizo que la web se popularizara. Fue el primer navegador parecido a los navegadores que conocemos ahora.

Ante el auge que estaba experimentando Internet, donde cada vez más usuarios hacían uso de ella, los desarrolladores de Sun se dieron cuenta de que todo el trabajo que habían realizado en el proyecto para desarrollar un lenguaje que se pudiera implementar en pequeños dispositivos se podía adaptar y dirigir ahora a desarrollar un lenguaje para ser ejecutado en cualquier ordenador de Internet.
Básicamente Internet es una gran red mundial que conecta ordenadores con distintos sistemas operativos y distintas arquitecturas.
De esta forma, aunque inicialmente no estaba pensado para aplicaciones en Internet, el equipo de Gosling continuó con el desarrollo del nuevo lenguaje pero ahora orientado a conseguir un lenguaje que permitiera crear aplicaciones que se ejecutaran en cualquier ordenador de Internet, sin importar su sistema operativo ni su arquitectura.
Nuevo Objetivo: Crear un lenguaje multiplataforma que se pudiera ejecutar en cualquier ordenador independientemente de su arquitectura o sistema operativo.
En 1995 el lenguaje pasa a llamarse Java.

Dice la leyenda que Java debe su nombre a la cantidad de tazas de café que consumieron sus creadores durante el proceso.
Java revolucionó Internet cuando creó un nuevo tipo de programa en red llamado Applet.
Un applet es un programa que se ejecuta dentro de un navegador web. A diferencia de un programa normal, un applet no puede ejecutarse de forma independiente. Cuando el navegador carga la página que contiene un applet, éste se descarga y comienza a ejecutarse. Esto permite crear programas que cualquier usuario puede ejecutar independientemente de la arquitectura y sistema operativo del ordenador donde se ejecute. Los applets se utilizan para mostrar datos proporcionados por el servidor, manejar los datos de entrada del usuario, proporcionar aplicaciones simples como una calculadora, etc.
Ese mismo año, 1995, Gosling y su equipo lanzan el navegador HotJava.

HotJava era un clon de Mosaic pero con una gran diferencia: soportaba applets de Java.
Este navegador fue la plataforma que utilizó Sun para demostrar todo el potencial de la nueva tecnología y ayudó a que Java se popularizara.
Pronto muchos programadores se interesaron por el nuevo lenguaje y empezaron a desarrollar applets Java.
En 1996 Sun Microsystems creó JavaSoft, un grupo empresarial dedicado exclusivamente al desarrollo del lenguaje Java.
En 1997 Netscape anunció que la versión 2.0 de su navegador Netscape Navigator soportaría applets de Java. Este fue el impulso final que hizo que grandes compañías como IBM o SGI se interesaran por Java.

El eslogan que Sun popularizó sobre el lenguaje Java fue:
Write Once, Run Anywhere
También conocido con sus iniciales WORA. Esto quiere decir que un programa Java se escribe una vez y se puede ejecutar en cualquier plataforma sin tener que ser modificado ni recompilado.
Java logró convertirse en un lenguaje multiplataforma.
En 2010 Oracle compró Sun Microsystems por 7.400 millones de dólares.
Java ha continuado su evolución añadiendo nuevas características para la programación web como los JSP y Servlets, los EJBs para el desarrollo de aplicaciones empresariales e introdujo además las clases necesarias para la programación de dispositivos móviles.
En la actualidad existen tres distribuciones principales del lenguaje de programación Java:
- J2SE (Java Platform Standard Edition). Es la versión estándar de Java y es la base de las otras distribuciones. Contiene todos los fundamentos básicos del lenguaje. Está orientada al desarrollo de aplicaciones de escritorio.
- J2EE (Java Platform Enterprise Edition). Utiliza muchos de los componentes de J2SE y añade nuevas funcionalidades. Está orientada al desarrollo de servicios web, networking, aplicaciones en el lado del servidor y aplicaciones basadas en la web. Es uno de los estándares para el desarrollo de aplicaciones web.
- J2ME (Java Platform Micro Edition). Esta distribución de Java está orientada a la programación de dispositivos móviles, dispositivos inalámbricos y pequeños dispositivos.
La máquina virtual de Java
La gran innovación que introdujo el lenguaje de programación Java respecto a los demás lenguajes de programación existentes que hizo posible que un programa funcionara en cualquier plataforma, fue la creación de la Java Virtual Machine o Máquina Virtual Java.
Normalmente un programa escrito en un lenguaje de programación (código fuente) se debe traducir a un lenguaje entendible por la máquina (código máquina o ejecutable).
La traducción la realiza un programa traductor, generalmente un compilador.

Este código máquina o código ejecutable es distinto para cada arquitectura.
Ordenadores con sistemas operativos y/o hardware distintos tienen distinto código máquina.

Si cambia el código fuente hay que realizar una compilación para cada tipo de arquitectura donde ese vaya a ejecutar el programa.
Para eliminar la dependencia de la máquina:
- En Java un programa no se traduce directamente a código ejecutable.
- Un programa Java se compila y se obtiene un código intermedio llamado bytecode.
- El bytecode lo interpreta la Máquina Virtual de Java (JVM Java Virtual Machine) y obtiene el código ejecutable.

La máquina virtual de Java se distribuye gratuitamente para prácticamente todos los sistemas operativos.
Un archivo .class (bytecode) se puede ejecutar en cualquier ordenador que tenga instalada la máquina virtual java.

El programa Java se compila una única vez y el fichero bytecode que se obtiene se procesa por la máquina virtual de Java instalada en cualquier plataforma (Windows, Linux, MacOS, etc).
De esa forma Java logra ser un lenguaje que no depende de una arquitectura específica.
La JVM forma parte del JRE (Java Runtime Environment) o entorno de ejecución de Java.
Características del lenguaje de programación Java
Java es un lenguaje de programación de propósito general que se utiliza para desarrollar aplicaciones de diferentes tipos: programas de escritorio, aplicaciones empresariales, servicios web, aplicaciones para servidores y numerosas soluciones basadas en la plataforma Java.
Una de las razones de la amplia utilización de Java es que combina una sintaxis relativamente sencilla con un potente modelo de programación orientada a objetos, una biblioteca estándar extensa y una máquina virtual capaz de ejecutar programas en diferentes sistemas operativos.
A continuación se explican las principales características que definen el lenguaje Java y que ayudan a comprender por qué continúa siendo una herramienta importante para aprender programación.
Es un lenguaje de propósito general
Java es un lenguaje de propósito general, lo que significa que no está diseñado exclusivamente para resolver un único tipo de problema.
Con Java se pueden desarrollar aplicaciones muy diferentes, por ejemplo:
- Aplicaciones de escritorio.
- Aplicaciones empresariales.
- Servicios web.
- APIs.
- Aplicaciones para servidores.
- Programas para procesamiento de datos.
- Herramientas de administración.
- Aplicaciones distribuidas.
- Programas educativos.
Esta versatilidad permite que los conocimientos adquiridos al aprender Java puedan aplicarse posteriormente a numerosos tipos de proyectos.
Es un lenguaje orientado a objetos
Una de las características fundamentales de Java es su utilización del paradigma de programación orientada a objetos.
En este paradigma, los programas se organizan mediante clases y objetos que representan datos y comportamientos.
Entre los conceptos fundamentales de la programación orientada a objetos se encuentran los siguientes:
- Clases
- Objetos
- Abstracción
- Encapsulamiento
- Herencia
- Polimorfismo
Estos conceptos constituyen una parte esencial del aprendizaje de Java.
La programación orientada a objetos permite organizar programas complejos dividiéndolos en componentes relacionados entre sí.
Es un lenguaje multiplataforma
Una de las características más conocidas de Java es que es independiente de la plataforma y puede ejecutarse con cualquier sistema operativo en cualquier máquina que tenga instalada la máquina virtual de java.
El código fuente Java no se compila directamente, en condiciones normales, en instrucciones específicas de Windows, Linux o MacOS.
El proceso habitual es:
El Código fuente Java se compila y se obtienen los archivos .class que contienen los ByteCodes. A continuación la máquina virtual de Java (JVM) traduce estos ByteCodes al lenguaje máquina correspondiente.
Por este motivo se suele asociar Java con la idea: «Write Once, Run Anywhere«
Es un lenguaje compilado e interpretado
Normalmente un lenguaje de programación es compilado o interpretado. Java es ambas cosas. El código fuente se compila para obtener los bytecodes y posteriormente la máquina virtual interpreta esos bytecodes y los convierte en código máquina.
Es un lenguaje robusto
Java incorpora diferentes mecanismos que ayudan a construir programas resistentes a errores.
Uno de ellos es el sistema de excepciones.
Las excepciones permiten detectar y gestionar determinadas situaciones anómalas durante la ejecución.
Además del control de excepciones, también contribuyen a la robustez del lenguaje:
- El sistema de tipos: Java es un lenguaje fuertemente tipado. Cuando se declara una variable hay que indicar de qué tipo es y este tipo ya no podrá cambiar durante la ejecución del programa. Además realiza la comprobación de tipos en cualquier operación avisando si intervienen tipos incompatibles lo que hace que se eviten errores de cálculo.
- La gestión automática de memoria: Una de las características que contribuyen a la robustez de Java es la gestión automática de la memoria.
- A diferencia de lenguajes en los que el programador debe reservar y liberar manualmente la memoria utilizada por los objetos, Java delega esta tarea en la máquina virtual de Java (JVM).
- Cuando se crea un objeto mediante new, la memoria necesaria se reserva automáticamente. Posteriormente, cuando un objeto deja de ser accesible desde el programa, la JVM puede identificarlo como memoria que ya no es necesaria y recuperarla mediante un proceso denominado recolección de basura (Garbage Collection). Este mecanismo reduce la posibilidad de que se produzcan errores habituales relacionados con la gestión manual de memoria, como liberar incorrectamente una zona de memoria, utilizar memoria después de haberla liberado o mantener indefinidamente objetos que ya no son necesarios. Como consecuencia, se facilita la creación de programas más estables y se reduce el riesgo de determinados fallos durante su ejecución.
- La gestión automática de memoria es uno de los mecanismos que contribuyen a la robustez del lenguaje Java, ya que permite que el programador se centre en la lógica de la aplicación sin tener que gestionar directamente la liberación de la memoria utilizada por los objetos.
- La ausencia de punteros: Java no permite manipular directamente direcciones de memoria mediante punteros como ocurre en C o C++. Esto elimina una importante fuente de errores relacionados con accesos incorrectos a memoria.
Permite la concurrencia y la programación multihilo
Java incorpora un amplio soporte para la ejecución concurrente de tareas mediante hilos (threads).
Una aplicación puede dividir su trabajo en diferentes hilos de ejecución que pueden ejecutarse de forma concurrente y, cuando el hardware lo permite, en paralelo. Esta capacidad resulta especialmente útil en aplicaciones que necesitan realizar varias operaciones simultáneamente, mejorar el aprovechamiento de los procesadores multinúcleo o ejecutar operaciones de entrada y salida sin bloquear otras partes de la aplicación.
Es un lenguaje simple en cuanto a sintaxis
El estilo de programación es simple y el código es fácil de entender. La sintaxis es similar a la de C++ y a la de otros lenguajes como C, C#, PHP… , por lo que si se conoce alguno de estos lenguajes se facilita su aprendizaje. Además, cuando sabemos Java se puede aprender uno de estos lenguajes con mayor facilidad.
Historial de versiones Java
La primera versión del lenguaje de programación Java, llamada JDK 1.0, se lanzó en enero de 1996.
Desde la primera versión Java ha experimentado numerosos cambios, así como un enorme incremento en el número de clases y paquetes que componen la biblioteca estándar.
En diciembre de 1998 se lanza la versión J2SE 1.2 bajo el nombre de Java 2.
A partir de la versión 1.6 se deja de utilizar J2SE para llamarse Java SE 6, Java SE 7…
Cada versión tiene varias revisiones, por ejemplo la versión 1.6.7 del JDK hace referencia a la revisión 7 de la versión 6.
A partir de Java 9 (2017) aparece una nueva versión de java cada 6 meses. En marzo y en septiembre.
Puedes consultar todo el historial de versiones de Java en este enlace: Historial de versiones Java
Versiones LTS de Java
Java es un lenguaje de programación que evoluciona de forma continua. Desde su aparición, se han publicado numerosas versiones del lenguaje incorporando mejoras en rendimiento, seguridad, sintaxis, herramientas y productividad.
Sin embargo, no todas las versiones de Java tienen el mismo ciclo de vida. Algunas versiones reciben soporte durante un periodo relativamente corto, normalmente el soporte se limita a los 6 meses que transcurren hasta que aparece la nueva versión, mientras que otras se consideran versiones LTS.
LTS significa Long-Term Support, es decir, soporte a largo plazo.
Una versión LTS de Java es una versión que recibe mantenimiento y actualizaciones durante un periodo prolongado en comparación con las versiones de ciclo corto. Esto es especialmente importante en proyectos profesionales. Imagina que una empresa desarrolla una aplicación utilizando Java y espera mantenerla durante cinco, diez o incluso más años. Actualizar continuamente la versión de Java cada pocos meses puede aumentar el trabajo de mantenimiento y las pruebas necesarias.
Una versión LTS permite utilizar una versión estable durante más tiempo mientras se reciben actualizaciones importantes, especialmente relacionadas con seguridad, correcciones y estabilidad.
Oracle ha anunciado que su intención es sacar una versión LTS de java cada dos años.
Las versiones LTS de Java son las siguientes:
| Versión | Lanzamiento | Soporte inicial hasta | Soporte extendido hasta | Soporte de mantenimiento |
| Java 8 | 2014 | 2022 | 2030 | indefinido |
| Java 11 | 2018 | 2023 | 2032 | indefinido |
| Java 17 | 2021 | 2026 | 2029 | indefinido |
| Java 21 | 2023 | 2028 | 2031 | indefinido |
| Java 25 | 2025 | 2030 | 2033 | indefinido |
| Java 29 | 2027 | 2032 | 2035 | indefinido |
Estas son las fechas que aparecen actualmente en la hoja de ruta oficial de Oracle.
Soporte inicial(Premier Support): periodo inicial de soporte de una versión de Java durante el cual Oracle proporciona las actualizaciones y servicios correspondientes a esta fase.
Soporte extendido (Extended Support): periodo posterior al soporte principal durante el cual Oracle prolonga el soporte de la versión, de acuerdo con las condiciones establecidas para esta fase.
Soporte de mantenimiento (Sustaining Support): fase posterior en la que el producto permanece dentro del soporte de Oracle, pero con un nivel de servicios y actualizaciones diferente al de las fases anteriores.
¿Qué necesito para programar en Java?
Básicamente necesitamos dos cosas para programar en Java:
- El JDK (Kit de desarrollo de java)
- Un IDE (Entorno de desarrollo)
1. El JDK (Java Development Kit o Kit de Desarrollo en Java). Es el software que nos permite crear aplicaciones Java de distintos tipos. Es lo primero que debemos tener instalado en nuestro ordenador. El JDK incluye:
- El JRE (Java Runtime Environment). Es la máquina virtual de Java que traduce el bytecode a código ejecutable.
- El compilador de Java. Es el encargado de convertir nuestro código fuente a bytecode.
- API de Java (Application Programming Interface). Contiene todos los paquetes, clases e interfaces del lenguaje Java. Es el código que proporciona Java para que el programador desarrolle sus propias aplicaciones. Puedes descargar el JDK desde la página de Oracle:
Puedes descargar el JDK desde la página de Oracle: Descargar JDK.
2. Un IDE (Integrated Development Environment) también conocido como entorno de desarrollo.
Aunque podemos programar con un editor de texto plano tipo bloc de notas o similar, los entornos de desarrollo son herramientas software que facilitan al programador el desarrollo de los programas.
Entre otras muchas funciones, un entorno de desarrollo contiene distintas herramientas en una sola interfaz gráfica.
Un IDE generalmente contiene:
- Un editor de texto que ayuda a escribir el código resaltando la sintaxis con indicaciones visuales, autocompletado de instrucciones, comprobación de errores de sintaxis mientras se escribe el código, etc.
- Un depurador que sirve para probar un programa y buscar la ubicación de errores en el código.
- Herramientas para compilar y ejecutar el programa.
Mediante un IDE el desarrollador de aplicaciones puede escribir, compilar y ejecutar programas de forma sencilla.
Entornos de desarrollo para Java
El kit de desarrollo básico proporcionado por Oracle es lo mínimo que se necesita para desarrollar un programa en Java. Es útil si se necesita compilar aplicaciones Java de manera esporádica. Sin embargo, la escritura y compilación de programas hecha de esta forma es bastante incomoda. Por ello lo normal es utilizar un IDE o entorno de desarrollo.
Algunas ventajas que ofrecen los entornos de desarrollo son:
- Facilidades para escribir código.
- Facilidades de depuración.
- Facilidad de configuración del sistema.
- Facilidades para organizar los archivos de código.
- Facilidad para exportar e importar proyectos
Algunos de los IDEs más utilizados para programar en Java son: NetBeans, Eclipse, IntelliJ Idea y Visual Studio Code.
NetBeans
Uno de los IDE Java más populares. Es un entorno gratuito de código abierto para la generación de código en diversos lenguajes.
Contiene prácticamente todo lo que se suele pedir a un entorno de desarrollo, editor avanzado de código, depurador, diversos lenguajes, extensiones de todo tipo, etc. Además ofrece integración con tecnologías y herramientas habituales para desarrollo de software como Git y Maven.
NetBeans permite configurar y utilizar el servidor de aplicaciones Apache Tomcat desde el propio IDE para probar aplicaciones de servidor.
Consume bastantes recursos. Tiene una arquitectura extensible con módulos específicos para desarrollo web, aplicaciones móviles, diseño UML, etc.
Puede obtenerse gratuitamente desde Apache NetBeans

Eclipse
Eclipse es un entorno de desarrollo gratuito y de código abierto que cuenta con una larga trayectoria en el desarrollo de aplicaciones Java. Dispone de herramientas para editar, compilar, ejecutar y depurar programas, además de un sistema de complementos que permite ampliar sus funcionalidades. Además proporciona integración con Git, Maven y Gradle.
Mediante Web Tools Platform (WTP), proporciona adaptadores para servidores como Apache Tomcat. El adaptador permite configurar el servidor, iniciar y detenerlo y desplegar aplicaciones desde Eclipse.
Es habitual encontrarlo tanto en entornos educativos como profesionales. Su arquitectura extensible permite adaptar el entorno a diferentes tecnologías y necesidades de desarrollo.
Además de Java, permite el desarrollo en C++ y otros lenguajes de programación.
Puede descargarse desde Eclipse Foundation

Intellij IDEA
Es uno de los entornos más utilizados actualmente para programar en Java. Está desarrollado por JetBrains y ofrece herramientas avanzadas de autocompletado, análisis de código, refactorización, depuración e integración con sistemas de construcción como Maven y Gradle.
IntelliJ IDEA destaca por su capacidad para analizar el código mientras se escribe y ofrecer sugerencias que ayudan a detectar errores y mejorar su estructura. Se utiliza tanto para aprender Java como para desarrollar aplicaciones profesionales.
IntelliJ IDEA dispone de funcionalidades esenciales para Java sin coste y de herramientas avanzadas que requieren una suscripción. Desde 2025, JetBrains ha unificado la distribución del producto, por lo que ya no es necesario elegir entre instaladores independientes Community y Ultimate.
Puede descargarse desde jetbrains.com

Visual Studio Code
Visual Studio Code es un editor de código ligero y extensible que puede configurarse como entorno de desarrollo para Java mediante extensiones. Entre sus funciones se encuentran el autocompletado, la ejecución de programas, la depuración y la gestión de pruebas.
Aunque técnicamente se define principalmente como un editor de código, la incorporación de extensiones permite disponer de muchas de las funcionalidades propias de un IDE. Esta flexibilidad también facilita trabajar con otros lenguajes y tecnologías desde una misma aplicación.
Puede descargarse desde code.visualstudio.com

Documentación: la API de Java
La API de Java (Application Programming Interface) es un conjunto de herramientas que el propio lenguaje de programación Java pone a disposición de los programadores para facilitar el desarrollo de aplicaciones. En lugar de tener que escribir todo el código desde cero, Java incluye una gran colección de clases, interfaces y métodos ya preparados que resuelven tareas comunes.
Por ejemplo, la API de Java permite realizar operaciones como:
- Conectarse a bases de datos o a Internet.
- Leer y escribir en archivos.
- Trabajar con fechas y horas.
- Trabajar con colecciones de datos.
- Crear interfaces gráficas.
La API de Java está organizada en paquetes, que son conjuntos de clases relacionadas entre sí. Cada paquete agrupa funcionalidades que sirven para resolver un tipo de problema concreto. Por ejemplo:
Los paquetes java.io y java.nio ofrecen clases para manejar la entrada y salida de datos, como la lectura y escritura de archivos.
El paquete java.lang contiene las clases básicas del lenguaje, como String, Math o Object.
El paquete java.util incluye utilidades y estructuras de datos como listas, mapas o fechas.
En resumen, la API de Java es la base sobre la que se construye casi todo el código Java. Gracias a ella, los desarrolladores pueden centrarse en la lógica del programa sin tener que preocuparse por los detalles técnicos de bajo nivel.
La API del lenguaje de programación Java está disponible en https://docs.oracle.com/en/java/javase/27/docs/api/index.html
