Ir al contenido principal
Bethemesh
HistoriaHistoria de la informáticaPrincipiante

Java: escribir una vez, ejecutar en cualquier lugar

Del proyecto Green a OpenJDK, descubre cómo Java construyó su portabilidad alrededor del bytecode, la JVM y un ecosistema duradero.

Publicado el 17 de agosto de 2026Actualizado el 15 de septiembre de 2026Lectura : 10 minPor Yann Bastien
Java: escribir una vez, ejecutar en cualquier lugar
Mostrar el índice
  1. 1991: el proyecto Green
  2. Oak: Java antes de Java
  3. Bytecode y JVM: trasladar el problema de la portabilidad
  4. Del proyecto Green a la Web
  5. Java no es JavaScript
  6. Java 1.0: una plataforma, no solo un lenguaje
  7. Java 2 y la era empresarial
  8. La JVM se vuelve rápida
  9. Por qué desaparecieron los applets
  10. Java 5: modernizar sin romper
  11. El ecosistema se vuelve tan importante como el lenguaje
  12. OpenJDK y una plataforma más allá de un solo proveedor
  13. Android: otra vida para Java
  14. Java 8: lambdas y streams
  15. La JVM se convierte en una plataforma multilenguaje
  16. Java moderno: evolución regular y virtual threads
  17. Por qué Java sigue siendo importante
  18. De Oak a una infraestructura mundial
  19. Lo esencial
  20. Preguntas frecuentes
  21. ¿Quién creó Java?
  22. ¿Cómo se llamaba Java originalmente?
  23. ¿Por qué Java es portable?
  24. ¿Java y JavaScript están relacionados?
  25. ¿Siguen existiendo los applets Java?
  26. ¿Qué es OpenJDK?
  27. ¿Cuál es la diferencia entre Java y la JVM?
  28. ¿Por qué ha durado Java tanto tiempo?

Java es uno de los pocos lenguajes cuya historia atraviesa varias grandes transformaciones de la informática: la electrónica de consumo, el auge de la Web, las aplicaciones empresariales, el código abierto, los smartphones y la nube.

Cuando se presentó al público en 1995, su promesa quedó resumida en un lema famoso: «Write Once, Run Anywhere», escribir una vez y ejecutar en cualquier lugar. Java dio forma práctica a esa ambición mediante una combinación duradera: un lenguaje relativamente accesible, bytecode, una Máquina Virtual de Java (JVM), gestión automática de memoria y una biblioteca común.

Sin embargo, Java no fue concebido para la Web. Su historia comenzó unos años antes en un proyecto dedicado al futuro de los dispositivos electrónicos.

1991: el proyecto Green

A comienzos de los años noventa, Sun Microsystems era conocida sobre todo por sus estaciones de trabajo Unix y la informática en red. Algunos ingenieros creían que la siguiente ola también incluiría dispositivos inteligentes de consumo: televisores interactivos, decodificadores y equipos domésticos.

En 1991 Sun lanzó el Green Project. Entre sus miembros estaba James Gosling, que desempeñaría un papel central en el diseño del nuevo lenguaje.

El problema era claro: esos dispositivos podían utilizar procesadores y entornos muy diferentes. Mantener una versión del software para cada arquitectura sería caro y frágil. La portabilidad se convirtió así en un requisito de diseño desde el principio.

Oak: Java antes de Java

Gosling experimentó primero con C y C++. C++ ofrecía abstracciones potentes y control preciso de los recursos, pero el equipo buscaba un entorno más sencillo de desplegar en hardware heterogéneo.

Gosling creó Oak, llamado así por un roble visible desde su oficina. El lenguaje conservaba una sintaxis familiar para programadores de C y C++, pero eliminaba varios mecanismos difíciles de controlar. La memoria se recuperaba automáticamente mediante un recolector de basura y desaparecía la aritmética explícita de punteros.

El objetivo no era únicamente ejecutar el mismo software en otro lugar, sino también hacer los programas complejos más seguros y previsibles.

Bytecode y JVM: trasladar el problema de la portabilidad

La decisión arquitectónica esencial de Java es su modelo de ejecución. El código fuente no suele compilarse directamente para un procesador concreto, sino en un formato intermedio llamado bytecode Java, ejecutado después por una Java Virtual Machine.

Si una plataforma dispone de una JVM compatible, puede en principio ejecutar el mismo bytecode. En lugar de adaptar cada aplicación a cada máquina, se adapta la JVM a las distintas plataformas.

Esta es la base del Write Once, Run Anywhere. La portabilidad perfecta sigue dependiendo de las bibliotecas, la integración con el sistema y las implementaciones, pero esta arquitectura reduce considerablemente el trabajo específico de cada plataforma.

Del proyecto Green a la Web

