Java es un lenguaje de programación orientado a objetos , de alto nivel , de propósito general y seguro para la memoria . Su objetivo es permitir a los programadores escribir una vez y ejecutar en cualquier lugar (WORA), [ 17 ] lo que significa que el código Java compilado puede ejecutarse en todas las plataformas que admiten Java sin necesidad de recompilar. [ 18 ] Las aplicaciones Java se compilan generalmente a bytecode que puede ejecutarse en cualquier máquina virtual Java (JVM) independientemente de la arquitectura informática subyacente . [ 19 ] La sintaxis de Java es similar a C y C++ , pero tiene menos funcionalidades de bajo nivel que cualquiera de ellos. El entorno de ejecución de Java proporciona capacidades dinámicas (como la programación reflexiva (reflexión) y la modificación de código en tiempo de ejecución) que normalmente no están disponibles en los lenguajes compilados tradicionales.
Java ganó popularidad poco después de su lanzamiento y desde entonces ha sido un lenguaje de programación popular. [ 20 ] Java fue el tercer lenguaje de programación más popular en 2022.Según GitHub . [ 21 ] Aunque sigue siendo muy popular, en los últimos años se ha producido un descenso gradual en el uso de Java, mientras que otros lenguajes que utilizan la JVM han ganado popularidad. [ 22 ]
Java fue diseñado por James Gosling en Sun Microsystems . Se lanzó en mayo de 1995 como un componente central de la plataforma Java de Sun. Los compiladores , máquinas virtuales (VM) y bibliotecas de clases de la implementación original y de referencia de Java fueron publicados por Sun bajo licencias propietarias . En mayo de 2007, en cumplimiento con las especificaciones del Proceso de la Comunidad Java , Sun volvió a licenciar la mayoría de sus tecnologías Java bajo la licencia GPL-2.0 . Oracle , que compró Sun en 2010, ofrece su propia máquina virtual Java HotSpot . Sin embargo, la implementación de referencia oficial es la JVM OpenJDK , que es un software de código abierto utilizado por la mayoría de los desarrolladores y es la JVM predeterminada para casi todas las distribuciones de Linux .
A marzo de 2026 ,Java 26 es la versión actual.
Historia


