Библиотека классов Java
![]() | В этой статье используются голые URL-адреса , которые неинформативны и уязвимы к порче ссылок . ( Август 2022 г. ) |
Эта статья нуждается в дополнительных цитатах для проверки . ( август 2011 г. ) |
Библиотека классов Java ( JCL ) — это набор динамически загружаемых библиотек , которые языки виртуальной машины Java (JVM) могут вызывать во время выполнения . Поскольку платформа Java не зависит от конкретной операционной системы , приложения не могут полагаться ни на одну из встроенных в платформу библиотек. Вместо этого платформа Java предоставляет полный набор стандартных библиотек классов , содержащих функции, общие для современных операционных систем.
JCL служит трем целям в JVM:
- Как и другие стандартные библиотеки кода , они предоставляют программисту хорошо известный набор полезных возможностей, таких как контейнерные классы и обработка регулярных выражений .
- Библиотека предоставляет абстрактный интерфейс для задач, которые обычно сильно зависят от оборудования и операционной системы, таких как доступ к сети и доступ к файлам .
- Некоторые базовые платформы могут не поддерживать все функции, ожидаемые Java-приложением. В этих случаях реализация библиотеки может либо эмулировать эти функции, либо предоставлять согласованный способ проверки наличия определенной функции.
Реализация и настройка [ править ]
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
предоставляет математические выражения и оценки, а также типы данных десятичных и целых чисел произвольной точности. - Коллекции и утилиты: встроенные структуры данных коллекций и служебные классы для регулярных выражений , параллелизма , ведения журналов и сжатия данных .
- Графический интерфейс и 2D-графика : пакет AWT (
java.awt
) основные операции графического интерфейса и привязка к базовой собственной системе. Он также содержит API 2D-графики. Пакет Swing (javax.swing
) построен на основе AWT и предоставляет независимый от платформы набор инструментов виджетов , а также подключаемый внешний вид . Он также имеет дело с редактируемыми и нередактируемыми текстовыми компонентами. - Звук: интерфейсы и классы для чтения, записи, секвенирования и синтеза звуковых данных.
- Текст:
java.text
имеет дело с текстом, датами, числами и сообщениями. - Пакет изображений:
java.awt.image
иjavax.imageio
предоставить API для записи, чтения и изменения изображений. - XML : SAX , DOM , StAX , преобразования XSLT , XPath и различные API для веб-сервисов , такие как протокол SOAP и JAX-WS .
- Безопасность обеспечивает
java.security
и услуги шифрования предоставляютсяjavax.crypto
. - Базы данных : доступ к базам данных SQL через
java.sql
- Доступ к механизмам сценариев:
javax.script
пакет предоставляет доступ к любому соответствующему языку сценариев . - Апплеты :
java.applet
позволяет загружать приложения по сети и запускать их в защищенной песочнице - Java-бины :
java.beans
предоставляет способы манипулирования повторно используемыми компонентами. - Самоанализ и размышление: java.lang.Class представляет класс, но другие классы, такие как Method и Constructor, доступны в
java.lang.reflect
.
Лицензирование [ править ]
Предыдущие лицензии [ править ]
До выпуска OpenJDK JDK основывался на проприетарной лицензии .
Следуя своему обещанию выпустить полностью готовый к сборке JDK на основе почти бесплатного кода с открытым исходным кодом в первой половине 2007 года, [3] Sun выпустила полный исходный код библиотеки классов под лицензией GPL 8 мая 2007 года, за исключением некоторых ограниченных частей, которые были лицензированы Sun у третьих сторон, которые не хотели, чтобы их код был выпущен под лицензией с открытым исходным кодом. [4] Целью Sun было заменить части, которые остаются проприетарными и закрытыми, альтернативными реализациями и сделать библиотеку классов полностью бесплатной и с открытым исходным кодом.
До декабря 2010 года оставшаяся обремененная часть JDK была доступна сначала Sun , а затем Oracle в виде двоичных плагинов. [5] которые были необходимы для сборки JDK, но не были необходимы для его запуска. по состоянию на май 2007 г. [update], the only part of the Class library that remained proprietary and closed-source (4% as of May 2007[update] для OpenJDK 7, [6] и менее 1% по состоянию на май 2008 г. [update] и OpenJDK 6 [7] [8] ) был [9] SNMP . реализация [10]
С момента первого выпуска в мае 2007 года Sun с помощью сообщества выпустила как открытый исходный код или заменила альтернативами с открытым исходным кодом почти весь обремененный код:
- Весь код аудиодвижка, включая программный синтезатор , стал открытым исходным кодом. [10] [11] Программный синтезатор с закрытым исходным кодом был заменен новым синтезатором, разработанным специально для OpenJDK, под названием Gervill . [12]
- Все курсы по криптографии были выпущены с открытым исходным кодом. [13]
- Код, который масштабирует и растрирует шрифты, использует FreeType с открытым исходным кодом. [14] [15] [16]
- Встроенное управление цветом с открытым исходным кодом использует LittleCMS . [15] В JDK есть подключаемый слой, поэтому коммерческая версия Java может использовать оригинальную, проприетарную систему управления цветом, а OpenJDK может использовать LittleCMS.
- Код сглаживания графики растеризатора использует средство рендеринга Pisces с открытым исходным кодом, используемое в проекте phoneME . [15] [17] [18]
- Плагин JavaScript имеет открытый исходный код ( сам движок JavaScript с самого начала был открытым). [19]
Релиз с открытым исходным кодом [ править ]
Начиная с декабря 2010 года все так называемые бинарные плагины были заменены аналогами с открытым исходным кодом , что сделало весь JDK открытым. [20]
Альтернативные реализации [ править ]
GNU Classpath — еще одна основная библиотека классов свободного программного обеспечения для Java. В отличие от других реализаций, он реализует только библиотеку классов и используется многими бесплатными средами выполнения Java (например, Kaffe , SableVM , JamVM ).
Apache Harmony была еще одной библиотекой классов бесплатного программного обеспечения. Его целью была реализация других частей стека Java ( виртуальная машина , компилятор и другие инструменты, необходимые для любой реализации Java ).
См. также [ править ]
- Платформа Java, стандартная версия
- Список API Java
- OpenJDK
- Бесплатные реализации Java
- Стандартная библиотека
- Java-апплет
Ссылки [ править ]
- ^ «Как создаются классы» . Корпорация Оракл . Проверено 5 декабря 2015 г.
- ^ «Сводка модуля JDK» . Корпорация Оракл . 23 октября 2015 г. Архивировано из оригинала 8 декабря 2015 г. Проверено 29 ноября 2015 г.
- ^ http://www.sun.com/software/opensource/java/faq.jsp#b4
- ^ Рич Грин (8 мая 2007 г.). «Открытый JDK уже здесь!» . Сан Микросистемс . Проверено 25 ноября 2011 г.
- ^ «Двоичные плагины OpenJDK» . Сан Микросистемс . 8 мая 2007 г. Архивировано из оригинала 26 августа 2012 г. Проверено 25 ноября 2011 г.
- ^ Фицсиммонс, Томас (18 мая 2007 г.). «Планы для OpenJDK» . Проверено 22 мая 2007 г.
- ^ Ангел, Лилиан (13 марта 2008 г.). «OpenJDK заменит IcedTea в Fedora 9» . Архивировано из оригинала 10 декабря 2012 г. Проверено 5 апреля 2008 г.
- ^ Уэйд, Карстен (13 марта 2008 г.). «OpenJDK в Fedora 9!» . redhatmagazine.com. Архивировано из оригинала 21 апреля 2008 г. Проверено 5 апреля 2008 г.
Томас Фицсиммонс обновил исходные страницы примечаний к выпуску Fedora 9, указав, что Fedora 9 будет поставляться с OpenJDK 6 вместо реализации OpenJDK 7 IcedTea. Fedora 9 (Sulphur) должна быть выпущена в мае 2008 года.
- ^ Херрон, Дэвид (4 октября 2007 г.). «Планы для OpenJDK» . Архивировано из оригинала 11 октября 2007 г. Проверено 9 октября 2007 г.
- ^ Jump up to: Перейти обратно: а б «Опубликован исходный код OpenJDK 6 b10» . 30 мая 2008 г. Проверено 1 июня 2008 г.
- ^ страница проекта аудио-движка
- ^ «Гервилл – программный синтезатор» . Архивировано из оригинала 4 октября 2011 г. Проверено 1 июня 2008 г.
- ^ «Криптовалюта была добавлена в OpenJDK» . 27 сентября 2007 г. Проверено 7 октября 2007 г.
- ^ страница проекта Font-Scaler
- ^ Jump up to: Перейти обратно: а б с Страница проекта Java2D
- ^ «Растеризация шрифтов Freetype» . 07.08.2007 . Проверено 24 ноября 2007 г.
- ^ phoneme.dev.java.net/. Архивировано 10 июня 2007 г. на Wayback Machine.
- ^ страница проекта графического растеризатора
- ^ «Javascript перегружен, и нет поддержки плагинов Javascript» . Ледяной чай . 11 марта 2008 г. Архивировано из оригинала 27 сентября 2008 г. Проверено 1 июня 2008 г.
Изменение резюме. JavaScript больше не обременен, но нам по-прежнему нужна поддержка liveconnect.
- ^ Келли О'Хэйр (декабрь 2010 г.). «Удалена логика двоичных плагинов OpenJDK7 и OpenJDK6» . Корпорация Оракл . Проверено 25 ноября 2011 г.
Внешние ссылки [ править ]
- Java SE Главная страница
- Java SE 19 API Javaдокументация
- Документация по API Java SE
- Комплекты средств разработки программного обеспечения Java (статус по состоянию на август 2006 г.) [update]):