El proyecto Green no logró el éxito comercial esperado en la televisión interactiva. Al mismo tiempo, el World Wide Web estaba despegando. Sun comprendió que un lenguaje diseñado para dispositivos heterogéneos también podía resultar útil en una red que conectaba ordenadores muy diferentes.

Oak tuvo que cambiar de nombre por razones de marca y se eligió Java. Sun presentó oficialmente el lenguaje en 1995.

También desarrolló HotJava, un navegador capaz de ejecutar pequeños programas Java integrados en páginas web: los applets. Animaciones, interfaces y pequeños juegos hacían que la Web pareciera mucho más dinámica. Netscape incorporó rápidamente Java y dio al lenguaje una enorme visibilidad.

Aquel escaparate sería, sin embargo, temporal.

Java no es JavaScript

La similitud de los nombres sigue causando confusión, pero Java y JavaScript son lenguajes distintos.

JavaScript fue creado en 1995 por Brendan Eich en Netscape como lenguaje ligero de scripting para el navegador. Su evolución se explica en nuestro artículo sobre la historia de JavaScript.

Java se consolidó sobre todo en aplicaciones, servidores y sistemas empresariales. JavaScript se convirtió en el lenguaje nativo del navegador antes de extenderse también a servidores y muchos otros entornos.

Java 1.0: una plataforma, no solo un lenguaje

En enero de 1996 Sun publicó el Java Development Kit 1.0. Java ya era más que una sintaxis: lenguaje, compilador, JVM, biblioteca estándar, herramientas de desarrollo, mecanismos de seguridad y carga dinámica de clases formaban una plataforma coherente.

Los desarrolladores podían utilizar API comunes para colecciones, entrada y salida, redes, interfaces gráficas y concurrencia. Esta base compartida llegó a ser tan importante como el propio lenguaje.

Java adoptó además muchos principios de la programación orientada a objetos: clases, objetos, encapsulación, herencia y polimorfismo. Frente a C++, automatizaba más la gestión de memoria y evitaba varias operaciones de bajo nivel, decisiones favorables para mantener grandes aplicaciones durante largos periodos.

Java 2 y la era empresarial

Java 1.2, publicado en 1998 con el nombre Java 2, organizó la plataforma en varias ediciones: J2SE para usos generales, J2EE para aplicaciones empresariales y J2ME para dispositivos con recursos limitados.

J2EE desempeñó un papel decisivo. Servlets, JavaServer Pages, Enterprise JavaBeans, acceso a bases de datos, mensajería y servidores de aplicaciones ofrecían un entorno estandarizado para grandes sistemas distribuidos.

Java se volvió habitual en banca, seguros, telecomunicaciones, administraciones y grandes empresas. Portabilidad, tipado estático, recolección de basura, una JVM madura y abundantes bibliotecas encajaban bien en organizaciones que debían mantener software durante diez o veinte años.

La JVM se vuelve rápida

Las primeras JVM tenían fama de ser lentas. Esa debilidad disminuyó con los compiladores JIT (Just-In-Time), que identifican el código ejecutado con frecuencia y lo convierten en instrucciones máquina optimizadas mientras el programa está funcionando.

La JVM puede observar así el comportamiento real y optimizar los caminos realmente utilizados. HotSpot, adquirido e integrado por Sun, se convirtió en una tecnología central de la plataforma.

Java pasó progresivamente de ser considerado demasiado lento a ejecutar grandes sistemas de servidor.

Por qué desaparecieron los applets

Mientras Java prosperaba en servidores, los applets entraron en declive. Necesitaban plugins o instalaciones locales de Java, planteaban problemas de seguridad y despliegue y podían arrancar lentamente.

Entretanto, HTML, CSS, JavaScript y las API Web adquirieron suficiente potencia para crear interfaces ricas sin plugins. Los navegadores terminaron abandonando esas tecnologías históricas.

La desaparición de los applets no significó la desaparición de Java: el lenguaje ya había encontrado usos mucho más duraderos en servidores y sistemas empresariales.

Java 5: modernizar sin romper

En 2004, Java 5 introdujo, entre otras novedades, generics, anotaciones, enumeraciones, autoboxing y bucles for mejorados.

Los generics reforzaron la seguridad de tipos de las colecciones. Las anotaciones se volvieron esenciales para los frameworks que asocian metadatos a clases, métodos y campos.

Esta versión ilustra un reto permanente: evolucionar lo suficiente para seguir siendo moderno sin sacrificar la compatibilidad que da valor a Java.

El ecosistema se vuelve tan importante como el lenguaje

Gran parte de la historia de Java transcurre fuera de su sintaxis. Apache Tomcat, Hibernate y especialmente Spring transformaron el desarrollo de aplicaciones de servidor. Spring popularizó la inyección de dependencias y Spring Boot simplificó después las aplicaciones autónomas y los servicios Web.