James Gosling , Mike Sheridan y Patrick Naughton iniciaron el proyecto del lenguaje Java en junio de 1991. [ 23 ] Inicialmente, el lenguaje se llamó Oak, en honor a un roble que se encontraba frente a la oficina de Gosling. Posteriormente, el proyecto pasó a llamarse Green y finalmente se renombró Java , derivado de Java coffee , un tipo de café de Indonesia . [ 24 ] Gosling diseñó Java con una sintaxis al estilo de C / C++ que resultaría familiar para los programadores de sistemas y aplicaciones. [ 25 ]
Sun Microsystems lanzó la primera implementación pública como Java 1.0 en 1996. [ 26 ] Prometía funcionalidad de escritura única, ejecución en cualquier lugar (WORA), proporcionando entornos de ejecución sin costo en plataformas populares . Bastante seguro y con seguridad configurable, permitía restricciones de acceso a la red y a los archivos. Los principales navegadores web pronto incorporaron la capacidad de ejecutar applets de Java dentro de las páginas web, y Java rápidamente se popularizó. El compilador de Java 1.0 fue reescrito en Java por Arthur van Hoff para cumplir estrictamente con la especificación del lenguaje Java 1.0. [ 27 ] Con la llegada de Java 2 (lanzado inicialmente como J2SE 1.2 en diciembre de 1998-1999 ) , las nuevas versiones tenían múltiples configuraciones creadas para diferentes tipos de plataformas. J2EE incluía tecnologías y API para aplicaciones empresariales que normalmente se ejecutan en entornos de servidor, mientras que J2ME presentaba API optimizadas para aplicaciones móviles. La versión de escritorio pasó a llamarse J2SE. En 2006, con fines de marketing, Sun renombró las nuevas versiones de J2 como Java EE , Java ME y Java SE , respectivamente.
En 1997, Sun Microsystems se acercó al organismo de estándares ISO/IEC JTC 1 y posteriormente a Ecma International para formalizar Java, pero pronto se retiró del proceso. [ 28 ] [ 29 ] [ 30 ] Java sigue siendo un estándar de facto , controlado a través del Java Community Process . [ 31 ] En un momento dado, Sun puso a disposición la mayoría de sus implementaciones de Java de forma gratuita, a pesar de su condición de software propietario . Sun generó ingresos de Java mediante la venta de licencias para productos especializados como el Java Enterprise System.
El 13 de noviembre de 2006, Sun lanzó gran parte de su máquina virtual Java (JVM) como software libre y de código abierto (FOSS), bajo los términos de la licencia GPL-2.0 . El 8 de mayo de 2007, Sun finalizó el proceso, poniendo a disposición todo el código principal de su JVM bajo términos de distribución de software libre /código abierto, a excepción de una pequeña porción de código cuyos derechos de autor no le pertenecían a Sun. [ 32 ]
El vicepresidente de Sun, Rich Green, afirmó que el papel ideal de Sun con respecto a Java era el de promotor . [ 33 ] Tras la adquisición de Sun Microsystems por parte de Oracle Corporation en 2009-10, Oracle se ha descrito a sí misma como la responsable de la tecnología Java, con un compromiso inquebrantable para fomentar una comunidad de participación y transparencia. [ 34 ] Esto no impidió que Oracle presentara una demanda contra Google poco después por el uso de Java dentro del SDK de Android (véase la sección de Android ).
El 2 de abril de 2010, James Gosling renunció a Oracle . [ 35 ]
En enero de 2016, Oracle anunció que los entornos de ejecución de Java basados en JDK 9 dejarían de utilizar el complemento para navegadores. [ 36 ]
El software Java se ejecuta en la mayoría de los dispositivos, desde computadoras portátiles hasta centros de datos , consolas de juegos y supercomputadoras científicas . [ 37 ]
Oracle (y otros) recomiendan encarecidamente desinstalar las versiones obsoletas y sin soporte de Java, debido a problemas de seguridad no resueltos en versiones anteriores. [ 38 ]
Principios
Hubo cinco objetivos principales en la creación del lenguaje Java: [ 18 ]
- Debe ser sencillo, orientado a objetos y familiar.
- Debe ser robusto y seguro.
- Debe ser independiente de la arquitectura y portátil.
- Debe funcionar con alto rendimiento.
- Debe ser interpretado , multihilo y dinámico .
Versiones
A partir de junio de 2026 Java 8, 11, 17, 21 y 25 son compatibles como versiones de soporte a largo plazo (LTS). [ 39 ]
Oracle lanzó la última actualización pública gratuita para la versión heredada Java 8 LTS en enero de 2019 para uso comercial, aunque seguirá brindando soporte para Java 8 con actualizaciones públicas para uso personal de forma indefinida. Otros proveedores, como Adoptium, continúan ofreciendo compilaciones gratuitas de las versiones de soporte a largo plazo (LTS) de OpenJDK. Estas compilaciones pueden incluir parches de seguridad y correcciones de errores adicionales. [ 40 ]
Versiones principales de Java, junto con sus fechas de lanzamiento:
Ediciones
Sun ha definido y admite cuatro ediciones de Java dirigidas a diferentes entornos de aplicación y ha segmentado muchas de sus API para que pertenezcan a una de las plataformas. Las plataformas son:
- Tarjeta Java para tarjetas inteligentes. [ 48 ]
- Plataforma Java, Micro Edition (Java ME): dirigida a entornos con recursos limitados. [ 49 ]
- Plataforma Java, Edición Estándar (Java SE): dirigida a entornos de estaciones de trabajo. [ 50 ]
- Plataforma Java, Edición Empresarial (Java EE): dirigida a grandes entornos empresariales distribuidos o de Internet. [ 51 ]
Las clases en las API de Java están organizadas en grupos separados llamados paquetes . Cada paquete contiene un conjunto de interfaces , clases, subpaquetes y excepciones relacionadas .
Sun también ofreció una edición llamada Personal Java , que ha sido reemplazada por versiones posteriores de Java ME, basadas en estándares y que combinan perfiles de configuración.
Sistema de ejecución
Java JVM y bytecode
Uno de los objetivos de diseño de Java es la portabilidad , lo que significa que los programas escritos para la plataforma Java deben ejecutarse de manera similar en cualquier combinación de hardware y sistema operativo con soporte de tiempo de ejecución adecuado. Esto se logra compilando el código del lenguaje Java a una representación intermedia llamada bytecode de JVM , en lugar de directamente a código máquina específico de la arquitectura . Las instrucciones de bytecode de JVM son análogas al código máquina, pero están diseñadas para ser ejecutadas por una máquina virtual (VM) escrita específicamente para el hardware anfitrión. Los usuarios finales suelen usar un Entorno de Ejecución de Java (JRE) instalado en su dispositivo para aplicaciones Java independientes o un navegador web para applets de Java .
Las bibliotecas estándar proporcionan una forma genérica de acceder a características específicas del sistema anfitrión, como gráficos, subprocesos y redes .
El uso de bytecode universal simplifica la portabilidad. Sin embargo, la sobrecarga de interpretar bytecode en instrucciones de máquina hacía que los programas interpretados casi siempre se ejecutaran más lentamente que los ejecutables nativos . Los compiladores Just-in-Time (JIT), que compilan bytecode a código máquina durante el tiempo de ejecución, se introdujeron desde una etapa temprana. El compilador Hotspot de Java es en realidad dos compiladores en uno, con GraalVM (incluido en Java 11, por ejemplo, pero eliminado a partir de Java 16) que permite la compilación por niveles . [ 52 ] Java en sí es independiente de la plataforma y se adapta a la plataforma particular en la que se va a ejecutar mediante una máquina virtual Java (JVM), que traduce el bytecode de la JVM al lenguaje de máquina de la plataforma. [ 53 ]
Actuación
Los programas escritos en Java tienen fama de ser más lentos y requerir más memoria que los escritos en C++ . [ 54 ] [ 55 ] Sin embargo, la velocidad de ejecución de los programas Java mejoró significativamente con la introducción de la compilación just-in-time en 1997/1998 para Java 1.1 , [ 56 ] la adición de características del lenguaje que admiten un mejor análisis de código (como clases internas, la clase StringBuilder, aserciones opcionales, etc.) y optimizaciones en la máquina virtual Java, como HotSpot convirtiéndose en la JVM predeterminada de Sun en 2000. Con Java 1.5, el rendimiento mejoró con la adición del java.util.concurrentpaquete, incluidas implementaciones sin bloqueo de ConcurrentMaps y otras colecciones multinúcleo, y mejoró aún más con Java 1.6.
No es JVM
Algunas plataformas ofrecen soporte de hardware directo para Java; hay microcontroladores que pueden ejecutar el código de bytes de la JVM en hardware en lugar de una máquina virtual Java de software, [ 57 ] y algunos procesadores basados en ARM podrían tener soporte de hardware para ejecutar el código de bytes de la JVM a través de su opción Jazelle , aunque el soporte se ha eliminado en su mayor parte en las implementaciones actuales de ARM.
Gestión automática de la memoria
Java utiliza un recolector de basura automático para gestionar la memoria en el ciclo de vida de los objetos . El programador determina cuándo se crean los objetos, y el entorno de ejecución de Java se encarga de recuperar la memoria una vez que los objetos ya no están en uso. Una vez que no quedan referencias a un objeto, la memoria inaccesible puede ser liberada automáticamente por el recolector de basura. Sin embargo, puede producirse una fuga de memoria si el código del programador mantiene una referencia a un objeto que ya no se necesita, normalmente cuando los objetos que ya no se necesitan se almacenan en contenedores que aún están en uso. [ 58 ] Si se llaman métodos para un objeto inexistente, se lanza una excepción de puntero nulo . [ 59 ] [ 60 ]
Una de las ideas detrás del modelo de gestión automática de memoria de Java es que los programadores pueden ahorrarse la carga de tener que realizar una gestión manual de la memoria. En algunos lenguajes, la memoria para la creación de objetos se asigna implícitamente en la pila o se asigna y libera explícitamente del montón . En este último caso, la responsabilidad de gestionar la memoria recae en el programador. Si el programa no libera un objeto, se produce una fuga de memoria . [ 58 ] Si el programa intenta acceder o liberar memoria que ya ha sido liberada, el resultado es indefinido y difícil de predecir, y es probable que el programa se vuelva inestable o falle. Esto se puede remediar parcialmente mediante el uso de punteros inteligentes , pero estos añaden sobrecarga y complejidad. La recolección de basura no evita las fugas de memoria lógicas , es decir, aquellas en las que la memoria sigue referenciada pero nunca se utiliza. [ 58 ]
La recolección de basura puede ocurrir en cualquier momento. Idealmente, ocurrirá cuando un programa esté inactivo. Se garantiza que se activará si no hay suficiente memoria libre en el montón para asignar un nuevo objeto; esto puede provocar que un programa se detenga momentáneamente. La administración explícita de memoria no es posible en Java, sin embargo, es posible hacer que la JVM realice la recolección de basura manualmente [ 61 ] .
Java no admite la aritmética de punteros al estilo C/C++ , [ 62 ] donde las direcciones de los objetos pueden manipularse aritméticamente (por ejemplo, sumando o restando un desplazamiento). Esto permite que el recolector de basura reubique los objetos referenciados y garantiza la seguridad de tipos.
Al igual que en C++ y otros lenguajes orientados a objetos, las variables de los tipos de datos primitivos de Java se almacenan directamente en campos (para objetos) o en la pila (para métodos), en lugar de en el montón, como suele ocurrir con los tipos de datos no primitivos (véase el análisis de escape ). Esta fue una decisión deliberada de los diseñadores de Java por motivos de rendimiento.
Java contiene varios tipos de recolectores de basura. Desde Java 9, HotSpot utiliza el recolector de basura Garbage First (G1GC) como predeterminado. [ 63 ] Sin embargo, también existen otros recolectores de basura que pueden utilizarse para gestionar el montón, como el recolector de basura Z (ZGC) introducido en Java 11, y Shenandoah GC, introducido en Java 12 pero no disponible en las compilaciones de OpenJDK producidas por Oracle. Shenandoah está disponible en compilaciones de OpenJDK de terceros, como Eclipse Temurin . Para la mayoría de las aplicaciones en Java, G1GC es suficiente. En versiones anteriores de Java, como Java 8, el recolector de basura Parallel se utilizaba como recolector de basura predeterminado.
El hecho de haber resuelto el problema de la gestión de memoria no exime al programador de la carga de gestionar adecuadamente otros tipos de recursos, como las conexiones de red o de bases de datos, los descriptores de archivos, etc., especialmente en presencia de excepciones.
Sintaxis

