La biblioteca de clases de Java ( JCL ) es un conjunto de bibliotecas cargables dinámicamente a las que los lenguajes de máquinas virtuales Java (JVM) pueden llamar en tiempo de ejecución . Debido a que Java Platform no depende de un sistema operativo específico , las aplicaciones no pueden depender de ninguna de las bibliotecas nativas de la plataforma. En cambio, la Plataforma Java proporciona un conjunto completo de bibliotecas de clases estándar , que contienen las funciones comunes a los sistemas operativos modernos.
JCL tiene tres propósitos dentro de la JVM:
- Al igual que otras bibliotecas de código estándar , proporcionan al programador un conjunto bien conocido de funciones útiles, como clases de contenedor y procesamiento de expresiones regulares .
- La biblioteca proporciona una interfaz abstracta para tareas que normalmente dependerían en gran medida del hardware y del sistema operativo, como el acceso a la red y el acceso a archivos .
- Es posible que algunas plataformas subyacentes no admitan todas las funciones que espera una aplicación Java. En estos casos, la implementación de la biblioteca puede emular esas características o proporcionar una forma coherente de verificar la presencia de una característica específica.
Implementación y configuración
La biblioteca de clases de Java ( JCL ) está escrita casi en su totalidad en Java, excepto por las partes que necesitan acceso directo al hardware y al sistema operativo (como E / S o gráficos de mapa de bits ). Las clases que dan acceso a estas funciones suelen utilizar envoltorios de la interfaz nativa de Java para acceder a las API del sistema operativo .
Casi todo el JCL se almacena en un único archivo Java llamado "rt.jar" que se proporciona con las distribuciones JRE y JDK . La biblioteca de clases de Java (rt.jar) se encuentra en la ruta de clase de arranque predeterminada [1] y no tiene que aparecer en la ruta de clase declarada para la aplicación. El tiempo de ejecución utiliza el cargador de clases de arranque para encontrar el JCL.
El Java Module System (parte del lanzamiento de Java 9 ) rompió el archivo JAR monolítico "rt.jar" y modularizó el JCL en sí mismo en varios módulos con dependencias específicas. [2]
Conformidad
Cualquier implementación de Java debe pasar las pruebas del Kit de compatibilidad de tecnología de Java para el cumplimiento, que incluye las pruebas de JCL.
Principales características
Se accede a las funciones de JCL a través de clases proporcionadas en paquetes .
java.lang
contiene clases e interfaces fundamentales estrechamente vinculadas al lenguaje y al sistema de ejecución .- Las E / S y las redes acceden al sistema de archivos de la plataforma y, en general, a las redes a través de los paquetes
java.io
,java.nio
yjava.net
. Para redes, SCTP está disponible a través decom.sun.nio.sctp
. - Paquete de matemáticas :
java.math
proporciona expresiones y evaluación matemáticas, así como tipos de datos de números enteros y decimales de precisión arbitraria. - Colecciones y utilidades: estructuras de datos de colección integradas y clases de utilidad, para expresiones regulares , simultaneidad , registro y compresión de datos .
- GUI y gráficos 2D : el paquete AWT (
java.awt
) operaciones básicas de GUI y se vincula al sistema nativo subyacente. También contiene la API de gráficos 2D. El paquete Swing (javax.swing
) se basa en AWT y proporciona un conjunto de herramientas de widgets independiente de la plataforma , así como una apariencia y funcionalidad conectables . También se ocupa de los componentes de texto editables y no editables. - Sonido: interfaces y clases para leer, escribir, secuenciar y sintetizar datos de sonido.
- Texto: se
java.text
ocupa de texto, fechas, números y mensajes. - Paquete de imágenes:
java.awt.image
yjavax.imageio
proporciona API para escribir, leer y modificar imágenes. - XML : SAX , DOM , StAX , transformaciones XSLT , XPath y varias API para servicios Web , como protocolo SOAP y JAX-WS .
- API de CORBA y RMI , incluido un ORB integrado
- La seguridad es proporcionada por
java.security
y los servicios de cifrado son proporcionados porjavax.crypto
. - Bases de datos : acceso a bases de datos SQL a través de
java.sql
- Acceso a motores de secuencias de comandos: el
javax.script
paquete da acceso a cualquier lenguaje de secuencias de comandos compatible . - Applets :
java.applet
permite que las aplicaciones se descarguen a través de una red y se ejecuten dentro de una caja de arena protegida - Java Beans :
java.beans
proporciona formas de manipular componentes reutilizables. - Introspección y reflexión: java.lang.Class representa una clase, pero otras clases como Method y Constructor están disponibles en
java.lang.reflect
.
Licencia
Licencias previas
Antes del lanzamiento de OpenJDK, el JDK se basaba en una licencia propietaria .
Siguiendo su promesa de lanzar un JDK completamente compilable basado en código de fuente abierto y casi completamente libre en la primera mitad de 2007, [3] Sun lanzó el código fuente completo de la Biblioteca de clases bajo la GPL el 8 de mayo de 2007, excepto algunos partes limitadas que fueron licenciadas por Sun de terceros que no querían que su código se publicara bajo una licencia de código abierto. [4] 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.
Hasta diciembre de 2010, Sun puso a disposición la parte restante del JDK y luego Oracle como Binary Plugs [5], que eran necesarios para construir el JDK pero no para ejecutarlo. en mayo de 2007[actualizar], la única parte de la biblioteca Class que permaneció propietaria y de código cerrado (4% en mayo de 2007[actualizar]para OpenJDK 7, [6] y menos del 1% en mayo de 2008[actualizar]y OpenJDK 6 [7] [8] ) era: [9] [10]
- La implementación de SNMP . [10]
Desde el primer lanzamiento de mayo de 2007, Sun, con la ayuda de la comunidad, lanzó como código abierto o reemplazó con alternativas de código abierto casi todo el código gravado:
- Todo el código del motor de audio, incluido el sintetizador de software , se convirtió en código abierto. [10] [11] El sintetizador de software de código cerrado ha sido reemplazado por un nuevo sintetizador desarrollado específicamente para OpenJDK llamado Gervill , [12]
- Todas las clases de criptografía se publicaron como código abierto [13].
- El código que escala y rasteriza fuentes utiliza FreeType de código abierto [14] [15] [16]
- La gestión de color nativa utiliza LittleCMS de código abierto . [15] Hay una capa enchufable en el JDK, de modo que la versión comercial de Java puede usar el sistema de administración de color original y propietario y OpenJDK puede usar LittleCMS.
- El código rasterizador de gráficos anti-aliasing utiliza el renderizador Piscis de código abierto utilizado en el proyecto phoneME . [15] [17] [18]
- El complemento de JavaScript es de código abierto (el motor de JavaScript en sí fue de código abierto desde el principio). [19]
Lanzamiento de código abierto
A partir de diciembre de 2010, todos los denominados enchufes binarios fueron reemplazados por reemplazos de código abierto , lo que abrió todo el JDK. [20]
Implementaciones alternativas
GNU Classpath es la otra biblioteca principal de clases de software libre para Java. A diferencia de otras implementaciones, solo implementa la biblioteca de clases y es utilizado por muchos tiempos de ejecución de Java gratuitos (como Kaffe , SableVM , JamVM ).
Apache Harmony fue otra biblioteca de clases de software libre. Su objetivo era implementar las otras partes de la pila de Java ( máquina virtual , compilador y otras herramientas necesarias para cualquier implementación de Java ).
Ver también
- Plataforma Java, edición estándar
- Lista de API de Java
- OpenJDK
- Implementaciones Java gratuitas
- Biblioteca estándar
- Subprograma de Java
Referencias
- ^ "Cómo se encuentran las clases" . Oracle Corporation . Consultado el 5 de diciembre de 2015 .
- ^ "Resumen del módulo JDK" . Oracle Corporation . 2015-10-23 . Consultado el 29 de noviembre de 2015 .
- ^ [1]
- ^ Rich Green (8 de mayo de 2007). "¡Open JDK está aquí!" . Sun Microsystems . Consultado el 25 de noviembre de 2011 .
- ^ "Enchufes binarios OpenJDK" . Sun Microsystems . 2007-05-08. Archivado desde el original el 26 de agosto de 2012 . Consultado el 25 de noviembre de 2011 .
- ^ Fitzsimmons, Thomas (18 de mayo de 2007). "Planes para OpenJDK" . Consultado el 22 de mayo de 2007 .
- ^ Ángel, Lillian (13 de marzo de 2008). "OpenJDK para reemplazar IcedTea en Fedora 9" . Archivado desde el original el 10 de diciembre de 2012 . Consultado el 5 de abril de 2008 .
- ^ Wade, Karsten (13 de marzo de 2008). "¡OpenJDK en Fedora 9!" . redhatmagazine.com. Archivado desde el original el 21 de abril de 2008 . Consultado el 5 de abril de 2008 .
Thomas Fitzsimmons actualizó las páginas fuente de las notas de la versión de Fedora 9 para reflejar que Fedora 9 se enviaría con OpenJDK 6 en lugar de la implementación de IcedTea de OpenJDK 7. Fedora 9 (Sulphur) se lanzará en mayo de 2008.
- ^ Herron, David (4 de octubre de 2007). "Planes para OpenJDK" . Archivado desde el original el 11 de octubre de 2007 . Consultado el 9 de octubre de 2007 .
- ^ a b c "Fuente OpenJDK 6 b10 publicada" . 2008-05-30 . Consultado el 1 de junio de 2008 .
- ^ página del proyecto del motor de audio
- ^ "Gervill - Sintetizador de software" . Archivado desde el original el 4 de octubre de 2011 . Consultado el 1 de junio de 2008 .
- ^ "Crypto se ha agregado a OpenJDK" . 2007-09-27 . Consultado el 7 de octubre de 2007 .
- ^ página de proyecto del escalador de fuentes
- ^ a b c Página del proyecto Java2D
- ^ "Rasterizador de fuentes de tipo libre" . 2007-08-07 . Consultado el 24 de noviembre de 2007 .
- ^ phoneme.dev.java.net/ Archivado el 10 de junio de 2007 en la Wayback Machine.
- ^ página del proyecto graphics-rasterizer
- ^ "Javascript está sobrecargado y no hay soporte para complementos de JavaScript" . IcedTea . 2008-03-11 . Consultado el 1 de junio de 2008 .
Resumen cambiante. JavaScript ya no está sobrecargado, pero aún necesitamos el soporte de liveconnect.
- ^ Kelly O'Hair (diciembre de 2010). "Eliminada la lógica de los enchufes binarios OpenJDK7 y OpenJDK6" . Oracle Corporation . Consultado el 25 de noviembre de 2011 .
enlaces externos
- Página principal de Java SE
- Javadocs de la API de Java SE 10
- Documentación de la API de Java SE
- Kits de desarrollo de software Java (estado a agosto de 2006[actualizar]):
- 1.7 (desarrollo temprano)
- 1,6 (estable, actual)
- 1,5 (estable)
- 1,4 (estable)
- 1.3 (obsoleto)