Herramientas de build como Maven y Gradle, bibliotecas de pruebas e IDE como Eclipse, IntelliJ IDEA o NetBeans hicieron posible trabajar con bases de código enormes. Este tooling industrial contribuyó de forma decisiva a la longevidad de Java.

OpenJDK y una plataforma más allá de un solo proveedor

En 2006 Sun anunció la apertura de una gran parte de Java. OpenJDK se convirtió en la implementación open source de referencia de la plataforma.

Cuando Oracle adquirió Sun en 2010, Java entró en una nueva etapa institucional y surgieron debates sobre licencias y gobernanza. Sin embargo, OpenJDK fue adquiriendo un papel cada vez más central.

Oracle, Red Hat, IBM, Amazon, Microsoft y otras organizaciones contribuyen hoy al ecosistema o distribuyen sus propias versiones. Java se convirtió así en una infraestructura colectiva mucho menos dependiente de una sola distribución comercial.

Android: otra vida para Java

Las primeras generaciones del SDK de Android utilizaron Java como principal lenguaje de aplicaciones. Android no ejecutaba simplemente las aplicaciones sobre una JVM Java SE convencional: Google creó su propia pila, primero Dalvik y después ART.

Esta diferencia y el uso de las API Java contribuyeron a un largo conflicto jurídico entre Oracle y Google. Aun así, Java siguió siendo durante años el lenguaje emblemático de Android.

Kotlin recibió posteriormente soporte oficial y pasó a ser preferido para muchos proyectos nuevos, pero una enorme cantidad de código Java permanece en el ecosistema Android.

Java 8: lambdas y streams

En 2014, Java 8 introdujo una de las evoluciones modernas más importantes. Las expresiones lambda permitieron expresar comportamientos de forma más concisa y la API Stream ofreció un modelo declarativo para filtrar, transformar y agregar datos.

Java incorporó así más ideas de programación funcional sin abandonar sus fundamentos orientados a objetos. Java 8 siguió siendo una versión de producción dominante durante muchos años.

La JVM se convierte en una plataforma multilenguaje

La JVM ya no está reservada a Java. Scala combina programación orientada a objetos y funcional, Clojure aporta un enfoque inspirado en Lisp, Groovy ofrece un lenguaje dinámico y Kotlin una sintaxis moderna con gran interoperabilidad con Java.

Esta diversidad muestra que uno de los logros más duraderos de Java puede ser la propia máquina virtual. Un desarrollador puede beneficiarse del recolector de basura, el JIT, las herramientas de diagnóstico y el ecosistema JVM sin escribir Java directamente.

Java moderno: evolución regular y virtual threads

A partir de 2017 Java adoptó un ritmo de publicación más regular. Las versiones modernas han añadido módulos, var, records, text blocks, pattern matching, sealed classes y virtual threads.

Los virtual threads, desarrollados a través del proyecto Loom, permiten gestionar un gran número de tareas concurrentes ligeras conservando un modelo de programación familiar. Son especialmente útiles para servicios que pasan mucho tiempo esperando redes, bases de datos u otras operaciones de entrada y salida.

Esta evolución resume la estrategia de Java moderno: reducir fricciones históricas y adaptar la JVM a nuevas cargas de trabajo preservando en lo posible las aplicaciones existentes.

Por qué Java sigue siendo importante

Java ocupa un compromiso particular entre rendimiento, portabilidad, seguridad de ejecución, productividad y estabilidad a gran escala. Python privilegia más la concisión y el desarrollo rápido; JavaScript domina históricamente el navegador; C++ ofrece un control más directo de los recursos. Java se instaló profundamente en sistemas que deben durar.

Su longevidad se apoya en una gran compatibilidad, una JVM madura, recolectores de basura y JIT sofisticados, un ecosistema enorme, buenas herramientas de diagnóstico y una inmensa base de código existente.

Java sigue recibiendo críticas por su verbosidad, consumo de memoria o costes de arranque. Records, pattern matching, nuevos recolectores, frameworks como Quarkus o Micronaut y tecnologías como GraalVM responden progresivamente a esas limitaciones, especialmente en la nube y los contenedores.

Java evoluciona, por tanto, más por adaptación continua que por reinvención radical.

De Oak a una infraestructura mundial

La televisión interactiva no fue su gran mercado. Los applets desaparecieron. Sun Microsystems dejó de existir como empresa independiente. Y, sin embargo, Java permanece.

Sus fundamentos - portabilidad, máquina virtual, gestión automática de memoria, bibliotecas comunes y compatibilidad - demostraron ser útiles mucho más allá de su contexto original.

Java pasó de ser un lenguaje imaginado para dispositivos electrónicos a una plataforma de ejecución mundial, utilizada directamente por Java y por una familia más amplia de lenguajes y herramientas construidos alrededor de la JVM.