La sintaxis de Java está influenciada en gran medida por C++ y C. A diferencia de C++, que combina la sintaxis para la programación estructurada, genérica y orientada a objetos, Java se construyó casi exclusivamente como un lenguaje orientado a objetos. [ 18 ] Todo el código se escribe dentro de clases, y cada elemento de datos es un objeto, con la excepción de los tipos de datos primitivos (es decir, enteros, números de punto flotante, valores booleanos y caracteres), que no son objetos por razones de rendimiento.
A diferencia de C++, Java no admite la sobrecarga de operadores [ 64 ] ni la herencia múltiple para clases, aunque sí admite la herencia múltiple para interfaces . [ 65 ]
Java utiliza comentarios similares a los de C++. Existen tres estilos diferentes de comentarios: un estilo de una sola línea marcado con dos barras diagonales ( //), un estilo de varias líneas que comienza con /*y termina con */, y el estilo de comentarios Javadoc/** que comienza con y termina con */. El estilo de comentarios Javadoc permite al usuario ejecutar el ejecutable Javadoc para crear documentación para el programa y puede ser leído por algunos entornos de desarrollo integrados (IDE) como Eclipse para permitir a los desarrolladores acceder a la documentación dentro del IDE.
Hola Mundo
El siguiente es un ejemplo de un programa "¡Hola, mundo!" en la sintaxis tradicional de Java:
clase pública HelloWorld {public static void main ( String [] args ) {System.out.println ( "¡Hola Mundo ! " ) ;}}Java 25 introdujo una sintaxis simplificada para la clase principal y el método principal, que permite a los usuarios escribir pequeños programas Java de forma concisa: [ 66 ] [ 67 ]
void main () {IO.println ( " ¡ Hola Mundo!" ) ;}Clases especiales
Applet
Los applets de Java eran programas integrados en otras aplicaciones, principalmente en páginas web que se mostraban en navegadores web. La API de applets de Java quedó obsoleta con el lanzamiento de Java 9 en 2017. [ 68 ] [ 69 ]
Servlet
La tecnología de servlets de Java proporciona a los desarrolladores web un mecanismo sencillo y consistente para ampliar la funcionalidad de un servidor web y acceder a los sistemas empresariales existentes. Los servlets son componentes Java EE del lado del servidor que generan respuestas a las solicitudes de los clientes . En la mayoría de los casos, esto implica generar páginas HTML en respuesta a solicitudes HTTP , aunque existen otras clases de servlets estándar disponibles, por ejemplo, para la comunicación WebSocket .
La API de servlets de Java ha sido reemplazada en cierta medida (aunque todavía se utiliza internamente) por dos tecnologías Java estándar para servicios web:
- la API de Java para servicios web RESTful (JAX-RS 2.0), útil para servicios AJAX, JSON y REST, y
- La API de Java para servicios web XML (JAX-WS) resulta útil para los servicios web SOAP .
Las implementaciones típicas de estas API en servidores de aplicaciones o contenedores de servlets utilizan un servlet estándar para gestionar todas las interacciones con las solicitudes y respuestas HTTP , delegando la lógica de negocio real a los métodos del servicio web.
Páginas JavaServer
Las páginas JavaServer Pages ( JSP ) son componentes Java EE del lado del servidor que generan respuestas, generalmente páginas HTML , a las solicitudes HTTP de los clientes . Las JSP incrustan código Java en una página HTML mediante el uso de los delimitadores<% especiales `<script> ` y ` %><script>`. Una JSP se compila en un servlet Java , una aplicación Java independiente, la primera vez que se accede a ella. Después de eso, el servlet generado crea la respuesta. [ 70 ]
Aplicación Swing
Swing es una biblioteca de interfaz gráfica de usuario para la plataforma Java SE. Es posible especificar una apariencia diferente mediante el sistema de apariencia personalizable de Swing. Sun proporciona clones de Windows , GTK+ y Motif. Apple también ofrece una apariencia Aqua para macOS . Si bien las implementaciones anteriores de estas apariencias se consideraban deficientes, Swing en Java SE 6 soluciona este problema utilizando rutinas de dibujo de widgets de GUI más nativas de las plataformas subyacentes. [ 71 ]
Aplicación JavaFX
JavaFX es una plataforma de software para crear y distribuir aplicaciones de escritorio , así como aplicaciones web enriquecidas que pueden ejecutarse en una amplia variedad de dispositivos. JavaFX está diseñado para reemplazar a Swing como la biblioteca estándar de interfaz gráfica de usuario (GUI) para Java SE , pero desde JDK 11 JavaFX no forma parte del núcleo de JDK y, en su lugar, está disponible como un módulo independiente. [ 72 ] JavaFX es compatible con ordenadores de escritorio y navegadores web en Microsoft Windows , Linux y macOS . JavaFX no es compatible con la apariencia nativa del sistema operativo. [ 73 ]
Medicamentos genéricos
En 2004, se añadieron genéricos al lenguaje Java, como parte de J2SE 5.0. Antes de la introducción de los genéricos, cada declaración de variable tenía que ser de un tipo específico. Para las clases contenedoras, por ejemplo, esto es un problema porque no hay una manera fácil de crear un contenedor que acepte solo tipos específicos de objetos. O bien el contenedor opera en todos los subtipos de una clase o interfaz, normalmente Object, o bien hay que crear una clase contenedora diferente para cada clase contenida. Los genéricos permiten la comprobación de tipos en tiempo de compilación sin tener que crear muchas clases contenedoras, cada una con un código casi idéntico. Además de permitir un código más eficiente, se evita que se produzcan ciertas excepciones en tiempo de ejecución, emitiendo errores en tiempo de compilación. Si Java evitara que ClassCastExceptionse produjeran todos los errores de tipo en tiempo de ejecución ( ), sería seguro en cuanto a tipos .
En 2016, se demostró que el sistema de tipos de Java era deficiente, ya que era posible usar genéricos para construir clases y métodos que permitían asignar una instancia de una clase a una variable de otra clase no relacionada. El compilador aceptaba dicho código, pero este fallaba en tiempo de ejecución con una excepción de conversión de tipo. [ 74 ]
Crítica
Las críticas dirigidas a Java incluyen la implementación de genéricos, [ 75 ] la velocidad, [ 54 ] el manejo de números sin signo, [ 76 ] la implementación de aritmética de punto flotante, [ 77 ] y un historial de vulnerabilidades de seguridad en la implementación principal de la máquina virtual Java , HotSpot . [ 78 ] Los desarrolladores han criticado la complejidad y verbosidad de la API de persistencia de Java (JPA), una parte estándar de Java EE. Esto ha llevado a una mayor adopción de abstracciones de nivel superior como Spring Data JPA, que busca simplificar las operaciones de base de datos y reducir el código repetitivo. La creciente popularidad de tales marcos sugiere limitaciones en la facilidad de uso de la implementación estándar de JPA para el desarrollo moderno de Java.
Bibliotecas de clases
La biblioteca de clases de Java es la biblioteca estándar , desarrollada para dar soporte al desarrollo de aplicaciones en Java. Está controlada por Oracle en colaboración con otros a través del programa Java Community Process . [ 79 ] Las empresas o personas que participan en este proceso pueden influir en el diseño y desarrollo de las API. Este proceso fue objeto de controversia durante la década de 2010. [ 80 ] La biblioteca de clases contiene características como:
- Las bibliotecas principales, que incluyen:
- Entrada/salida (E/S o E/S) [ 81 ] y E/S sin bloqueo (E/ S/N), o E/S/E/S/N [ 82 ]
- Redes [ 83 ] (nuevo agente de usuario (cliente HTTP) desde Java 11 [ 84 ] )
- Programación reflexiva (reflexión)
- Computación concurrente (concurrencia) [ 81 ]
- Medicamentos genéricos
- Scripting, Compilador
- Programación funcional ( Lambda , streaming)
- Bibliotecas de colecciones que implementan estructuras de datos como listas , diccionarios , árboles , conjuntos , colas y colas de doble extremo , o pilas [ 85 ].
- Bibliotecas de procesamiento XML (análisis, transformación y validación)
- Seguridad [ 86 ]
- Bibliotecas de internacionalización y localización [ 87 ]
- Las bibliotecas de integración, que permiten al desarrollador de la aplicación comunicarse con sistemas externos. Estas bibliotecas incluyen:
- La API de conectividad de bases de datos Java (JDBC) para el acceso a bases de datos
- Interfaz de nombres y directorios de Java (JNDI) para búsqueda y descubrimiento
- Invocación remota de métodos (RMI) de Java y arquitectura de agente de solicitudes de objetos comunes (CORBA) para el desarrollo de aplicaciones distribuidas.
- Extensiones de administración de Java (JMX) para administrar y supervisar aplicaciones.
- Bibliotecas de interfaz de usuario , que incluyen:
- El Abstract Window Toolkit (AWT) (de gran tamaño o nativo ) , que proporciona componentes de interfaz gráfica de usuario , los medios para organizar esos componentes y los medios para gestionar los eventos de esos componentes.
- Las bibliotecas Swing (ligeras) , que están construidas sobre AWT pero proporcionan implementaciones (no nativas) de los widgets de AWT.
- API para la captura, el procesamiento y la reproducción de audio.
- JavaFX
- Una implementación dependiente de la plataforma de la máquina virtual Java que es el medio por el cual se ejecutan los códigos de bytes de las bibliotecas Java y las aplicaciones de terceros.
- Plugins, que permiten ejecutar applets en navegadores web.
- Java Web Start , que permite distribuir de forma eficiente las aplicaciones Java a los usuarios finales a través de Internet.
- Licencias y documentación
Documentación
Javadoc es un sistema de documentación integral, creado por Sun Microsystems . Proporciona a los desarrolladores un sistema organizado para documentar su código. Los comentarios de Javadoc tienen un asterisco adicional al principio, es decir, los delimitadores son /**y */, mientras que los comentarios multilínea normales en Java están delimitados por /*y */, y los comentarios de una sola línea comienzan con //. [ 88 ]
Implementaciones
Oracle Corporation es propietaria de la implementación oficial de la plataforma Java SE, tras la adquisición de Sun Microsystems el 27 de enero de 2010. Esta implementación se basa en la implementación original de Java desarrollada por Sun. La implementación de Oracle está disponible para Windows , macOS , Linux y Solaris . Dado que Java carece de una estandarización formal reconocida por Ecma International , ISO/IEC, ANSI u otras organizaciones de normalización, la implementación de Oracle es el estándar de facto .
La implementación de Oracle se presenta en dos distribuciones diferentes: el Entorno de Ejecución de Java (JRE), que contiene los componentes de la plataforma Java SE necesarios para ejecutar programas Java y está dirigido a usuarios finales, y el Kit de Desarrollo de Java (JDK), destinado a desarrolladores de software e incluye herramientas de desarrollo como el compilador de Java , Javadoc , Jar y un depurador . Oracle también ha lanzado GraalVM , un compilador e intérprete dinámico de Java de alto rendimiento.
OpenJDK es otra implementación de Java SE con licencia GNU GPL. Su desarrollo comenzó cuando Sun empezó a publicar el código fuente de Java bajo la licencia GPL. A partir de Java SE 7, OpenJDK es la implementación de referencia oficial de Java.
El objetivo de Java es lograr que todas las implementaciones de Java sean compatibles. Históricamente, la licencia de marca registrada de Sun para el uso de la marca Java insiste en que todas las implementaciones sean compatibles . Esto resultó en una disputa legal con Microsoft después de que Sun alegara que la implementación de Microsoft no admitía la invocación remota de métodos de Java (RMI) ni la interfaz nativa de Java (JNI) y que había agregado características específicas de la plataforma. Sun demandó en 1997 y, en 2001, ganó un acuerdo de US$20 millones, así como una orden judicial que hacía cumplir los términos de la licencia de Sun. [ 89 ] Como resultado, Microsoft ya no incluye Java con Windows .
Java independiente de la plataforma es esencial para Java EE , y se requiere una validación aún más rigurosa para certificar una implementación. Este entorno permite la portabilidad de las aplicaciones del lado del servidor.
Uso fuera de la plataforma Java
El lenguaje de programación Java requiere la presencia de una plataforma de software para que los programas compilados puedan ejecutarse.
Oracle proporciona la plataforma Java para su uso con Java. El SDK de Android es una plataforma de software alternativa, utilizada principalmente para desarrollar aplicaciones Android con su propio sistema de interfaz gráfica de usuario (GUI).
Androide
El lenguaje Java es un pilar fundamental en Android , un sistema operativo móvil de código abierto . Aunque Android, construido sobre el kernel de Linux , está escrito en gran parte en C, el SDK de Android utiliza el lenguaje Java como base para las aplicaciones de Android, pero no utiliza ninguno de sus estándares GUI, SE, ME u otros estándares Java establecidos. [ 90 ] El lenguaje de bytecode compatible con el SDK de Android es incompatible con el bytecode de la JVM y se ejecuta en su propia máquina virtual, optimizada para dispositivos con poca memoria, como teléfonos inteligentes y tabletas . Dependiendo de la versión de Android, el bytecode es interpretado por la máquina virtual Dalvik o compilado en código nativo por el Android Runtime .
Android no proporciona la biblioteca estándar completa de Java SE, aunque el SDK de Android incluye una implementación independiente de un subconjunto importante de la misma. Es compatible con Java 6 y algunas características de Java 7, y ofrece una implementación compatible con la biblioteca estándar ( Apache Harmony ).
Controversia
El uso de tecnología relacionada con Java en Android dio lugar a una disputa legal entre Oracle y Google. El 7 de mayo de 2012, un jurado de San Francisco dictaminó que, si las API podían estar protegidas por derechos de autor, entonces Google había infringido los derechos de autor de Oracle al usar Java en dispositivos Android. [ 91 ] El juez de distrito William Alsup dictaminó el 31 de mayo de 2012 que las API no podían estar protegidas por derechos de autor, [ 92 ] pero esta decisión fue revocada por el Tribunal de Apelaciones de los Estados Unidos para el Circuito Federal en mayo de 2014. [ 93 ] El 26 de mayo de 2016, el tribunal de distrito falló a favor de Google, dictaminando que la infracción de derechos de autor de la API de Java en Android constituía un uso legítimo. [ 94 ] En marzo de 2018, este fallo fue anulado por el Tribunal de Apelaciones, que remitió el caso para determinar los daños y perjuicios al tribunal federal de San Francisco. [ 95 ] Google presentó una petición de recurso de certiorari ante la Corte Suprema de los Estados Unidos en enero de 2019 para impugnar los dos fallos emitidos por la Corte de Apelaciones a favor de Oracle. [ 96 ] El 5 de abril de 2021, la Corte falló 6-2 a favor de Google, que su uso de las API de Java debía considerarse uso legítimo . Sin embargo, la corte se negó a pronunciarse sobre la posibilidad de protección por derechos de autor de las API, optando en cambio por determinar su fallo considerando que la API de Java era susceptible de protección por derechos de autor "puramente a efectos argumentativos". [ 97 ]
Véase también
- DO#
- C++
- Dalvik , utilizado en versiones antiguas de Android, fue reemplazado por el entorno de ejecución de Android sin JIT.
- Computación distribuida heterogénea en Java
- Lista de API de Java
- Lista de frameworks de Java
- Lista de lenguajes JVM
- Lista de libros de programación Java
- Lista de software y herramientas Java
- Lista de máquinas virtuales Java
- Esquema del lenguaje de programación Java
- Comparación de C# y Java
- Comparación de Java y C++
- Comparación de lenguajes de programación
Referencias
- ↑ Binstock, Andrew (20 de mayo de 2015). "Java's 20 Years of Innovation" . Forbes . Archivado del original el 14 de marzo de 2016. Recuperado el 18 de marzo de 2016 .
- ↑ "JDK 26" .
- 1 2 3 4 Barbara Liskov con John Guttag (2000). Desarrollo de programas en Java: abstracción, especificación y diseño orientado a objetos . EE. UU., Addison Wesley. ISBN 978-0-201-65768-5.
- ↑ Chaudhary, Harry H. (28 de julio de 2014). "Cómo superar la entrevista de programación en Java : más de 2000 preguntas y respuestas para entrevistas de Java" . Archivado del original el 29 de septiembre de 2023. Consultado el 29 de mayo de 2016 .
- ↑ Java 5.0 añadió varias características nuevas al lenguaje (el bucle for mejorado , el autoboxing , los argumentos variables y las anotaciones ), después de que se introdujeran en el lenguaje C#, similar y competidor.Archivado el 19 de marzo de 2011 en Wayback Machine .Archivado el 7 de enero de 2006 en Wayback Machine .
- ↑ Gosling, James; McGilton, Henry (mayo de 1996). "El entorno del lenguaje Java" . Archivado del original el 6 de mayo de 2014. Recuperado el 6 de mayo de 2014 .
- ↑ Gosling, James; Joy, Bill; Steele, Guy; Bracha, Gilad. "Especificación del lenguaje Java, 2.ª edición" . Archivado del original el 5 de agosto de 2011. Recuperado el 8 de febrero de 2008 .
- ↑ "El AZ de los lenguajes de programación: Modula-3" . Computerworld. Archivado del original el 5 de enero de 2009. Consultado el 9 de junio de 2010 .
- ↑ Niklaus Wirth declaró en varias ocasiones públicas, por ejemplo, en una conferencia en el Museo Politécnico de Moscú en septiembre de 2005 (existen varios relatos independientes de primera mano en ruso, por ejemplo, uno con una grabación de audio: Filippova, Elena (22 de septiembre de 2005). "Conferencia de Niklaus Wirth en el Museo Politécnico de Moscú" . Archivado del original el 1 de diciembre de 2020. Recuperado el 20 de noviembre de 2011 .), que el equipo de diseño de Sun Java obtuvo la licencia del código fuente del compilador Oberon varios años antes del lanzamiento de Java y lo examinó: una compacidad (relativa), seguridad de tipos, recolección de basura, ausencia de herencia múltiple para clases : todas estas características clave de diseño general son compartidas por Java y Oberon.
- ↑ Patrick Naughton cita a Objective-C como una fuerte influencia en el diseño del lenguaje de programación Java, afirmando que entre los derivados directos notables se incluyen las interfaces de Java (derivadas del protocolo de Objective-C ) y las clases envoltorio primitivas.Archivado el 13 de julio de 2011 en Wayback Machine .
- ↑ TechMetrix Research (1999). "Historia de Java" (PDF) . Informe de servidores de aplicaciones Java . Archivado del original (PDF) el 29 de diciembre de 2010.
El proyecto siguió adelante bajo el nombre
de green
y el lenguaje se basó en un modelo antiguo de
UCSD Pascal
, lo que permite generar código interpretado.
- ↑ "Una conversación con James Gosling" . ACM Queue . Vol. 2, n.º 5. Association for Computing Machinery . 31 de agosto de 2004. Archivado del original el 16 de julio de 2015. Consultado el 9 de junio de 2010 .
- ↑ El equipo del lenguaje Java. Acerca de los 'Delegados' de Microsoft (Libro Blanco). JavaSoft, Sun Microsystems, Inc. Archivado del original el 27 de junio de 2012.
En el verano de 1996, Sun estaba diseñando el precursor de lo que ahora es el modelo de eventos de AWT y la arquitectura de componentes JavaBeans. Borland contribuyó enormemente a este proceso. Analizamos con mucho cuidado Delphi Object Pascal y construimos un prototipo funcional de referencias a métodos vinculados para comprender su interacción con el lenguaje de programación Java y sus API.
- ↑ "Especificaciones de la capilla (Agradecimientos)" (PDF) . Cray Inc. 1 de octubre de 2015. Archivado (PDF) del original el 5 de febrero de 2016. Recuperado el 14 de enero de 2016 .
- ↑ "Introducción a la documentación de Gambas" . Sitio web de Gambas. Archivado del original el 9 de octubre de 2017. Consultado el 9 de octubre de 2017 .
- ↑ "Preguntas y respuestas de Facebook: Hack lleva el tipado estático al mundo de PHP" . InfoWorld . 26 de marzo de 2014. Archivado del original el 13 de febrero de 2015. Consultado el 11 de enero de 2015 .
- ↑ "¿Escribir una vez, ejecutar en cualquier lugar?" . Computer Weekly . 2 de mayo de 2002. Archivado del original el 13 de agosto de 2021 . Consultado el 27 de julio de 2009 .
- 1 2 3 "1.2 Objetivos de diseño del lenguaje de programación Java" . Oracle. 1 de enero de 1999. Archivado del original el 23 de enero de 2013. Recuperado el 14 de enero de 2013 .
- ↑ https://arxiv.org/pdf/1908.11685 Lenguaje de programación Java
- ↑ Melanson, Mike (9 de agosto de 2022). "No lo llames un regreso: por qué Java sigue siendo el campeón" . GitHub . Archivado del original el 25 de agosto de 2023. Recuperado el 15 de octubre de 2023 .
- ↑ "Los mejores lenguajes de programación" . El estado del Octoverso . GitHub . Archivado del original el 2 de agosto de 2023. Consultado el 15 de octubre de 2023 .
- ↑ McMillan, Robert (1 de agosto de 2013). "¿Está Java perdiendo su encanto?" . Wired . Archivado del original el 15 de febrero de 2017. Consultado el 15 de octubre de 2023 .
- ↑ Byous, Jon (c. 1998). "Tecnología Java: Los primeros años" . Sun Developer Network . Sun Microsystems . Archivado del original el 20 de abril de 2005. Recuperado el 22 de abril de 2005 .
- ↑ Murphy, Kieron (4 de octubre de 1996). "¿Entonces por qué decidieron llamarlo Java?" . JavaWorld . Archivado del original el 13 de julio de 2020. Recuperado el 13 de julio de 2020 .
- ↑ Kabutz, Heinz; Érase una vez un roble. Archivado el 13 de abril de 2007 en Wayback Machine . Artima. Consultado el 29 de abril de 2007.
- ↑ "JAVASOFT LANZA JAVA 1.0" . Archivado del original el 10 de marzo de 2007. Consultado el 13 de mayo de 2018 .
- ↑ Programación orientada a objetos con Java: Fundamentos y aplicaciones . Tata McGraw-Hill Education. pág. 34.
- ↑ "JSG – Java Study Group" . open-std.org . Archivado del original el 25 de agosto de 2006. Consultado el 2 de agosto de 2006 .
- ↑ "Por qué Java no se estandarizó dos veces" (PDF) . Archivado (PDF) del original el 13 de enero de 2014. Consultado el 3 de junio de 2018 .
- ↑ "¿Qué es ECMA y por qué le importa a Microsoft?" . ZDNet . Archivado del original el 6 de mayo de 2014. Consultado el 6 de mayo de 2014 .
- ↑ "Sitio web del Proceso de la Comunidad Java" . Jcp.org. 24 de mayo de 2010. Archivado del original el 8 de agosto de 2006. Consultado el 9 de junio de 2010 .
- ↑ "JAVAONE: Sun – La mayor parte de Java es de código abierto" . GrnLight.net. Archivado del original el 27 de mayo de 2014. Recuperado el 26 de mayo de 2014 .
- ↑ "El papel en evolución de Sun como promotor de Java" . O'Reilly Media . Archivado del original el 15 de septiembre de 2010. Consultado el 2 de agosto de 2009 .
- ↑ "Oracle y Java" . oracle.com . Oracle Corporation. Archivado del original el 31 de enero de 2010. Consultado el 23 de agosto de 2010.
Oracle ha sido un importante y firme defensor de Java desde su aparición en 1995 y asume el nuevo rol de custodio de la tecnología Java con un compromiso inquebrantable para fomentar una comunidad de participación y transparencia.
- ↑ Gosling, James (9 de abril de 2010). "Es hora de seguir adelante..." En un nuevo camino . Archivado del original el 5 de noviembre de 2010. Recuperado el 16 de noviembre de 2011 .
- ↑ Tema, Dalibor. "Transición a una web sin complementos" . Archivado del original el 16 de marzo de 2016. Recuperado el 15 de marzo de 2016 .
- ↑ "Aprenda sobre la tecnología Java" . Oracle. Archivado del original el 24 de noviembre de 2011. Consultado el 21 de noviembre de 2011 .
- ↑ "¿Por qué debería desinstalar versiones anteriores de Java de mi sistema?" . Oracle. Archivado del original el 12 de febrero de 2018. Consultado el 24 de septiembre de 2021 .
- ↑ "Hoja de ruta de soporte de Oracle Java SE" . Oracle. 13 de septiembre de 2021. Archivado del original el 1 de junio de 2026. Consultado el 3 de junio de 2026 .
- ↑ "Soporte para Temurin™; Adoptium" . adoptium.net . Archivado del original el 29 de marzo de 2024. Consultado el 29 de marzo de 2024 .
- ↑ "JAVASOFT LANZA JAVA 1.0" . sun.com . Archivado del original el 10 de marzo de 2007. Consultado el 5 de febrero de 2008 .
- ↑ Chander, Sharat. "Introducción a Java SE 11" . oracle.com . Archivado del original el 26 de septiembre de 2018. Consultado el 26 de septiembre de 2018 .
- ↑ Chander, Sharat (15 de septiembre de 2020). "¡La llegada de Java 15!" . Oracle . Archivado del original el 16 de septiembre de 2020. Recuperado el 15 de septiembre de 2020 .
- ↑ "JDK 21" . openjdk.org . Archivado del original el 20 de septiembre de 2023. Consultado el 20 de septiembre de 2023 .
- ↑ "JDK 24" .
- ↑ "JDK 25" .
- ↑ "JDK 26" .
- ↑ "Descripción general de Java Card" . Oracle Technology Network . Oracle. Archivado del original el 7 de enero de 2015. Consultado el 18 de diciembre de 2014 .
- ↑ "Plataforma Java, Micro Edición (Java ME)" . Oracle Technology Network . Oracle. Archivado del original el 4 de enero de 2015. Recuperado el 18 de diciembre de 2014 .
- ↑ "Java SE" . Oracle Technology Network . Oracle. Archivado del original el 24 de diciembre de 2014. Recuperado el 18 de diciembre de 2014 .
- ↑ "Plataforma Java, Edición Empresarial (Java EE)" . Oracle Technology Network . Oracle. Archivado del original el 17 de diciembre de 2014. Recuperado el 18 de diciembre de 2014 .
- ↑ "Análisis en profundidad del nuevo compilador JIT de Java: Graal | Baeldung" . www.baeldung.com . 6 de agosto de 2021. Archivado del original el 28 de octubre de 2021. Consultado el 13 de octubre de 2021 .
- ↑ "¿La JVM (Máquina Virtual de Java) depende de la plataforma o es independiente de ella? ¿Qué ventaja tiene usar la JVM y que Java sea un lenguaje traducido?" . Entrevista a un programador. Archivado del original el 19 de enero de 2015. Consultado el 19 de enero de 2015 .
- 1 2 Jelovic, Dejan. "Por qué Java siempre será más lento que C++" . Archivado del original el 11 de febrero de 2008. Recuperado el 15 de febrero de 2008 .
- ↑ Hundt, Robert. "Reconocimiento de bucles en C++/Java/Go/Scala" (PDF) . Archivado (PDF) del original el 16 de noviembre de 2011. Recuperado el 12 de julio de 2012 .
- ↑ "El compilador Java Just-In-Time de Symantec se integrará en Sun JDK 1.1" . Archivado del original el 28 de junio de 2010. Consultado el 1 de agosto de 2009 .
- ↑ Salcic, Zoran; Park, Heejong; Teich, Jürgen; Malik, Avinash; Nadeem, Muhammad (22 de julio de 2017). "Noc-HMP: un procesador multinúcleo heterogéneo para sistemas embebidos diseñado en SystemJ". ACM Transactions on Design Automation of Electronic Systems . 22 (4): 73. doi : 10.1145/3073416 . ISSN 1084-4309 . S2CID 11150290 .
- 1 2 3 Bloch 2018 , págs. 26-28, §Punto 7: Eliminar referencias a objetos obsoletas.
- ↑ "NullPointerException" . Oracle. Archivado del original el 6 de mayo de 2014. Recuperado el 6 de mayo de 2014 .
- ↑ "Excepciones en Java" . Artima.com. Archivado del original el 21 de enero de 2009. Consultado el 10 de agosto de 2010 .
- ↑ "Sistema (Java SE 25 y JDK 25)" . Oracle . Consultado el 14 de enero de 2026 .
{{cite web}}: CS1 mantenimiento: estado de la URL ( enlace ) - ↑ Walter, A. (2010). Hacia la certificación de aplicaciones Java para proyectos críticos de seguridad. Actas de Embedded Real-Time Software and Systems, ERTS2 , 1-7.
- ↑ "Mejoras de rendimiento de la máquina virtual Java HotSpot™" . Oracle.com. Archivado del original el 29 de mayo de 2017. Consultado el 26 de abril de 2017 .
- ↑ "Sobrecarga de operadores (C# vs Java)" . C# para desarrolladores Java . Microsoft. Archivado del original el 7 de enero de 2015. Consultado el 10 de diciembre de 2014 .
- ↑ "Herencia múltiple de estado, implementación y tipo" . Los tutoriales de Java . Oracle. Archivado del original el 9 de noviembre de 2014. Consultado el 10 de diciembre de 2014 .
- ↑ Krill, Paul (16 de septiembre de 2025). "JDK 25: Las nuevas características de Java 25" . InfoWorld . Consultado el 9 de octubre de 2025 .
- ↑ Pressler, Ron; Laskey, Jim; Bierman, Gavin (11 de julio de 2025). "JEP 512: Archivos fuente compactos y métodos principales de instancia" . OpenJDK . Consultado el 9 de octubre de 2025 .
- ↑ "API, funciones y opciones obsoletas" . Oracle. Archivado del original el 19 de junio de 2019. Consultado el 31 de mayo de 2019 .
- ↑ "Applet (Java Platform SE 7)" . Documentación . Oracle. Archivado del original el 2 de agosto de 2020. Consultado el 1 de mayo de 2020 .
- ↑ "¿Qué es una página JSP? - El tutorial de Java EE 5" . docs.oracle.com . Archivado del original el 2 de agosto de 2020. Consultado el 1 de mayo de 2020 .
- ↑ "Trail: Creación de una GUI con JFC/Swing (Los tutoriales de Java)" . docs.oracle.com . Archivado del original el 29 de abril de 2020. Consultado el 1 de mayo de 2020 .
- ↑ "Eliminado de JDK 11, JavaFX 11 llega como un módulo independiente" . InfoWorld . 20 de septiembre de 2018. Archivado del original el 14 de octubre de 2020. Consultado el 13 de octubre de 2020 .
- ↑ "Primeros pasos con JavaFX: Hola mundo, al estilo JavaFX" . Tutoriales y documentación de JavaFX 2. Oracle. Archivado del original el 2 de agosto de 2020. Consultado el 1 de mayo de 2020 .
- ↑ "Los sistemas de tipos de Java y Scala son defectuosos" (PDF) . Archivado (PDF) del original el 28 de noviembre de 2016. Consultado el 20 de febrero de 2017 .
- ↑ Arnold, Ken (27 de junio de 2005). "Los genéricos se consideran perjudiciales" . java.net. Archivado del original el 10 de octubre de 2007. Recuperado el 10 de septiembre de 2015 .
- ↑ Owens, Sean R. "Java y los tipos de datos unsigned int, unsigned short, unsigned byte, unsigned long, etc. (O mejor dicho, la ausencia de estos)" . Archivado del original el 20 de febrero de 2009. Consultado el 4 de julio de 2011 .
- ↑ Kahan, William (1 de marzo de 1998). "Cómo el punto flotante de Java perjudica a todos en todas partes: Taller de Java de la ACM de 1998 (Stanford)" (PDF) . Ingeniería Eléctrica e Informática, Universidad de California en Berkeley. Archivado (PDF) del original el 5 de septiembre de 2012. Recuperado el 4 de junio de 2011 .
- ↑ "¿Has comprobado Java?" . Archivado del original el 21 de septiembre de 2012 . Consultado el 23 de diciembre de 2011 .
- ↑ Cadenhead, Rogers (20 de noviembre de 2017), Entendiendo cómo funcionan los programas Java , archivado del original el 13 de agosto de 2021 , recuperado el 26 de marzo de 2019.
- ↑ Woolf, Nicky (26 de mayo de 2016). "Google gana una batalla legal de seis años con Oracle por los derechos de autor del código de Android" . The Guardian . ISSN 0261-3077 . Archivado del original el 26 de marzo de 2019. Recuperado el 26 de marzo de 2019 .
- 1 2 Bloch 2018 , págs. 1–4, § 1 Introducción.
- ↑ «java.nio (Plataforma Java SE 8)» . docs.oracle.com .
- ↑ "Redes Java" . docs.oracle.com .
- ↑ "HttpClient (Java SE 11 y JDK 11)" . docs.oracle.com .
- ↑ "Descripción general del marco de colecciones" . Documentación de Java . Oracle. Archivado del original el 31 de diciembre de 2014. Consultado el 18 de diciembre de 2014 .
- ↑ "Descripción general de la seguridad de Java" . Documentación de Java . Oracle. Archivado del original el 3 de enero de 2015. Consultado el 18 de diciembre de 2014 .
- ↑ "Trail: Internationalization" . Los tutoriales de Java . Oracle. Archivado del original el 31 de diciembre de 2014. Consultado el 18 de diciembre de 2014 .
- ↑ "Cómo escribir comentarios de documentación para la herramienta Javadoc" . Oracle Technology Network . Oracle. Archivado del original el 18 de diciembre de 2014. Consultado el 18 de diciembre de 2014 .
- ↑ Niccolai, James (24 de enero de 2001). "Sun y Microsoft llegan a un acuerdo en la demanda por Java" . JavaWorld . IDG News Service . Archivado del original el 14 de julio de 2020. Consultado el 13 de julio de 2020 .
- ↑ van Gurp, Jilles (13 de noviembre de 2007). "Google Android: primeras impresiones y críticas" . Javalobby . Archivado del original el 28 de agosto de 2008. Recuperado el 7 de marzo de 2009. Francamente
, no entiendo por qué Google pretende ignorar la gran cantidad de implementaciones existentes. Me parece un caso grave de "no fue inventado aquí". En última instancia, esto ralentizará la adopción. Ya hay demasiadas plataformas Java para el mundo móvil y esta es otra más.
- ↑ Mullin, Joe (7 de mayo de 2012). "Google culpable de infracción en juicio contra Oracle; se avecinan problemas legales" . Law & Disorder . Ars Technica. Archivado del original el 8 de mayo de 2012. Recuperado el 8 de mayo de 2012 .
- ↑ Mullin, Joe (31 de mayo de 2012). "Google gana un fallo crucial sobre la API, el caso de Oracle queda destrozado" . Ars Technica . Archivado del original el 12 de marzo de 2017. Consultado el 1 de junio de 2012 .
- ↑ Rosenblatt, Seth (9 de mayo de 2014). "Tribunal falla a favor de Oracle en el caso Android en apelación de patentes de Java" . CNET . Archivado del original el 10 de mayo de 2014. Recuperado el 10 de mayo de 2014 .
- ↑ Mullin, Joe (26 de mayo de 2016). "Google supera a Oracle: Android hace un "uso justo" de las API de Java" . Ars Technica . Archivado del original el 20 de enero de 2017. Recuperado el 26 de mayo de 2016 .
- ↑ Farivar, Cyrus (27 de marzo de 2018) .«El uso que Google hizo de los paquetes de la API de Java no fue justo», dictaminó el tribunal de apelaciones . Ars Technica . Archivado del original el 24 de septiembre de 2019. Consultado el 6 de agosto de 2019 .
- ↑ Lee, Timothy (23 de abril de 2019). "Google pide a la Corte Suprema que revoque el desastroso fallo sobre los derechos de autor de las API" . Ars Technica . Archivado del original el 23 de abril de 2019. Recuperado el 23 de abril de 2019 .
- ↑ " Google LLC v. Oracle America, Inc 593 US ____ (2021)" (PDF) . Archivado (PDF) del original el 5 de abril de 2021. Recuperado el 6 de abril de 2021 .
Bibliografía
- Bloch, Joshua (2018). Java eficaz: Guía del lenguaje de programación (Tercera ed.). Addison-Wesley. ISBN 978-0-13-468599-1.
- Gosling, James; Joy, Bill ; Steele, Guy L. Jr .; Bracha, Gilad (2005). Especificación del lenguaje Java (3.ª ed.). Addison-Wesley. ISBN 0-321-24678-0Archivado del original el 14 de febrero de 2012. Consultado el 8 de febrero de 2019 .
- Gosling, James; Joy, Bill; Steele, Guy; Bracha, Gilad; Buckley, Alex (2014). Especificación del lenguaje Java® (PDF) (Java SE 8 ed.). Archivado (PDF) del original el 21 de octubre de 2014. Recuperado el 18 de noviembre de 2014 .
- Lindholm, Tim; Yellin, Frank (1999). Especificación de la máquina virtual Java (2.ª ed.). Addison-Wesley. ISBN 0-201-43294-3Archivado del original el 25 de septiembre de 2011. Consultado el 8 de febrero de 2019 .
Enlaces externos
- Software Java, Oracle
- OpenJDK, Oracle
- Compilaciones de JDK, Adoptium
- Java para desarrolladores, Dev.java
- Noticias y opiniones de los miembros del equipo Java de Oracle.
- Wiki de OpenJDK
- Proceso de la comunidad Java
- Java (lenguaje de programación)
- Familia de lenguajes de programación C
- Lenguajes de programación basados en clases
- Lenguajes de programación concurrentes
- Java (plataforma de software)
- Solicitudes de especificación de Java
- Lenguajes de programación de la JVM
- Lenguajes de programación multiparadigma
- Lenguajes de programación orientados a objetos
- Lenguajes de programación creados en 1995
- Lenguajes de programación
- Lenguajes de programación de tipado estático
- Sun Microsystems
- Lenguajes de programación compilados
- Inventos estadounidenses
