Java es un conjunto de software y especificaciones de computadora desarrollado por James Gosling en Sun Microsystems , que luego fue adquirido por Oracle Corporation , que proporciona un sistema para desarrollar software de aplicación e implementarlo en un entorno de computación multiplataforma . Java se utiliza en una amplia variedad de plataformas informáticas, desde dispositivos integrados y teléfonos móviles hasta servidores empresariales y supercomputadoras . Los subprogramas Java , que son menos comunes que las aplicaciones Java independientes, se ejecutaban comúnmente de forma segura,Entornos de espacio aislado para proporcionar muchas características de aplicaciones nativas al estar incrustados en páginas HTML .
Autor (es) original (es) | James Gosling , Sun Microsystems |
---|---|
Desarrollador (es) | Oracle Corporation |
Versión inicial | 23 de enero de 1996 [1] [2] |
Lanzamiento estable | 16.0.1 (20 de abril de 2021 [±] 11.0.11 (20 de abril de 2021 [3] ) [±] | )
Versión de vista previa | 17 + 21 (6 de mayo de 2021 [5] ) [±] |
Escrito en | Java , C ++ , C , lenguaje ensamblador [6] |
Sistema operativo | Microsoft Windows , Solaris , Linux , macOS [7] |
Plataforma | IA-32 , x64 , ARMv7 , ARMv8 , SPARC (hasta Java 14) (Java 8 incluye soporte de 32 bits , aunque Oracle ya no lo admite libremente para uso comercial), las plataformas de 32 bits no son compatibles con otras versiones, ya que se eliminaron oficialmente en Java 10.) [7] |
Disponible en | Inglés, chino, francés, alemán, italiano, japonés, coreano, portugués, español, sueco [8] |
Tipo | Plataforma de software |
Licencia | Licencia dual: GNU General Public License versión 2 con excepción de classpath, [9] y una licencia propietaria . [10] |
Sitio web | java .com |
Escribir en el lenguaje de programación Java es la forma principal de producir código que se implementará como código de bytes en una máquina virtual Java (JVM); Los compiladores de código de bytes también están disponibles para otros lenguajes, incluidos Ada , JavaScript , Python y Ruby . Además, se han diseñado varios lenguajes para ejecutarse de forma nativa en la JVM, incluidos Clojure , Groovy y Scala . La sintaxis de Java se basa en gran medida en C y C ++ , pero las características orientadas a objetos se modelan a partir de Smalltalk y Objective-C . [11] Java evita ciertas construcciones de bajo nivel como punteros y tiene un modelo de memoria muy simple donde los objetos se asignan en el montón (mientras que algunas implementaciones, por ejemplo, todas las que actualmente son compatibles con Oracle, pueden usar la optimización del análisis de escape para asignar en la pila ) y todas las variables de los tipos de objetos son referencias . La gestión de la memoria se maneja a través de la recolección de basura automática integrada realizada por la JVM.
El 13 de noviembre de 2006, Sun Microsystems puso a disposición la mayor parte de su implementación de Java bajo la Licencia Pública General GNU (GPL). [12] [13]
La última versión es Java 16 , lanzada en marzo de 2021. Como plataforma de código abierto, Java tiene muchos distribuidores, incluidos Amazon, IBM, Azul Systems y AdoptOpenJDK. Las distribuciones incluyen Amazon Correto, Zulu, AdoptOpenJDK y Liberica. En cuanto a Oracle, distribuye Java 8 y también pone a disposición, por ejemplo, Java 11, una versión de soporte a largo plazo (LTS) actualmente admitida , lanzada el 25 de septiembre de 2018. Oracle (y otros) "recomienda encarecidamente que desinstale las versiones anteriores de Java "que Java 8, [14] debido a serios riesgos debido a problemas de seguridad no resueltos. [15] [16] [17] Dado que Java 9 (y 10, 12, 13, 14 y 15) ya no es compatible, Oracle aconseja a sus usuarios que "realicen una transición inmediata" a una versión compatible. Oracle lanzó la última actualización pública gratuita para uso comercial para el Java 8 LTS heredado en enero de 2019 y continuará admitiendo Java 8 con actualizaciones públicas para uso personal de manera indefinida. El soporte extendido de Oracle para Java 6 finalizó en diciembre de 2018. [18]
Plataforma
La plataforma Java es un conjunto de programas que facilitan el desarrollo y la ejecución de programas escritos en el lenguaje de programación Java . Una plataforma Java incluye un motor de ejecución (llamado máquina virtual ), un compilador y un conjunto de bibliotecas ; También puede haber servidores adicionales y bibliotecas alternativas que dependen de los requisitos. Las plataformas Java se han implementado para una amplia variedad de hardware y sistemas operativos con el fin de permitir que los programas Java se ejecuten de manera idéntica en todos ellos. Las diferentes plataformas se dirigen a diferentes clases de dominios de dispositivos y aplicaciones :
- Java Card : una tecnología que permite que pequeñas aplicaciones basadas en Java ( applets ) se ejecuten de forma segura en tarjetas inteligentes y dispositivos similares de memoria pequeña.
- Java ME (Micro Edition): especifica varios conjuntos diferentes de bibliotecas (conocidos como perfiles) para dispositivos con capacidades limitadas de almacenamiento, visualización y energía. A menudo se utiliza para desarrollar aplicaciones para dispositivos móviles, PDA, decodificadores de TV e impresoras.
- Java SE (Standard Edition): para uso general en PC de escritorio, servidores y dispositivos similares.
- Jakarta EE (Enterprise Edition): Java SE más varias API que son útiles para aplicaciones empresariales cliente-servidor de varios niveles .
La plataforma Java consta de varios programas, cada uno de los cuales proporciona una parte de sus capacidades generales. Por ejemplo, el compilador de Java, que convierte el código fuente de Java en código de bytes de Java (un lenguaje intermedio para la JVM), se proporciona como parte del Kit de desarrollo de Java (JDK). El entorno de ejecución de Java (JRE), complementando la JVM con un compilador Just-In-Time (JIT) , convierte el bytecode intermedio en código máquina nativo sobre la marcha. La plataforma Java también incluye un extenso conjunto de bibliotecas.
Los componentes esenciales de la plataforma son el compilador del lenguaje Java, las bibliotecas y el entorno de ejecución en el que el código de bytes intermedio de Java se ejecuta de acuerdo con las reglas establecidas en la especificación de la máquina virtual.
máquina virtual de Java
El corazón de la plataforma Java es la "máquina virtual" que ejecuta programas de código de bytes de Java . Este código de bytes es el mismo sin importar en qué hardware o sistema operativo se esté ejecutando el programa. Sin embargo, las nuevas versiones, como las de Java 10 (y anteriores), han realizado pequeños cambios, lo que significa que el código de bytes en general solo es compatible con versiones posteriores . Hay un compilador JIT (Just In Time) dentro de la máquina virtual Java o JVM. El compilador JIT traduce el código de bytes de Java en instrucciones del procesador nativo en tiempo de ejecución y almacena en caché el código nativo en la memoria durante la ejecución.
El uso de código de bytes como lenguaje intermedio permite que los programas Java se ejecuten en cualquier plataforma que tenga una máquina virtual disponible. El uso de un compilador JIT significa que las aplicaciones Java, después de un breve retraso durante la carga y una vez que se han "calentado" al ser compiladas en su totalidad o en su mayoría con JIT, tienden a ejecutarse tan rápido como los programas nativos. [19] [20] [21] Desde la versión 1.2 de JRE, la implementación de JVM de Sun ha incluido un compilador justo a tiempo en lugar de un intérprete.
Aunque los programas Java son multiplataforma o independientes de la plataforma, el código de las máquinas virtuales Java (JVM) que ejecutan estos programas no lo es. Cada plataforma operativa compatible tiene su propia JVM.
Bibliotecas de clases
En la mayoría de los sistemas operativos (SO) modernos , se proporciona una gran cantidad de código reutilizable para simplificar el trabajo del programador. Este código generalmente se proporciona como un conjunto de bibliotecas cargables dinámicamente a las que las aplicaciones pueden llamar en tiempo de ejecución. Debido a que la plataforma Java no depende de ningún sistema operativo específico, las aplicaciones no pueden depender de ninguna de las bibliotecas de sistemas operativos preexistentes. En cambio, la plataforma Java proporciona un conjunto completo de sus propias bibliotecas de clases estándar que contienen muchas de las mismas funciones reutilizables que se encuentran comúnmente en los sistemas operativos modernos. La mayor parte de la biblioteca del sistema también está escrita en Java. Por ejemplo, la biblioteca Swing pinta la interfaz de usuario y maneja los eventos en sí, eliminando muchas diferencias sutiles entre cómo las diferentes plataformas manejan los componentes.
Las bibliotecas de clases de Java tienen tres propósitos dentro de la plataforma Java. Primero, al igual que otras bibliotecas de código estándar, las bibliotecas de Java proporcionan al programador un conjunto bien conocido de funciones para realizar tareas comunes, como mantener listas de elementos o realizar análisis complejos de cadenas. En segundo lugar, las bibliotecas de clases proporcionan una interfaz abstracta para tareas que normalmente dependerían en gran medida del hardware y del sistema operativo. Tareas como el acceso a la red y el acceso a archivos a menudo están muy entrelazadas con las implementaciones distintivas de cada plataforma. Las bibliotecas java.net
y java.io
implementan una capa de abstracción en el código nativo del sistema operativo y luego proporcionan una interfaz estándar para que las aplicaciones Java realicen esas tareas. Finalmente, cuando alguna plataforma subyacente no admite todas las características que espera una aplicación Java, las bibliotecas de clases funcionan para manejar con elegancia los componentes ausentes, ya sea mediante emulación para proporcionar un sustituto, o al menos proporcionando una forma coherente de verificar la presencia. de una característica específica.
Idiomas
La palabra "Java", por sí sola, generalmente se refiere al lenguaje de programación Java que fue diseñado para su uso con la plataforma Java. Los lenguajes de programación generalmente están fuera del alcance de la frase "plataforma", aunque el lenguaje de programación Java se enumeró como una parte central de la plataforma Java antes de Java 7. Por lo tanto, el lenguaje y el tiempo de ejecución se consideraban comúnmente una sola unidad. Sin embargo, se hizo un esfuerzo con la especificación Java 7 para tratar más claramente el lenguaje Java y la máquina virtual Java como entidades separadas, de modo que ya no se consideren una sola unidad. [22]
Los terceros han producido muchos compiladores o intérpretes dirigidos a la JVM. Algunos de estos son para lenguajes existentes, mientras que otros son para extensiones del lenguaje Java. Éstas incluyen:
- BeanShell : un lenguaje de scripting ligero para Java [23] (ver también JShell )
- Ceilán : un lenguaje de programación orientado a objetos, fuertemente tipado estáticamente con énfasis en la inmutabilidad
- Clojure : un dialecto moderno, dinámico y funcional del lenguaje de programación Lisp en la plataforma Java
- Gosu : un lenguaje de programación basado en Java Virtual Machine de uso general publicado bajo la licencia Apache 2.0
- Groovy : un lenguaje estático y dinámico totalmente interoperable con Java, compatible con la sintaxis de Java, con características de Python, Ruby, Perl y Smalltalk
- JRuby - Un intérprete de Ruby
- Jython : un intérprete de Python
- Kotlin : un lenguaje de programación industrial para JVM con interoperabilidad completa de Java
- Rhino : un intérprete de JavaScript
- Scala : un lenguaje de programación de múltiples paradigmas con sintaxis no compatible con Java diseñado como un "mejor Java"
Plataformas similares
El éxito de Java y su concepto escribir una vez, ejecutar en cualquier lugar ha llevado a otros esfuerzos similares, en particular .NET Framework , que apareció desde 2002, que incorpora muchos de los aspectos exitosos de Java. .NET se construyó desde cero para admitir múltiples lenguajes de programación, mientras que la plataforma Java se construyó inicialmente para admitir solo el lenguaje Java, aunque desde entonces se han creado muchos otros lenguajes para JVM. Al igual que Java, los lenguajes .NET se compilan en código de bytes y son ejecutados por Common Language Runtime (CLR), que tiene un propósito similar al de la JVM. Al igual que la JVM, CLR proporciona administración de memoria a través de la recolección automática de basura y permite que el código de bytes .NET se ejecute en múltiples sistemas operativos.
.NET incluyó un lenguaje similar a Java llamado primero J ++ , luego llamado Visual J # que era incompatible con la especificación de Java. Se suspendió en 2007 y el soporte finalizó en 2015.
Kit de desarrollo de Java
El Java Development Kit ( JDK ) es un producto de Sun dirigido a desarrolladores de Java. Desde la introducción de Java, ha sido, con mucho, el kit de desarrollo de software (SDK) de Java más utilizado . [ cita requerida ] Contiene un compilador de Java, una copia completa de Java Runtime Environment (JRE) y muchas otras herramientas de desarrollo importantes.
Historia
La plataforma y el lenguaje Java comenzaron como un proyecto interno en Sun Microsystems en diciembre de 1990, proporcionando una alternativa a los lenguajes de programación C ++ / C. El ingeniero Patrick Naughton se sentía cada vez más frustrado con el estado de las herramientas y las interfaces de programación de aplicaciones (API) C ++ y C de Sun , así como con la forma en que la organización manejaba el proyecto NeWS . Naughton informó a Scott McNealy sobre su plan de dejar Sun y mudarse a NeXT ; McNealy le pidió que fingiera ser Dios y le enviara un correo electrónico explicándole cómo arreglar la empresa. Naughton imaginó la creación de un pequeño equipo que pudiera trabajar de forma autónoma sin la burocracia que estaba paralizando otros proyectos de Sun. McNealy envió el mensaje a otras personas importantes en Sun y comenzó el Proyecto Stealth . [24]
El Stealth Project pronto pasó a llamarse Green Project , y James Gosling y Mike Sheridan se unieron a Naughton. Junto con otros ingenieros, comenzaron a trabajar en una pequeña oficina en Sand Hill Road en Menlo Park, California . Su objetivo era desarrollar nueva tecnología para la programación de dispositivos inteligentes de próxima generación, que Sun esperaba ofrecer nuevas e importantes oportunidades. [25]
El equipo originalmente consideró usar C ++, pero lo rechazó por varias razones. Debido a que estaban desarrollando un sistema integrado con recursos limitados, decidieron que C ++ necesitaba demasiada memoria y que su complejidad conducía a errores del desarrollador. La falta de recolección de basura del lenguaje significaba que los programadores tenían que administrar manualmente la memoria del sistema, una tarea desafiante y propensa a errores. El equipo también se preocupó por la falta de instalaciones portátiles de seguridad, programación distribuida y subprocesos del lenguaje C ++ . Finalmente, querían una plataforma que pudiera portarse fácilmente a todo tipo de dispositivos.
Bill Joy había imaginado un nuevo lenguaje que combinaba Mesa y C. En un artículo llamado Further , le propuso a Sun que sus ingenieros produjeran un entorno orientado a objetos basado en C ++. Inicialmente, Gosling intentó modificar y extender C ++ (un desarrollo propuesto al que se refirió como "C ++ ++ -") pero pronto lo abandonó a favor de crear un nuevo lenguaje, al que llamó Oak , en honor al árbol que estaba justo afuera. su oficina. [26]
Para el verano de 1992, el equipo pudo demostrar partes de la nueva plataforma, incluido el sistema operativo Green , el lenguaje Oak, las bibliotecas y el hardware. Su primera demostración, el 3 de septiembre de 1992, se centró en la construcción de un dispositivo de asistente digital personal (PDA) llamado Star7 [1] que tenía una interfaz gráfica y un agente inteligente llamado "Duke" para ayudar al usuario. En noviembre de ese año, Green Project se escindió para convertirse en Firstperson , una subsidiaria de propiedad total de Sun Microsystems, y el equipo se trasladó a Palo Alto, California . [27] El equipo de Firstperson tenía interés en construir dispositivos altamente interactivos, y cuando Time Warner emitió una solicitud de propuesta (RFP) para un decodificador , Firstperson cambió su objetivo y respondió con una propuesta para una plataforma de decodificador. . Sin embargo, la industria del cable sintió que su plataforma le daba demasiado control al usuario, por lo que Firstperson perdió su oferta ante SGI . Un acuerdo adicional con The 3DO Company para un decodificador tampoco se materializó. Incapaz de generar interés dentro de la industria de la televisión, la compañía fue reincorporada a Sun.
Java se encuentra con la Web
En junio y julio de 1994, después de tres días de intercambio de ideas con John Gage (director de ciencia de Sun), Gosling, Joy, Naughton, Wayne Rosing y Eric Schmidt , el equipo volvió a apuntar a la plataforma para la World Wide Web . Sintieron que con la llegada de navegadores web gráficos como Mosaic, Internet podría evolucionar hacia el mismo medio altamente interactivo que habían imaginado para la televisión por cable. Como prototipo, Naughton escribió un pequeño navegador, WebRunner (llamado así por la película Blade Runner ), rebautizado como HotJava [25] en 1995.
Sun cambió el nombre del idioma Oak a Java después de que una búsqueda de marcas registradas revelara que Oak Technology usaba el nombre Oak . [28] Aunque Java 1.0a estuvo disponible para su descarga en 1994, el primer lanzamiento público de Java, Java 1.0a2 con el navegador HotJava, llegó el 23 de mayo de 1995, anunciado por Gage en la conferencia SunWorld . Junto con el anuncio de Gage, Marc Andreessen , vicepresidente ejecutivo de Netscape Communications Corporation , anunció inesperadamente que los navegadores de Netscape incluirían compatibilidad con Java. El 9 de enero de 1996, Sun Microsystems formó el grupo JavaSoft para desarrollar la tecnología. [29]
Si bien los llamados subprogramas Java para navegadores web ya no son el uso más popular de Java (por ejemplo, se usa más en el lado del servidor) o la forma más popular de ejecutar código en el lado del cliente (JavaScript se convirtió en el más popular), Todavía es posible ejecutar Java (u otros lenguajes JVM como Kotlin) en navegadores web, incluso después de que se haya eliminado el soporte JVM de ellos, usando por ejemplo TeaVM .
Historial de versiones
El lenguaje Java ha sufrido varios cambios desde el lanzamiento de JDK ( Java Development Kit ) 1.0 el 23 de enero de 1996, así como numerosas adiciones de clases y paquetes a la biblioteca estándar . Desde J2SE 1.4, el Java Community Process (JCP) ha gobernado la evolución del lenguaje Java. El JCP utiliza solicitudes de especificación de Java (JSR) para proponer y especificar adiciones y cambios a la plataforma Java. La especificación del lenguaje Java (JLS) especifica el idioma; los cambios en el JLS se gestionan bajo JSR 901. [30]
Sun lanzó JDK 1.1 el 19 de febrero de 1997. Las principales adiciones incluyeron una amplia remodelación del modelo de eventos AWT , clases internas agregadas al lenguaje, JavaBeans y JDBC .
J2SE 1.2 (8 de diciembre de 1998) - Codename Playground . Esta y las versiones posteriores a J2SE 5.0 se cambiaron el nombre de Java 2 y el nombre de la versión "J2SE" ( Java 2 Platform, Standard Edition ) reemplazó a JDK para distinguir la plataforma base de J2EE ( Java 2 Platform, Enterprise Edition ) y J2ME ( Java 2 Platform, Micro Edición ). Las principales adiciones incluyeron reflexión , un marco de colecciones , Java IDL (una implementación de lenguaje de descripción de interfaz para la interoperabilidad CORBA ) y la integración de la API gráfica Swing en las clases principales. Se lanzó un complemento de Java y la JVM de Sun se equipó con un compilador JIT por primera vez.
J2SE 1.3 (8 de mayo de 2000) - Nombre en clave Kestrel . Los cambios notables incluyeron el empaquetado de HotSpot JVM (HotSpot JVM se lanzó por primera vez en abril de 1999 para J2SE 1.2 JVM), JavaSound , Java Naming and Directory Interface (JNDI) y Java Platform Debugger Architecture (JPDA).
J2SE 1.4 (6 de febrero de 2002) - Nombre en clave Merlin . Esta se convirtió en la primera versión de la plataforma Java desarrollada bajo el Proceso de la Comunidad Java como JSR 59. [31] Los cambios principales incluyeron expresiones regulares modeladas a partir de Perl , encadenamiento de excepciones , un analizador XML integrado y un procesador XSLT ( JAXP ) y Java Web Start .
J2SE 5.0 (30 de septiembre de 2004) - Codename Tiger . Originalmente tenía el número 1.5, que todavía se usa como número de versión interna. [32] Desarrollado bajo JSR 176, Tiger agregó varias características de lenguaje nuevas e importantes que incluyen el bucle for-each , genéricos , autoboxing y var-args . [33]
Java SE 6 (11 de diciembre de 2006) - Nombre en clave Mustang . Se incluyó con un administrador de base de datos y facilita el uso de lenguajes de scripting con la JVM (como JavaScript usando el motor Rhino de Mozilla ). A partir de esta versión, Sun reemplazó el nombre "J2SE" con Java SE y eliminó el ".0" del número de versión. [34] Otros cambios importantes incluyen soporte para anotaciones conectables ( JSR 269 ), muchas mejoras de GUI , incluidas mejoras de interfaz de usuario nativa para admitir la apariencia de Windows Vista , y mejoras en la arquitectura del depurador de plataforma Java (JPDA) y la interfaz de herramientas JVM para mejor seguimiento y resolución de problemas.
Java SE 7 (28 de julio de 2011): nombre en clave Dolphin . Esta versión se desarrolló bajo JSR 336. [35] Agregó muchos cambios de lenguaje pequeños, incluyendo cadenas en switch, try-with-resources e inferencia de tipos para la creación de instancias genéricas. La JVM se amplió con soporte para lenguajes dinámicos, mientras que la biblioteca de clases se amplió, entre otros, con un marco de unión / bifurcación, [36] una nueva biblioteca de E / S de archivos mejorada y soporte para nuevos protocolos de red como SCTP . Java 7 Update 76 se lanzó en enero de 2015, con fecha de vencimiento el 14 de abril de 2015. [37]
En junio de 2016, después de la última actualización pública de Java 7, [38] " explotables de forma remota " errores de seguridad en Java 6, 7 y 8 se dieron a conocer. [dieciséis]
Java SE 8 (18 de marzo de 2014): los cambios notables incluyen soporte a nivel de lenguaje para expresiones lambda ( cierres ) y métodos predeterminados, el tiempo de ejecución de JavaScript del Proyecto Nashorn, una nueva API de fecha y hora inspirada en Joda Time y la eliminación de PermGen. Esta versión no es oficialmente compatible con la plataforma Windows XP. [39] Sin embargo, debido al final del ciclo de vida de Java 7, es la versión recomendada para los usuarios de XP. Anteriormente, solo se había descrito un método de instalación manual no oficial para Windows XP SP3. Se refiere a JDK8, la plataforma de desarrollo para Java que también incluye un Java Runtime Environment en pleno funcionamiento . [40] Java 8 es compatible con Windows Server 2008 R2 SP1, Windows Vista SP2 y Windows 7 SP1, Ubuntu 12.04 LTS y versiones posteriores (y algunos otros sistemas operativos). [41]
Java SE 9 y 10 tenían requisitos de sistema más altos, es decir, Windows 7 o Server 2012 (y la certificación mínima del navegador web se ha actualizado a Internet Explorer 11 u otros navegadores web), y Oracle eliminó la compatibilidad de 32 bits para todas las plataformas, es decir, solo Oracle " 64 Las máquinas virtuales Java de bits (JVM) están certificadas ". [42]
Java SE 11 se lanzó en septiembre de 2018, el primer lanzamiento de LTS desde que se adoptó el modelo de lanzamiento rápido a partir de la versión 9. Por primera vez, OpenJDK 11 representa el código fuente completo para la plataforma Java bajo la Licencia Pública General GNU, y mientras que Oracle aún con licencia dual con una licencia propietaria opcional, no hay diferencias de código ni módulos exclusivos para la versión con licencia propietaria. [43] Las características de Java 11 incluyen dos nuevas implementaciones de recolector de basura, Flight Recorder para depurar problemas profundos, un nuevo cliente HTTP que incluye soporte WebSocket . [44]
Java SE 12 se lanzó en marzo de 2019. [45]
Java SE 13 se lanzó en septiembre de 2019. [46]
Java SE 14 se lanzó en marzo de 2020. [47]
Java SE 15 se lanzó en septiembre de 2020.
Java SE 16 se lanzó en marzo de 2021.
Además de los cambios de lenguaje, se han realizado cambios significativos en la biblioteca de clases de Java a lo largo de los años, que ha crecido de unos cientos de clases en JDK 1.0 a más de tres mil en J2SE 5.0. Han evolucionado API completamente nuevas, como Swing y Java 2D , y muchas de las clases y métodos originales de JDK 1.0 han quedado obsoletos .
Uso
Uso de escritorio
Según Oracle en 2010, Java Runtime Environment se encontró en más de 850 millones de PC. [48] Microsoft no ha incluido un entorno de ejecución de Java (JRE) con sus sistemas operativos desde que Sun Microsystems demandó a Microsoft por agregar clases específicas de Windows al entorno de ejecución de Java incluido y por hacer que las nuevas clases estén disponibles a través de Visual J ++ . [ cita requerida ] Apple ya no incluye un tiempo de ejecución de Java con OS X a partir de la versión 10.7 , pero el sistema solicita al usuario que lo descargue e instale la primera vez que se inicia una aplicación que requiere el JRE. [ cita requerida ] Muchas distribuciones de Linux incluyen el tiempo de ejecución de OpenJDK como la máquina virtual predeterminada, lo que anula la necesidad de descargar Oracle JRE propietario. [49]
Algunas aplicaciones Java tienen un uso de escritorio bastante extendido, incluidos los entornos de desarrollo integrados NetBeans y Eclipse , y clientes de intercambio de archivos como LimeWire y Vuze . Java también se utiliza en el entorno de programación matemática de MATLAB , tanto para representar la interfaz de usuario como como parte del sistema central. Java proporciona una interfaz de usuario multiplataforma para algunas aplicaciones colaborativas de alto nivel, como Lotus Notes .
Oracle planea desaprobar primero el complemento de navegador Java instalable por separado del Java Runtime Environment en JDK 9 y luego eliminarlo por completo de una versión futura, lo que obligará a los desarrolladores web a usar una tecnología alternativa. [50]
Mascota
Duke es la mascota de Java . [51]
Cuando Sun anunció que Java SE y Java ME se lanzarían bajo una licencia de software libre (la Licencia Pública General GNU ), lanzaron los gráficos de Duke bajo la licencia BSD gratuita al mismo tiempo. [52] Cada año se crea una nueva personalidad de Duke. [53] Por ejemplo, en julio de 2011, "Future Tech Duke" incluía una nariz más grande, un jetpack y alas azules. [54]
Licencia
El código fuente para las implementaciones de Java de Sun (es decir, la implementación de referencia de facto) ha estado disponible durante algún tiempo, pero hasta hace poco, [55] los términos de la licencia restringían severamente lo que se podía hacer con él sin firmar (y generalmente pagando) un contrato con Sun. Como tales, estos términos no satisfacían los requisitos de la Open Source Initiative o de la Free Software Foundation para ser considerados de código abierto o software libre, por lo que Sun Java era una plataforma patentada. [56]
Si bien varios proyectos de terceros (por ejemplo, GNU Classpath y Apache Harmony ) crearon implementaciones de Java parciales de software libre , el gran tamaño de las bibliotecas de Sun combinado con el uso de métodos de sala limpia significó que sus implementaciones de las bibliotecas de Java (el compilador y la VM son comparativamente pequeñas y bien definidas) eran incompletas y no totalmente compatibles. Estas implementaciones también tendían a estar mucho menos optimizadas que las de Sun. [ cita requerida ]
Software libre
Sun anunció en JavaOne 2006 que Java se convertiría en software gratuito y de código abierto , [57] y el 25 de octubre de 2006, en la conferencia Oracle OpenWorld , Jonathan I. Schwartz dijo que la compañía estaba lista para anunciar el lanzamiento de la plataforma Java principal. como software gratuito y de código abierto en un plazo de 30 a 60 días. [58]
Sun lanzó la máquina virtual y el compilador Java HotSpot como software libre bajo la Licencia Pública General GNU el 13 de noviembre de 2006, con la promesa de que el resto del JDK (que incluye el JRE) se colocaría bajo la GPL para marzo de 2007 (" excepto por algunos componentes que Sun no tiene derecho a publicar en forma de fuente distribuible bajo la GPL "). [59] Según Richard Stallman , esto significaría el fin de la "trampa de Java". [60] Mark Shuttleworth calificó el anuncio de prensa inicial como "un verdadero hito para la comunidad del software libre ". [61]
Sun publicó el código fuente de la biblioteca Class bajo GPL el 8 de mayo de 2007, excepto algunas partes limitadas que fueron licenciadas por Sun de terceros que no querían que su código se publicara bajo una licencia de software libre y fuente abierta. [62] Algunas de las partes comprometidas resultaron ser partes bastante clave de la plataforma, como el renderizado de fuentes y la rasterización 2D, pero Sun las lanzó posteriormente como código abierto (consulte la biblioteca de clases OpenJDK ).
El objetivo de Sun era reemplazar las partes que siguen siendo propietarias y de código cerrado con implementaciones alternativas y hacer que la biblioteca de clases sea completamente gratuita y de código abierto. Mientras tanto, un proyecto de terceros llamado IcedTea creó un JDK completamente gratuito y altamente utilizable reemplazando el código sobrecargado con stubs o código de GNU Classpath . Sin embargo, OpenJDK se ha vuelto compilable sin las partes comprometidas (de OpenJDK 6 b10 [63] ) y se ha convertido en el entorno de ejecución predeterminado para la mayoría de las distribuciones de Linux. [64] [65] [66] [67]
En junio de 2008, se anunció que IcedTea 6 (como la versión empaquetada de OpenJDK en Fedora 9 ) ha pasado las pruebas del Kit de compatibilidad tecnológica y puede afirmar que es una implementación de Java 6 totalmente compatible. [68]
Debido a que OpenJDK está bajo la GPL, es posible redistribuir una versión personalizada del JRE directamente con aplicaciones de software, [69] [70] en lugar de requerir que el usuario final (o su administrador de sistemas) descargue e instale la versión correcta del Oracle propietario. JRE en cada uno de sus sistemas.
Crítica
En la mayoría de los casos, el soporte de Java es innecesario en los navegadores web y los expertos en seguridad recomiendan que no se ejecute en un navegador a menos que sea absolutamente necesario. [71] Se sugirió que, si algunos sitios web requieren Java, los usuarios deberían tener una instalación de navegador separada específicamente para esos sitios. [ cita requerida ]
Genéricos
Cuando se agregaron los genéricos a Java 5.0, ya existía un gran marco de clases (muchas de las cuales ya estaban en desuso ), por lo que se eligieron los genéricos para implementarlos mediante el borrado para permitir la compatibilidad de la migración y la reutilización de estas clases existentes. Esto limitó las funciones que podría proporcionar esta adición en comparación con algunos otros idiomas. [72] [73] La adición de comodines de tipo hizo que Java no fuera sólido. [74]
Tipos de enteros sin signo
Java carece de tipos enteros nativos sin signo . Los datos sin firmar a menudo se generan a partir de programas escritos en C y la falta de estos tipos impide el intercambio directo de datos entre C y Java. Los números grandes sin firmar también se utilizan en muchos campos de procesamiento numérico, incluida la criptografía, lo que puede hacer que Java sea menos conveniente para estas tareas. [75] Aunque es posible eludir parcialmente este problema con el código de conversión y el uso de tipos de datos más grandes, hace que el uso de Java sea engorroso para manejar los datos sin firmar. Mientras que un entero de 32 bits con signo puede usarse para contener un valor sin signo de 16 bits con relativa facilidad, un valor sin signo de 32 bits requeriría un entero de 64 bits con signo. Además, un valor sin signo de 64 bits no se puede almacenar utilizando ningún tipo de entero en Java porque no existe ningún tipo mayor de 64 bits en el lenguaje Java. Si se abstraen usando funciones, las llamadas a funciones se vuelven necesarias para muchas operaciones que son nativas de algunos otros lenguajes. Alternativamente, es posible usar enteros con signo de Java para emular enteros sin signo del mismo tamaño, pero esto requiere un conocimiento detallado de operaciones complejas bit a bit. [76]
Aritmética de coma flotante
Si bien la aritmética de coma flotante de Java se basa en gran medida en IEEE 754 ( estándar para aritmética de coma flotante binaria ), ciertas características no son compatibles incluso cuando se usa el strictfp
modificador, como las banderas de excepción y el redondeo dirigido, capacidades exigidas por la norma IEEE 754. Además, el Los tipos de punto flotante de precisión extendida permitidos en 754 y presentes en muchos procesadores no están permitidos en Java. [77] [78]
Actuación
En los primeros días de Java (antes de que HotSpot VM se implementara en Java 1.3 en 2000) hubo algunas críticas sobre el rendimiento. Los puntos de referencia generalmente informaron que Java era aproximadamente un 50% más lento que C (un lenguaje que se compila en código nativo). [79] [80] [81]
El rendimiento de Java ha mejorado sustancialmente desde las primeras versiones. [19] En algunas pruebas optimizadas se ha demostrado que el rendimiento de los compiladores JIT en relación con los compiladores nativos es bastante similar. [19] [20] [21]
El código de bytes de Java puede ser interpretado en tiempo de ejecución por una máquina virtual, o puede ser compilado en tiempo de carga o en tiempo de ejecución en código nativo que se ejecuta directamente en el hardware de la computadora. La interpretación es más lenta que la ejecución nativa y la compilación en tiempo de carga o en tiempo de ejecución tiene una penalización de rendimiento inicial para la compilación. Todas las implementaciones modernas de JVM de rendimiento utilizan el enfoque de compilación, por lo que después del tiempo de inicio inicial, el rendimiento es equivalente al código nativo.
Seguridad
La plataforma Java proporciona una arquitectura de seguridad [82] que está diseñada para permitir que el usuario ejecute un código de bytes que no es de confianza en una forma de "caja de arena" para protegerse contra software malintencionado o mal escrito. Esta función de "espacio aislado" está destinada a proteger al usuario restringiendo el acceso a determinadas funciones de la plataforma y API que podrían ser explotadas por malware , como acceder al sistema de archivos local, ejecutar comandos arbitrarios o acceder a redes de comunicación.
En los últimos años, los investigadores han descubierto numerosas fallas de seguridad en algunas implementaciones de Java ampliamente utilizadas, incluida la de Oracle, que permiten que el código no confiable eluda el mecanismo de espacio aislado, exponiendo a los usuarios a ataques maliciosos. Estas fallas afectan solo a las aplicaciones Java que ejecutan códigos de bytes arbitrarios que no son de confianza, como los complementos del navegador web que ejecutan subprogramas Java descargados de sitios web públicos. Las aplicaciones en las que el usuario confía y tiene control total sobre todo el código que se está ejecutando no se ven afectadas.
El 31 de agosto de 2012, se descubrió que Java 6 y 7 (ambos admitidos en ese entonces) en Microsoft Windows, OS X y Linux tenían una falla de seguridad grave que permitía que se produjera un exploit remoto simplemente cargando una página web maliciosa. [83] Más tarde se descubrió que Java 5 también tenía fallas. [84]
El 10 de enero de 2013, tres especialistas en informática se pronunciaron en contra de Java y le dijeron a Reuters que no era seguro y que la gente debería desactivar Java. Jaime Blasco, gerente de laboratorios de AlienVault Labs, declaró que "Java es un desastre. No es seguro. Tienes que deshabilitarlo". [85] Esta vulnerabilidad afecta a Java 7 y no está claro si afecta a Java 6 , por lo que se sugiere que los consumidores la desactiven. [86] [87] Las alertas de seguridad de Oracle anuncian programas de parches críticos relacionados con la seguridad para Java. [88]
El 14 de enero de 2013, los expertos en seguridad dijeron que la actualización aún no protegía a las PC de los ataques. [89] Este agujero de explotación provocó una respuesta del Departamento de Seguridad Nacional de los Estados Unidos alentando a los usuarios a deshabilitar o desinstalar Java. [17] Apple incluyó a Java en la lista negra en orden limitado para todas las computadoras que ejecutan su sistema operativo OS X a través de un programa de protección contra virus. [90]
En 2014 y respondiendo a los problemas de vulnerabilidad y seguridad de Java en ese momento, el bloguero de seguridad Brian Krebs pidió a los usuarios que eliminen al menos el complemento del navegador Java y también todo el software. "Espero un mundo sin el complemento de Java (y no tener que recordarle a los lectores las actualizaciones trimestrales de parches), pero probablemente pasarán años antes de que varias versiones de este complemento se eliminen en su mayoría de los sistemas de usuarios finales en todo el mundo". [91] "Una vez prometedor, ha sobrevivido a su utilidad en el navegador y se ha convertido en una pesadilla que deleita a los ciberdelincuentes a expensas de los usuarios de computadoras". [92] "Creo que todo el mundo debería desinstalar Java de todas sus PC y Mac, y luego pensar detenidamente si es necesario volver a agregarlo. Si eres un usuario doméstico típico, probablemente puedas prescindir de él. Si eres un negocio usuario, es posible que no tenga otra opción ". [93]
Adware
El entorno de ejecución de Java tiene un historial de paquetes de software patrocinados que se instalarán de forma predeterminada durante la instalación y durante las actualizaciones que se implementan aproximadamente cada mes. Esto incluye la " barra de herramientas Ask.com " que redirigirá las búsquedas del navegador a anuncios y "McAfee Security Scan Plus". [94] Estas ofertas se pueden bloquear mediante una configuración en el Panel de control de Java, aunque esto no es obvio. Esta configuración se encuentra en la pestaña "Avanzado" en el Panel de control de Java, bajo el encabezado "Varios", donde la opción está etiquetada como una opción para suprimir las "ofertas de patrocinadores".
Sistema de actualización
Java aún tiene que lanzar un actualizador automático que no requiere la intervención del usuario ni derechos administrativos [95] a diferencia de Google Chrome [96] y Flash Player. [97]
Ver también
- Lista de API de Java
- Marcos de registro de Java
- Rendimiento de Java
- JavaFX
- Jazelle
- Java ConcurrentMap
- Comparación de las plataformas Java y .NET
- Lista de lenguajes JVM
- Lista de mascotas informáticas
Referencias
- ^ "JavaSoft incluye Java 1.0" (Comunicado de prensa). Web.archive.org. Archivado desde el original el 5 de febrero de 2008 . Consultado el 9 de febrero de 2016 .
- ^ Ortiz, C. Enrique; Giguère, Éric (2001). Perfil de dispositivo de información móvil para Java 2 Micro Edition: Guía del desarrollador (PDF) . John Wiley e hijos . ISBN 978-0471034650. Consultado el 30 de mayo de 2012 .
- ^ "Actualizaciones de OpenJDK 11" . Oracle Corporation . Consultado el 20 de abril de 2021 .
- ^ "Actualizaciones de OpenJDK 8" . Oracle Corporation . Consultado el 20 de abril de 2021 .
- ^ "Compilaciones de acceso anticipado de JDK 17" . Oracle Corporation . Consultado el 9 de mayo de 2021 .
- ^ "Grupo HotSpot" . Openjdk.java.net . Consultado el 9 de febrero de 2016 .
- ^ a b "Contenidos de configuraciones de sistema certificadas Oracle JDK 8 y JRE 8" . Oracle.com . 8 de abril de 2014 . Consultado el 9 de febrero de 2016 .
- ^ "Configuraciones regionales compatibles con Java SE 7" . Oracle.com . Consultado el 9 de febrero de 2016 .
- ^ "OpenJDK: GPLv2 + Classpath Exception" . Openjdk.java.net. 1 de abril de 1989 . Consultado el 9 de febrero de 2016 .
- ^ "BCL para Java SE" . Oracle.com. 2 de abril de 2013 . Consultado el 9 de febrero de 2016 .
- ^ Naughton, Patrick. "Java fue fuertemente influenciado por Objective-C" . Escuela virtual . Archivado desde el original el 3 de septiembre de 2012.
- ^ "Sun abre Java" . Sun Microsystems. 13 de noviembre de 2006. Archivado desde el original el 13 de mayo de 2008.
- ^ O'Hair, Kelly (diciembre de 2010). "Eliminada la lógica de los enchufes binarios OpenJDK7 y OpenJDK6" . Oracle Corporation . Consultado el 25 de noviembre de 2011 .
- ^ "¿Por qué debería desinstalar las versiones anteriores de Java de mi sistema?" . www.java.com . Archivado desde el original el 12 de febrero de 2018 . Consultado el 6 de febrero de 2018 .
- ^ "¿Por qué debería desinstalar las versiones anteriores de Java de mi sistema?" . Oracle . Consultado el 9 de septiembre de 2016 .
- ^ a b "Actualización del parche crítico de Oracle - julio de 2016" . www.oracle.com .
- ^ a b Whittaker, Zack (11 de enero de 2013). "Homeland Security advierte que desactive Java en medio de una falla de día cero" . ZDNet . Consultado el 9 de febrero de 2016 .
- ^ Alexander, Christopher. "Java SE 6 avanzado" . www.oracle.com . Consultado el 20 de mayo de 2018 .
- ^ a b c Lewis, JP; Neumann, Ulrich. "Rendimiento de Java versus C ++" . Laboratorio de Gráficos y Tecnología Inmersiva, Universidad del Sur de California .
- ^ a b "El Java más rápido que C ++ Benchmark" . Kano.net. 14 de noviembre de 2003 . Consultado el 9 de febrero de 2016 .
- ^ a b FreeTTS: un estudio de caso de rendimiento Archivado el 25 de marzo de 2009 en Wayback Machine , Willie Walker, Paul Lamere, Philip Kwok
- ^ "Capítulo 1. Introducción" . docs.oracle.com .
- ^ www .beanshell .org
- ^ Southwick, Karen (1999). High Noon: la historia interna de Scott McNealy y el surgimiento de Sun Microsystems . Nueva York [ua]: Wiley. págs. 120-122 . ISBN 0471297135.
- ^ a b Byous, Jon (abril de 2003). "Tecnología Java: Los primeros años" . Sun Microsystems . Archivado desde el original el 30 de mayo de 2008 . Consultado el 2 de agosto de 2009 .
- ^ Southwick, Karen (1999). High Noon: la historia interna de Scott McNealy y el surgimiento de Sun Microsystems . Nueva York [ua]: Wiley. pag. 124 . ISBN 0471297135.
- ^ Walrath, Kathy (21 de diciembre de 2001). "Prólogo" . Sun Microsystems . Consultado el 2 de agosto de 2009 .
- ^ Murphy, Kieron (4 de octubre de 1996). "Entonces, ¿por qué decidieron llamarlo Java?" . JavaWorld . Consultado el 15 de julio de 2020 .
"Los abogados nos habían dicho que no podíamos usar el nombre" OAK "porque [ya era una marca registrada de] Oak Technologies", dijo Frank Yellin, ingeniero senior de Sun. "Así que se llevó a cabo una sesión de lluvia de ideas para proponer ideas para un nuevo nombre".
- ^ "Sun Microsystems anuncia la formación de JavaSoft" (Comunicado de prensa). Sun Microsystems. 9 de enero de 1996. Archivado desde el original el 10 de febrero de 2008.
- ^ "El programa Java Community Process (SM) - JSR: solicitudes de especificación de Java - detalle JSR # 63" . Jcp.org . Consultado el 9 de febrero de 2016 .
- ^ "El programa Java Community Process (SM) - JSR: solicitudes de especificación de Java - detalle JSR # 59" . Jcp.org . Consultado el 9 de febrero de 2016 .
- ^ "¿Versión 1.5.0 o 5.0?" . Java.sun.com . Consultado el 9 de febrero de 2016 .
- ^ "El programa Java Community Process (SM) - JSR: solicitudes de especificación de Java - detalle JSR # 176" . Jcp.org . Consultado el 9 de febrero de 2016 .
- ^ "Nombres de Java" . Java.com . Oracle . Consultado el 25 de agosto de 2011 .
- ^ "El programa Java Community Process (SM) - JSR: solicitudes de especificación de Java - detalle JSR # 336" . Jcp.org . Consultado el 9 de febrero de 2016 .
- ^ Lea, Doug (13 de septiembre de 2004). "JSR: solicitudes de especificación de Java: JSR 166: utilidades de simultaneidad" . Proceso de la comunidad Java . Oracle Corp.
- ^ "Notas de la versión de Java ™ SE Development Kit 7 Update 76" . Oracle.com . Consultado el 9 de febrero de 2016 .
- ^ "Lanzamientos de Java 7 y Java 8 por fecha" . www.java.com .
- ^ "Windows XP y Java" . Java.com. 8 de abril de 2014 . Consultado el 9 de febrero de 2016 .
- ^ "java - instalación de JDK8 en Windows XP - error advapi32.dll" . Desbordamiento de pila .
- ^ "Configuraciones de sistema certificadas Oracle JDK 8 y JRE 8" . www.oracle.com .
- ^ "Configuraciones de sistema certificadas Oracle JDK 10" . www.oracle.com . Consultado el 27 de marzo de 2018 .
Solo se admite el modo X.org. El modo Wayland no es compatible.
- ^ "Hoja de ruta de soporte de Oracle Java SE" . Oracle Corporation . 25 de septiembre de 2018 . Consultado el 25 de septiembre de 2018 .
- ^ "JDK 11" . Oracle Corporation . 25 de septiembre de 2018 . Consultado el 26 de septiembre de 2018 .
- ^ "JDK 12" . OpenJDK . Consultado el 22 de marzo de 2019 .
- ^ "JDK 13" . OpenJDK . Consultado el 17 de septiembre de 2019 .
- ^ "JDK 14" . OpenJDK . Consultado el 25 de marzo de 2020 .
- ^ "¿Qué es la tecnología Java y por qué la necesito?" . Archivado desde el original el 25 de septiembre de 2010 . Consultado el 15 de diciembre de 2011 .
Java se ejecuta en más de 850 millones de computadoras personales en todo el mundo y en miles de millones de dispositivos en todo el mundo, incluidos dispositivos móviles y de TV.
- ^ "Java - Wiki del Proyecto Fedora" . fedoraproject.org .
- ^ Tema, Dalibor (27 de enero de 2016). "Pasar a una web sin complementos" . Oráculo.
- ^ "Duke, la mascota de Java" . Oracle . Consultado el 18 de marzo de 2019 .
- ^ "duke: página de inicio del proyecto" . Sun Microsystems . Archivado desde el original el 18 de junio de 2007 . Consultado el 18 de marzo de 2007 .
- ^ "Duke, la mascota de Java" .
- ^ "Future Tech Duke (la fuente de Java)" . Tori Wieldt. Archivado desde el original el 20 de agosto de 2011 . Consultado el 17 de agosto de 2011 .
- ^ Smith, Donald (11 de septiembre de 2018). "Versiones de Oracle JDK para Java 11 y posteriores" .
- ^ Stallman, Richard (24 de mayo de 2006). "El curioso incidente del sol en la noche" . Groklaw .
- ^ Schwartz, Jonathan. "?" . Blog de Jonathan Schwartz . Sun Microsystems. Archivado desde el original el 15 de julio de 2006.
- ^ "Oracle OpenWorld: UnBreakable Linux / 5015.2 no en el horizonte | Blog de Formtek" . Formtek.com. 26 de octubre de 2006 . Consultado el 9 de febrero de 2016 .
- ^ "Oracle y Sun Microsystems | Adquisiciones estratégicas | Oracle" . Sun.com . Consultado el 9 de febrero de 2016 .
- ^ "Libre pero encadenado - La trampa de Java - Proyecto GNU - Free Software Foundation" . Gnu.org. 12 de abril de 2004 . Consultado el 9 de febrero de 2016 .
- ^ "Sun 'lanza' Java al mundo" . BBC News . 13 de noviembre de 2006 . Consultado el 6 de mayo de 2010 .
- ^ "¡Open JDK está aquí!" . Sun Microsystems. 8 de mayo de 2007 . Consultado el 9 de mayo de 2007 .
- ^ Wielaard, Mark (30 de mayo de 2007). "Fuente OpenJDK6 b10 publicada" . Consultado el 12 de julio de 2008 .
- ^ "Redhat Java" .
- ^ "Fedora Java" .
- ^ "Debian Java" .
- ^ "Ubuntu Java" .
- ^ Sharples, Rich (19 de junio de 2008). "Java es finalmente libre y abierto" . Archivado desde el original el 20 de junio de 2008.
- ^ libgdx (9 de diciembre de 2013). "Empaquetando un jre · libgdx / libgdx Wiki · GitHub" . Github.com . Consultado el 9 de febrero de 2016 .
- ^ "Pregunta sobre el empaquetado de OpenJDK personalizado" . Java-Gaming.org . Consultado el 9 de febrero de 2016 .
- ^ Cluley, Graham (15 de enero de 2013). " " A menos que sea absolutamente necesario ejecutar Java en los navegadores web, desactívelo ", dice el equipo CERT patrocinado por DHS - Naked Security" . Nakedsecurity.sophos.com . Consultado el 9 de febrero de 2016 .
- ^ "Genéricos en Java" . Object Computing, Inc. Archivado desde el original el 2 de enero de 2007 . Consultado el 9 de diciembre de 2006 .
- ^ "¿Qué está mal con Java: borrado de tipos" . 6 de diciembre de 2006 . Consultado el 9 de diciembre de 2006 .
- ^ "Los sistemas de tipos de Java y Scala no son sólidos" (PDF) .
- ^ "Las bibliotecas de Java deberían proporcionar soporte para aritmética de enteros sin firmar" . Base de datos de errores, Sun Developer Network . Oracle . Consultado el 18 de enero de 2011 .
- ^ Owens, Sean R. (5 de noviembre de 2009). "Java y unsigned int, unsigned short, unsigned byte, unsigned long, etc. (O más bien, la falta de ellos)" . darksleep.com . Consultado el 9 de octubre de 2010 .
- ^ Kahan, W .; Darcy, Joseph D. (1 de marzo de 1998). "Cómo el punto flotante de Java perjudica a todos en todas partes" (PDF) . Consultado el 9 de diciembre de 2006 .
- ^ "Tipos, valores y variables" . Sun Microsystems . Consultado el 9 de diciembre de 2006 .
- ^ ¿Qué lenguajes de programación son más rápidos? | Juego Computer Language Benchmarks Archivado el 14 de agosto de 2011 en Wayback Machine.
- ^ velocidad ÷ C ++ GNU g ++ velocidad | Juego Computer Language Benchmarks Archivado el 26 de septiembre de 2011 en Wayback Machine.
- ^ "Rendimiento C ++ vs Java; ¡Es un empate! | Blog de Christian Felde" . Blog.cfelde.com . Consultado el 9 de febrero de 2016 .
- ^ "Arquitectura de seguridad Java: Contenidos" . Docs.oracle.com. 2 de octubre de 1998 . Consultado el 9 de febrero de 2016 .
- ^ Horowitz, Michael (31 de agosto de 2012). "Fallo de seguridad de Java: yada yada yada | Computerworld" . Blogs.computerworld.com. Archivado desde el original el 24 de julio de 2014 . Consultado el 9 de febrero de 2016 .
- ^ Brook, Chris. "La primera parada para noticias de seguridad" . Threatpost. Archivado desde el original el 8 de marzo de 2013 . Consultado el 9 de febrero de 2016 .
- ^ "Por qué y cómo deshabilitar Java en su computadora ahora - Tecnología y ciencia - Innovación" . NBC News. 12 de enero de 2013 . Consultado el 9 de febrero de 2016 .
- ^ "El Departamento de Seguridad Nacional de Estados Unidos pide a los usuarios de computadoras que deshabiliten Java" . Forbes.com . Consultado el 9 de febrero de 2016 .
- ^ Brook, Chris. "La primera parada para noticias de seguridad" . Threatpost. Archivado desde el original el 9 de abril de 2013 . Consultado el 9 de febrero de 2016 .
- ^ "Actualizaciones de parches críticos y alertas de seguridad" . Oracle.com . Consultado el 9 de febrero de 2016 .
- ^ Finkle, Jim (14 de enero de 2013). "El parche de emergencia para Java no soluciona los agujeros de la ciberdelincuencia, advierten los expertos" . Independiente, es decir . Consultado el 9 de febrero de 2016 .
- ^ Kelly, Meghan (14 de enero de 2013). "Los problemas de Oracle se solucionan para la vulnerabilidad de Java después de que el DHS advierte de sus agujeros" . VentureBeat . Consultado el 9 de febrero de 2016 .
- ^ Krebs, Brian (16 de febrero de 2016). "Good Riddance to Oracle's Java Plugin" . KrebsOnSecurity .
- ^ Gonsalves, Antone (5 de septiembre de 2012). "Java ya no es necesario. Extraiga el complemento" . Leer y escribir . Mundo usable.
- ^ "Java: ¿debería eliminarlo?" . theguardian.com . Guardian Media Group . 8 de febrero de 2013.
- ^ Bott, Ed. "Una mirada de cerca a cómo Oracle instala software engañoso con actualizaciones de Java" . ZDNet.com . ZDNet . Consultado el 14 de diciembre de 2014 .
- ^ "Windows 7 - ¿Cómo actualizo Java desde una cuenta que no es de administrador?" . Superusuario .
- ^ "Actualizar Google Chrome - Computadora - Ayuda de Google Chrome" . support.google.com .
- ^ "Boletín de seguridad de Adobe" . helpx.adobe.com .
enlaces externos
- Página web oficial
- sun.com - Sitio oficial para desarrolladores
- "Cómo surgió la especificación JVM" . infoq.com . - Presentación de James Gosling sobre los orígenes de Java, del JVM Languages Summit 2008
- Organización de foros de Java
- Introducción a Java , 14 de mayo de 2014, Blog de Java77