Lo esencial

Java nació en 1991 en el Green Project de Sun Microsystems con el nombre Oak. Su arquitectura basada en bytecode y JVM buscaba la portabilidad entre dispositivos heterogéneos.

La Web le dio su primer gran escaparate mediante los applets, pero su éxito duradero llegó sobre todo de los servidores y sistemas empresariales. Java 2, Java 5 y Java 8 hicieron evolucionar la plataforma mientras frameworks y herramientas adquirían una importancia creciente.

La apertura de OpenJDK, la diversidad de lenguajes JVM y evoluciones modernas como los virtual threads transformaron Java en una infraestructura que supera ampliamente al lenguaje original.

Preguntas frecuentes

¿Quién creó Java?

Java fue diseñado en Sun Microsystems a comienzos de los años noventa. James Gosling es considerado generalmente su principal creador.

¿Cómo se llamaba Java originalmente?

El lenguaje se llamó primero Oak. Fue renombrado Java antes de su presentación pública en 1995.

¿Por qué Java es portable?

El código Java suele compilarse en bytecode, ejecutado por una JVM disponible en distintas plataformas. El mismo programa compilado puede así funcionar en varios entornos compatibles.

¿Java y JavaScript están relacionados?

No. Pese a sus nombres, son lenguajes distintos con historias, diseños y modelos de ejecución diferentes.

¿Siguen existiendo los applets Java?

Prácticamente han desaparecido. Los navegadores modernos eliminaron los plugins necesarios para ejecutarlos y los estándares Web asumieron sus principales usos.

¿Qué es OpenJDK?

OpenJDK es el proyecto open source que proporciona la implementación de referencia de la plataforma Java. Varias empresas y comunidades contribuyen a él y distribuyen sus propias versiones.

¿Cuál es la diferencia entre Java y la JVM?

Java es un lenguaje. La JVM es una máquina virtual capaz de ejecutar bytecode. Otros lenguajes como Kotlin, Scala o Clojure también pueden utilizarla.

¿Por qué ha durado Java tanto tiempo?

Su portabilidad, compatibilidad, JVM madura, enorme ecosistema y adopción masiva en organizaciones crearon una base especialmente duradera.

¿Te ha resultado útil este artículo?

Fuentes y referencias

Colección

Lenguajes de programación

15 / 26

  1. 01Grace Hopper: de los primeros compiladores a COBOL
  2. 02John Backus: FORTRAN, la notación BNF y el rechazo del código máquina
  3. 03Dennis Ritchie: el lenguaje C en el corazón de Unix
  4. 04FORTRAN: demostrar que un compilador podía competir con el ensamblador
  5. 05El lenguaje C: hacer portables los sistemas sin ocultar la máquina
  6. 06Niklaus Wirth: de Pascal a Oberon, diseñar mediante la simplicidad
  7. 07Bjarne Stroustrup: diseñar C++ sin renunciar al rendimiento
  8. 08Pascal: aprender a programar haciendo visible la estructura
  9. 09C++: de C with Classes al C++ moderno
  10. 10Programación orientada a objetos: objetos, mensajes y abstracciones reutilizables
  11. 11Guido van Rossum: crear Python para que el código sea legible
  12. 12Brendan Eich: JavaScript, del prototipo de Netscape al estándar web
  13. 13James Gosling: el ingeniero que dio origen a Java
  14. 14Python: legibilidad, baterías incluidas y un ecosistema mundial
  15. 15Java: escribir una vez, ejecutar en cualquier lugar
  16. 16JavaScript: el lenguaje que hizo interactiva la Web
  17. 17Ken Thompson: de Unix a Go, la simplicidad como método
  18. 18John McCarthy: Lisp y la idea de programar con símbolos
  19. 19Alan Kay: Smalltalk y el ordenador como medio personal
  20. 20Barbara Liskov: la abstracción que hizo modular el software
  21. 21Robin Milner: ML, la prueba asistida y los lenguajes de la interacción
  22. 22Brian Kernighan: AWK, Unix y el arte de explicar el código
  23. 23Anders Hejlsberg: de Turbo Pascal a C# y TypeScript
  24. 24Larry Wall: Perl, el lenguaje que conectó las herramientas de Internet
  25. 25Yukihiro Matsumoto: Ruby y la felicidad del programador
  26. 26Rasmus Lerdorf: PHP y la democratización de la Web dinámica
BiografíaHistoria de la informáticaPrincipiante

James Gosling: el ingeniero que dio origen a Java

Cómo James Gosling y el equipo Green de Sun diseñaron Java: de Oak y las máquinas virtuales a la portabilidad y el legado del lenguaje.

17 de agosto de 20266 min