Articulo de referencia

Biblioteca de clases Java

La Biblioteca de Clases de Java ( JCL ) es un conjunto de bibliotecas de carga dinámica que los lenguajes de la Máquina Virtual de Java (JVM) pueden llamar en tiempo de ejecució...

La Biblioteca de Clases de Java ( JCL ) es un conjunto de bibliotecas de carga dinámica que los lenguajes de la Máquina Virtual de Java (JVM) pueden llamar en tiempo de ejecución . Es la biblioteca estándar de Java y otros lenguajes de la JVM, y por lo tanto a veces se la llama Biblioteca Estándar de Java . [ 1 ] Debido a que la Plataforma Java 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. Desde Java 9, se puede acceder a la Biblioteca de Clases de Java a través de la ruta del módulo utilizando el Sistema de Módulos de la Plataforma Java .

JCL cumple tres funciones 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 contenedoras 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 funcionalidades que requiere una aplicación Java. En estos casos, la implementación de la biblioteca puede emular dichas funcionalidades o proporcionar una forma consistente de comprobar la presencia de una funcionalidad específica.

Utiliza los espacios de nombres java.*, javax.*y jdk.*. Algunas clases empaquetadas pueden residir en espacios de nombres como sun.*o com.sun.*(para Sun Microsystems ), pero no se consideran parte de la biblioteca estándar. El javaxespacio de nombres se asoció principalmente con Java Platform, Enterprise Edition como paquetes de extensión de la biblioteca estándar de Java.

Implementación y configuración

JCL está escrito casi en su totalidad en Java, excepto las partes que necesitan acceso directo al hardware y al sistema operativo (como para E/S o gráficos de mapa de bits ), que en cambio están escritas en C++ . [ 2 ] Las clases que dan acceso a estas funciones suelen usar envoltorios de Java Native Interface para acceder a las API del sistema operativo .

Casi todo el JCL se almacena en un único archivo Java llamado " rt.jar ", que se incluye en las distribuciones de JRE y JDK . La biblioteca de clases Java ( rt.jar ) se encuentra en la ruta de clases de arranque predeterminada [ 3 ] y no es necesario que aparezca en la ruta de clases declarada para la aplicación. El entorno de ejecución utiliza el cargador de clases de arranque para encontrar el JCL.

El sistema de módulos de Java (parte de la versión Java 9 ) rompió el archivo JAR monolítico " rt.jar " y modularizó el propio JCL en varios módulos con dependencias específicas. [ 4 ]

Conformidad

Cualquier implementación de Java debe superar las pruebas del Kit de Compatibilidad Tecnológica de Java (JCL) para garantizar su conformidad.

Características principales

Las funcionalidades de JCL se acceden a través de las clases proporcionadas en los paquetes .

Paquetes fuera del espacio de nombres principal

Java agrupa algunos paquetes fuera de los espacios de nombres principales ( java.*, javax.*, y jdk.*). Entre ellos se incluyen:

Paquetes de implementación

El sun.*(que contiene la sun.misc.Unsafeclase, utilizada para manipular la CPU y el hardware, administrar directamente la memoria y otras cosas) [ 10 ] [ 11 ] y otros com.sun.*paquetes son todos parte de un módulo llamado jdk.unsupported. [ 12 ] Este módulo contiene paquetes que no son parte de la biblioteca estándar de Java pero que se incluyen como parte de la implementación de Java.

Licencias

Licencias anteriores

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 casi totalmente libre y de código abierto en la primera mitad de 2007, [ 13 ] Sun lanzó el código fuente completo de la Biblioteca de Clases bajo la GPL el 8 de mayo de 2007, excepto algunas partes limitadas que Sun había licenciado de terceros que no querían que su código se publicara bajo una licencia de código abierto. [ 14 ] El objetivo de Sun era reemplazar las partes que seguían siendo propietarias y de código cerrado con implementaciones alternativas y hacer que la Biblioteca de Clases fuera completamente libre y de código abierto.

Hasta diciembre de 2010, la parte restante del JDK que estaba restringida fue puesta a disposición por Sun y luego por Oracle como Binary Plugs [ 15 ] , que eran necesarios para compilar el JDK pero no para ejecutarlo. A partir de mayo de 2007 , la única parte de la biblioteca Class que permaneció propietaria y de código cerrado (4% a mayo de 2007) para OpenJDK 7, [ 16 ] y menos del 1% a partir de mayo de 2008 y OpenJDK 6 [ 17 ] [ 18 ] ) fue [ 19 ] la implementación de SNMP . [ 20 ]

Desde su primer lanzamiento en mayo de 2007, Sun, con la ayuda de la comunidad, ha liberado como código abierto o ha sustituido por alternativas de código abierto casi todo el código restringido:

Lanzamiento de código abierto

A partir de diciembre de 2010, todos los llamados complementos binarios fueron reemplazados por alternativas de código abierto , lo que hizo que todo el JDK fuera de código abierto. [ 30 ]

Implementaciones alternativas

GNU Classpath es la otra principal biblioteca de clases de software libre para Java. A diferencia de otras implementaciones, solo implementa la biblioteca de clases y es utilizada por muchos entornos de ejecución de Java libres (como Kaffe , SableVM y JamVM ).

Apache Harmony era otra biblioteca de clases de software libre. Su objetivo era implementar las demás partes de la pila de Java ( máquina virtual , compilador y otras herramientas necesarias para cualquier implementación de Java ).

Véase también

