Библиотека классов Java (JCL ) представляет собой набор динамически загружаемые библиотеки, которые языки виртуальной машины Java (JVM) могут вызывать во время времени выполнения. Поскольку платформа Java не зависит от конкретной операционной системы, приложения не могут полагаться ни на одну из собственных библиотек платформы. Вместо этого платформа Java предоставляет исчерпывающий набор стандартных библиотек классов, содержащих функции, общие для современных операционных систем.
JCL служит трем целям в JVM:
Java Библиотека классов (JCL ) почти полностью написана на Java, за исключением частей, которым требуется прямой доступ к аппаратному обеспечению и операционной системе (например, для ввода / вывода или растровой графики ). Классы, которые предоставляют доступ к этим функциям, обычно используют оболочки Java Native Interface для доступа к операционной системе API-интерфейсы.
Практически весь JCL хранится в одном файле архива Java, который называется "rt.jar", который предоставляется с дистрибутивами JRE и JDK. Библиотека классов Java (rt.jar) расположена в пути к классам начальной загрузки по умолчанию и не обязательно должна появляться в classpath, объявленном для приложения. Среда выполнения использует загрузчик классов начальной загрузки для поиска JCL.
Система модулей Java (часть выпуска Java 9 ) сломала монолитный файл JAR "rt.jar" и разбила сам JCL на несколько модулей с указанными зависимости.
Любая реализация Java должна пройти тесты Java Technology Compatibility Kit на соответствие, включая тесты JCL.
Доступ к функциям JCL осуществляется через классы, представленные в пакетах.
java.lang
содержит фундаментальные классы и интерфейсы тесно связаны с языком и системой времени выполнения.java.io
, java.nio
и java.net
. Для сети SCTP доступен через com.sun.nio.sctp
.java.math
предоставляет математические выражения и оценки, как а также типы данных с десятичными и целыми числами произвольной точности.java.awt
) основные операции графического интерфейса пользователя и привязываются к базовой собственной системе. Он также содержит API 2D-графики. Пакет Swing (javax.swing
) построен на AWT и предоставляет независимый от платформы инструментарий виджетов, а также Подключаемый внешний вид. Он также имеет дело с редактируемыми и нередактируемыми текстовыми компонентами.java.text
занимается текстом, датами, числами и сообщениями.java.awt. image
и javax.imageio
предоставляют API для записи, чтения и изменения изображений.java.security
и услуги шифрования предоставляются javax.crypto
.java.sql
javax.script
предоставляет доступ к любому соответствующему языку сценариев.java.applet
позволяет загружать приложения по сети и запускать их в защищенной песочницеjava.beans
предоставляет способы манипулировать повторно используемыми компонентами.java.lang.reflect
.До выпуска OpenJDK JDK был основан на частной лицензии.
. Следуя их обещанию выпустить полностью собираемый JDK, основанный почти полностью на бесплатный и открытый исходный код в первой половине 2007 года, Sun выпустила полный исходный код библиотеки классов под GPL 8 мая 2007 года, за исключением некоторых ограниченных частей, которые были лицензированы Sun у третьих лиц, которые не хотели, чтобы их код выпускался под лицензией с открытым исходным кодом. Целью Sun было заменить части, которые остаются проприетарными и с закрытым исходным кодом, альтернативными реализациями и сделать библиотеку классов полностью бесплатной и с открытым исходным кодом.
До декабря 2010 года оставшаяся обремененная часть JDK была предоставлена Sun, затем Oracle в виде двоичных плагинов, которые были необходимы для сборки JDK, но не были необходимы для запустить его. по состоянию на май 2007 г. единственной частью библиотеки классов, которая оставалась закрытой и закрытой (4% по состоянию на май 2007 г. для OpenJDK 7 и менее 1% по состоянию на май 2008 г. и OpenJDK 6), была:
Начиная с первого выпуска в мае 2007 года, Sun при помощи сообщества выпустила как открытый исходный код или заменила его альтернативами с открытым исходным кодом почти весь обремененный код:
Начиная с декабря 2010 года, все так называемые двоичные плагины были заменены заменами с открытым исходным кодом, в результате чего весь JDK открыт.
GNU Classpath - другая основная библиотека классов бесплатного программного обеспечения для Java. В отличие от других реализаций, он реализует только библиотеку классов и используется многими бесплатными средами выполнения Java (например, Kaffe, SableVM, JamVM ).
Apache Harmony - еще одна библиотека классов бесплатного программного обеспечения. Его целью было реализовать другие части стека Java (Виртуальная машина, Компилятор и другие инструменты, необходимые для любой реализации Java ).