Библиотека классов Java ( JCL ) — это набор динамически загружаемых библиотек , которые языки виртуальной машины Java (JVM) могут вызывать во время выполнения . Поскольку платформа Java не зависит от конкретной операционной системы , приложения не могут полагаться ни на одну из встроенных в платформу библиотек. Вместо этого платформа Java предоставляет полный набор стандартных библиотек классов , содержащих функции, общие для современных операционных систем.
JCL служит трем целям в JVM:
JCL почти полностью написан на Java, за исключением тех частей, которые требуют прямого доступа к оборудованию и операционной системе (например, для ввода-вывода или растровой графики ). Классы, предоставляющие доступ к этим функциям, обычно используют оболочки Java Native Interface для доступа к API операционной системы .
Почти весь JCL хранится в одном архивном файле Java под названием «rt.jar», который поставляется с дистрибутивами JRE и JDK . Библиотека классов Java (rt.jar) расположена в пути к классам начальной загрузки по умолчанию [1] и не обязательно должна присутствовать в пути к классам, объявленном для приложения. Среда выполнения использует загрузчик классов начальной загрузки для поиска JCL.
Система модулей Java (часть версии Java 9 ) разбила монолитный файл JAR «rt.jar» и разделила сам JCL на несколько модулей с указанными зависимостями. [2]
Любая реализация 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 года, [3] Sun выпустила полный исходный код библиотеки классов под лицензией GPL 8 мая 2007 года, за исключением некоторых ограниченные части, которые были лицензированы Sun у третьих сторон, которые не хотели, чтобы их код был выпущен под лицензией с открытым исходным кодом. [4] Целью Sun было заменить части, которые остаются проприетарными и закрытыми, альтернативными реализациями и сделать библиотеку классов полностью бесплатной и с открытым исходным кодом.
До декабря 2010 года оставшаяся обремененная часть JDK была доступна сначала Sun, а затем Oracle в виде двоичных плагинов [5] , которые требовались для сборки JDK, но не были необходимы для его запуска. по состоянию на май 2007 года [обновлять]единственная часть библиотеки классов, которая оставалась проприетарной и с закрытым исходным кодом (4% по состоянию на май 2007 года [обновлять]для OpenJDK 7, [6] и менее 1% по состоянию на май 2008 года [обновлять]и OpenJDK 6 [7] [8 ] ] ) был [9] реализацией SNMP . [10]
С момента первого выпуска в мае 2007 года Sun с помощью сообщества выпустила как открытый исходный код или заменила альтернативами с открытым исходным кодом почти весь обремененный код:
Начиная с декабря 2010 года все так называемые бинарные плагины были заменены аналогами с открытым исходным кодом , что сделало весь JDK открытым. [20]
GNU Classpath — еще одна основная библиотека классов свободного программного обеспечения для Java. В отличие от других реализаций, он реализует только библиотеку классов и используется многими бесплатными средами выполнения Java (например , Kaffe , SableVM , JamVM ).
Apache Harmony была еще одной библиотекой классов бесплатного программного обеспечения. Его целью была реализация других частей стека Java ( виртуальная машина , компилятор и другие инструменты, необходимые для любой реализации Java ).
Томас Фитцсиммонс обновил исходные страницы примечаний к выпуску Fedora 9, указав, что Fedora 9 будет поставляться с OpenJDK 6 вместо реализации OpenJDK 7 IcedTea. Fedora 9 (Sulphur) должна быть выпущена в мае 2008 года.
Изменение резюме.
JavaScript больше не обременен, но нам по-прежнему нужна поддержка liveconnect.