Referencias

  1. Huisman, M.; Jacobs, BPF; van den Berg, J. (1999). "Un estudio de caso en la verificación de bibliotecas de clases: la clase vector de Java" . FernUniversität : 40. Recuperado el 6 de octubre de 2025 .
  2. "Basado en las fuentes de OpenJDK" . OpenJDK . Consultado el 23 de octubre de 2021 .
  3. "Cómo se encuentran las clases" . Oracle Corporation . Archivado del original el 25 de abril de 2009. Consultado el 5 de diciembre de 2015 .
  4. "Resumen del módulo JDK" . Oracle Corporation . 23 de octubre de 2015. Archivado del original el 8 de diciembre de 2015. Consultado el 29 de noviembre de 2015 .
  5. "netspace.javascript (Java SE 25 y JDK 25)" . docs.oracle.com . Oracle Corporation . Consultado el 10 de octubre de 2025 .
  6. "org.ietf.jgss (Java SE 25 y JDK 25)" . docs.oracle.com . Oracle Corporation . Consultado el 10 de octubre de 2025 .
  7. "java.corba (Java SE 10 y JDK 10)" . docs.oracle.com . Oracle Corporation . Consultado el 10 de octubre de 2025 .
  8. "org.w3c.dom (Java SE 25 y JDK 25)" . docs.oracle.com . Oracle Corporation . Consultado el 10 de octubre de 2025 .
  9. "org.xml.sax (Java SE 25 y JDK 25)" . docs.oracle.com . Oracle Corporation . Consultado el 10 de octubre de 2025 .
  10. Ben Evans (4 de mayo de 2020). "La clase insegura: inseguro a cualquier velocidad" . blogs.oracle.com . Oracle Corporation.
  11. Oracle Corporation. "Preguntas frecuentes: Paquetes Sun: Por qué los desarrolladores no deberían escribir programas que llamen a paquetes 'sun'" . oracle.com . Oracle Corporation . Consultado el 22 de abril de 2026 .
  12. "jdk.unsupported" . cr.openjdk.org . OpenJDK . Consultado el 10 de octubre de 2025 .
  13. "Java libre y de código abierto - Preguntas frecuentes" . sun.com . Mayo de 2007. Archivado del original el 22 de mayo de 2007. Consultado el 27 de junio de 2024 .
  14. Rich Green (8 de mayo de 2007). "¡Open JDK ya está aquí!" . Sun Microsystems . Archivado del original el 7 de febrero de 2012. Consultado el 25 de noviembre de 2011 .
  15. "OpenJDK Binary Plugs" . Sun Microsystems . 8 de mayo de 2007. Archivado del original el 26 de agosto de 2012. Consultado el 25 de noviembre de 2011 .
  16. Fitzsimmons, Thomas (18 de mayo de 2007). "Planes para OpenJDK" . Recuperado el 22 de mayo de 2007 .
  17. Angel, Lillian (13 de marzo de 2008). "OpenJDK reemplazará a IcedTea en Fedora 9" . Recuperado el 5 de abril de 2008 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  18. Wade, Karsten (13 de marzo de 2008). "¡OpenJDK en Fedora 9!" . redhatmagazine.com. Archivado del original el 21 de abril de 2008. Recuperado el 5 de abril de 2008. Thomas Fitzsimmons actualizó las páginas de origen de las notas de la versión de Fedora 9 para reflejar que Fedora 9 se distribuiría con OpenJDK 6 en lugar de la implementación IcedTea de OpenJDK 7. Fedora 9 (Sulphur) se lanzará en mayo de 2008.
  19. Herron, David (04-10-2007). "Planes para OpenJDK" . Archivado del original el 11-10-2007 . Recuperado el 09-10-2007 .
  20. 1 2 "Fuente de OpenJDK 6 b10 publicada" . 30-05-2008. Archivado del original el 18-06-2009 . Recuperado el 01-06-2008 .
  21. "Página del proyecto audio-engine" . Archivado del original el 16 de mayo de 2007. Consultado el 19 de mayo de 2007 .
  22. "Gervill – Sintetizador de software" . Consultado el 1 de junio de 2008 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  23. "Se ha añadido criptografía a OpenJDK" . 27/09/2007. Archivado del original el 25/12/2007 . Consultado el 07/10/2007 .
  24. "font-scaler projectpage" . Archivado del original el 10 de junio de 2015. Consultado el 19 de mayo de 2007 .
  25. 1 2 3 "Página del proyecto Java2D" . Archivado del original el 16 de mayo de 2007. Recuperado el 19 de mayo de 2007 .
  26. "Rasterizador de fuentes Freetype" . 7 de agosto de 2007. Archivado del original el 7 de enero de 2009. Consultado el 24 de noviembre de 2007 .
  27. "Bienvenido al proyecto PhoneME" . Archivado desde phoneme.dev.java.net/ el original el 10 de junio de 2007.{{cite web}}: Comprobar |url=valor ( ayuda )
  28. "Página del proyecto graphics-rasterizer" . Archivado del original el 16 de mayo de 2007. Consultado el 19 de mayo de 2007 .
  29. "Javascript está sobrecargado y no hay soporte para complementos de JavaScript" . IcedTea . 11 de marzo de 2008. Archivado del original el 27 de septiembre de 2008. Consultado el 1 de junio de 2008. Resumen cambiante . JavaScript ya no está sobrecargado, pero aún necesitamos soporte para LiveConnect.
  30. Kelly O'Hair (diciembre de 2010). "Se eliminó la lógica de los complementos binarios de OpenJDK7 y OpenJDK6" . Oracle Corporation . Archivado del original el 7 de abril de 2022. Consultado el 25 de noviembre de 2011 .
  • Página principal de Java SE
  • Javadocs de la API de Java SE 24
  • Documentación de la API de Java SE
  • Kits de desarrollo de software Java (estado a agosto de 2006)):
    • 1.7 (desarrollo temprano)
    • 1,6 (estable, actual)
    • 1,5 (estable)
    • 1.4 (estable)
    • 1.3 (obsoleto)