Spec-Zone.ru › OpenJDK 21

Модуль java.xml

module java.xml
Определяет Java API для обработки XML (JAXP).
  • API JAXP
  • Фабрики и процессоры
  • Настройка
    • Свойства JAXP
    • Системные свойства
    • Файл конфигурации JAXP
      • jaxp.properties файл
      • Пользовательский файл конфигурации
    • Порядок приоритета свойств
  • Механизм поиска JAXP
    • Процедура поиска
  • Примечание по реализации

API JAXP

JAXP включает набор API, построенных на нескольких XML-технологиях и стандартах, которые необходимы для обработки XML. Они включают API для:
  • Парсинга: основанный на JAXP Parsing API, Document Object Model (DOM) и Simple API for XML Parsing (SAX), а также Streaming API for XML (StAX);
  • Сериализации: StAX и Extensible Stylesheet Language Transformations (XSLT);
  • Валидации: JAXP Validation API, основанный на языке определения схем XML;
  • Трансформации: JAXP Transformation API или XSLT (расширяемый язык стилей преобразований);
  • Запроса и обхода XML-документов: XML XPath Language API (XPath);
  • Разрешения внешних ресурсов: XML Catalog API;

Фабрики и процессоры

Фабрики являются точками входа каждого API, предоставляя методы, позволяющие приложениям программно задавать свойства JAXP перед созданием процессоров. Раздел Настройка содержит более подробную информацию об этом. Фабрики также поддерживают механизм поиска JAXP, в котором приложения могут быть развернуты с реализациями третьих сторон вместо реализаций JDK.

Процессоры являются агрегатами парсеров (или читателей), сериализаторов (или писателей), валидаторов и трансформаторов, которые контролируют и выполняют обработку в соответствующих областях. Они определены в соответствующих пакетах. Например, в пакете parsers находятся DocumentBuilder и SAXParser, представляющие процессоры DOM и SAX.

Процессоры настраиваются и создаются с помощью соответствующих фабрик. Например, DocumentBuilder и SAXParser создаются с помощью DocumentBuilderFactory и SAXParserFactory соответственно.

Настройка

При первом вызове фабрики JAXP выполняется процесс настройки для определения используемой реализации и ее последующего поведения. Во время настройки фабрика проверяет такие источники конфигурации, как свойства JAXP, системные свойства и файл конфигурации JAXP, и устанавливает значения, следуя порядку приоритета свойств. Терминология и процесс определены ниже.

Свойства JAXP

Свойства JAXP — это параметры конфигурации, которые применяются к процессорам XML. Они могут использоваться для управления и настройки поведения процессора. В зависимости от используемого API JAXP, свойства JAXP могут называться *Атрибутами, Свойствами* или *Функциями*.

Системные свойства

Некоторые свойства JAXP имеют соответствующие системные свойства, позволяющие настраивать свойства во время выполнения, в командной строке или в файле конфигурации JAXP. Например, системное свойство javax.xml.catalog.resolve может использоваться для установки свойства RESOLVE каталога CatalogFeatures.

Точное время чтения системных свойств не определено. Для обеспечения правильного применения желаемых значений приложения должны убедиться, что системные свойства установлены должным образом до создания первой фабрики JAXP и не изменяются после этого.

Файл конфигурации JAXP

JAXP поддерживает использование файлов конфигурации для указания класса реализации для загрузки фабрик JAXP, а также для установки свойств JAXP.

Файлы конфигурации — это файлы Java Properties, которые содержат соответствия между системными свойствами и их значениями, определенными различными API или процессами. Следующие записи в файле конфигурации демонстрируют установку свойств javax.xml.parsers.DocumentBuilderFactory и CatalogFeatures.RESOLVE:

   javax.xml.parsers.DocumentBuilderFactory=packagename.DocumentBuilderFactoryImpl
   javax.xml.catalog.resolve=strict

jaxp.properties файл

По умолчанию JAXP ищет файл конфигурации jaxp.properties, расположенный в каталоге ${java.home}/conf; и если файл существует, загружает указанные свойства для настройки поведения XML-фабрик и процессоров.

Файл jaxp.properties будет читаться только один раз во время инициализации реализации JAXP и кэшироваться в памяти. Если возникнет ошибка доступа к файлу или его чтения, процесс конфигурации продолжится так, как если бы файла не существовало.

Пользовательский файл конфигурации

В дополнение к файлу jaxp.properties системное свойство java.xml.config.file может быть установлено для указания расположения файла конфигурации. Если свойство java.xml.config.file включено в файл конфигурации, оно будет проигнорировано.

При указании java.xml.config.file, файл конфигурации будет прочитан, и включенные свойства переопределят те же свойства, которые были определены в файле jaxp.properties. Если свойство java.xml.config.file не установлено во время инициализации реализации JAXP, дальнейших попыток проверить его существование не будет.

Значение java.xml.config.file должно содержать допустимый путь к файлу конфигурации. Если путь не является абсолютным, он будет рассматриваться как относительный к рабочей директории JVM. Если при чтении файла конфигурации возникнет ошибка, процесс конфигурации продолжится так, как если бы свойство java.xml.config.file не было установлено. Реализации могут по желанию вывести сообщение об ошибке.

Порядок приоритета свойств

Свойства JAXP могут быть установлены несколькими способами, включая методы API, системные свойства и файл конфигурации JAXP. Если они не установлены явно, они будут инициализированы значениями по умолчанию или более строгими значениями при включенной функции FEATURE_SECURE_PROCESSING (FSP). Порядок приоритета конфигурации для свойств следующий, от самого высокого к самому низкому:
  • API фабрик или процессоров

  • Системное свойство

  • Пользовательский файл конфигурации

  • Файл конфигурации JAXP по умолчанию jaxp.properties

  • Значения по умолчанию для свойств JAXP. Если FSP истинно, значения по умолчанию будут установлены для безопасной обработки XML.

Используя свойство RESOLVE CatalogFeatures в качестве примера, следующее иллюстрирует, как применяются эти правила:
  • Свойства, указанные в методах фабрик или процессоров, имеют наивысший приоритет. Следующий код эффективно устанавливает свойство RESOLVE в strict, независимо от настроек в других источниках конфигурации.

       DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
       dbf.setAttribute(CatalogFeatures.Feature.RESOLVE.getPropertyName(), "strict");
    
  • Если свойство не установлено в фабрике, как в коде выше, будет использоваться системное свойство.

        // in the following example, the RESOLVE property is set to 'continue'
        // for the entire application
        java -Djavax.xml.catalog.resolve=continue myApp
    
  • Если свойство не установлено в фабрике или с помощью системного свойства, то установка в файле конфигурации вступит в силу. Следующая запись устанавливает свойство в 'continue'.

        javax.xml.catalog.resolve=continue
    
  • Если свойство не установлено нигде, оно будет разрешено до значения по умолчанию, которое равно 'strict'.

Механизм поиска JAXP

JAXP определяет упорядоченную процедуру поиска для определения класса реализации для загрузки фабрик JAXP. Фабрики, которые поддерживают этот механизм, перечислены в таблице ниже вместе с методом, системным свойством и системным значением по умолчанию, которые должны использоваться в этой процедуре.
END_OF_DOCUMENT_MARKER
JAXP-фабрики
Фабрика Метод Системное свойство Системное значение по умолчанию
DatatypeFactory newInstance() javax.xml.datatype.DatatypeFactory newDefaultInstance()
DocumentBuilderFactory newInstance() javax.xml.parsers.DocumentBuilderFactory newDefaultInstance()
SAXParserFactory newInstance() javax.xml.parsers.SAXParserFactory newDefaultInstance()
XMLEventFactory newFactory() javax.xml.stream.XMLEventFactory newDefaultFactory()
XMLInputFactory newFactory() javax.xml.stream.XMLInputFactory newDefaultFactory()
XMLOutputFactory newFactory() javax.xml.stream.XMLOutputFactory newDefaultFactory()
TransformerFactory newInstance() javax.xml.transform.TransformerFactory newDefaultInstance()
SchemaFactory newInstance(schemaLanguage) javax.xml.validation.SchemaFactory:язык_схемы[1] newDefaultInstance()
XPathFactory newInstance(uri) DEFAULT_PROPERTY_NAME + ":uri"[2] newDefaultInstance()
[1] где язык_схемы — параметр метода newInstance(schemaLanguage).

[2] где uri — параметр метода newInstance(uri).

Процедура поиска

Порядок приоритетов при поиске реализации класса JAXP-фабрики следующий, от наивысшего к наименьшему:
  • Системное свойство, перечисленное в столбце "Системное свойство" таблицы JAXP-фабрики выше
  • Файл конфигурации (Configuration File)

  • Модуль загрузки поставщиков сервисов, определённый классом ServiceLoader, для поиска и загрузки реализации сервиса с использованием механизма по умолчанию: модуль загрузки использует класс загрузки контекста текущей нити, для поиска сервиса. Если класс загрузки контекста нити равен null, используется класс загрузки системы.

    SchemaFactory

    В случае с SchemaFactory, каждый потенциальный поставщик сервиса должен реализовывать метод isSchemaLanguageSupported(String schemaLanguage). Возвращается первый найденный поставщик, поддерживающий указанный язык схемы.

    XPathFactory

    В случае с XPathFactory, каждый потенциальный поставщик сервиса должен реализовывать метод isObjectModelSupported(String objectModel). Возвращается первый найденный поставщик, поддерживающий указанную модель объекта.
  • В противном случае возвращается реализация system-default, что эквивалентно вызову метода newDefaultInstance() or newDefaultFactory() , как показано в столбце "Системное значение по умолчанию" таблицы JAXP-фабрики выше.

    SchemaFactory

    В случае с SchemaFactory, должен быть платформенный стандарт по умолчанию SchemaFactory для W3C XML Schema.

    XPathFactory

    В случае с XPathFactory, должен быть платформенный стандарт по умолчанию XPathFactory для W3C DOM, т.е. DEFAULT_OBJECT_MODEL_URI.
Примечание по реализации:
  • Свойства, специфичные для реализации
    • Поддержка процессора
    • Список свойств, специфичных для реализации
    • Имена свойств предыдущих версий (устаревшие)

Свойства, специфичные для реализации

В дополнение к стандартным свойствам JAXP, реализация JDK поддерживает ряд свойств, специфичных для реализации, имена которых начинаются с "jdk.xml.". Эти свойства также следуют процедуре конфигурации, определённой в разделе Конфигурация.

Обратитесь к таблице Свойства, специфичные для реализации, чтобы получить список свойств, поддерживаемых реализацией JDK.

Поддержка процессора

Свойства могут поддерживаться одним или несколькими процессорами, как указано в таблице ниже. В зависимости от типа свойства, они могут быть установлены с помощью метода 1: setAttribute/Parameter/Property или 2: setFeature, как показано в соответствующих столбцах.
Процессоры
ID Имя Метод 1: setAttribute/Parameter/Property Метод 2: setFeature
DOM Парсер DOM DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setAttribute(name, value);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setFeature(name, value);
SAX Парсер SAX SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser parser = spf.newSAXParser();
parser.setProperty(name, value);
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setFeature(name, value);
StAX Парсер StAX XMLInputFactory xif = XMLInputFactory.newInstance();
xif.setProperty(name, value);
XMLInputFactory xif = XMLInputFactory.newInstance();
xif.setProperty(name, value);
Validation API валидации XML SchemaFactory schemaFactory = SchemaFactory.newInstance(schemaLanguage);
schemaFactory.setProperty(name, value);
SchemaFactory schemaFactory = SchemaFactory.newInstance(schemaLanguage);
schemaFactory.setFeature(name, value);
Transform API преобразования XML TransformerFactory factory = TransformerFactory.newInstance();
factory.setAttribute(name, value);
TransformerFactory factory = TransformerFactory.newInstance();
factory.setFeature(name, value);
XSLTC Serializer XSLTC Serializer Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(name, value);
DOMLS Загрузка и сохранение DOM LSSerializer serializer = domImplementation.createLSSerializer();
serializer.getDomConfig().setParameter(name, value);
XPath XPath XPathFactory factory = XPathFactory.newInstance();
factory.setProperty(name, value);
XPathFactory factory = XPathFactory.newInstance();
factory.setFeature(name, value);
Реализация специфичных свойств
Полное имя (префикс jdk.xml.) [1] Описание Свойство системы [2] Значение [3] Безопасность [4] Поддерживаемый процессор [5] С момента [6]
Тип Значение По умолчанию Принудительно ИД Метод установки
jdk.xml.entityExpansionLimit Ограничивает количество расширений сущностей. да Целое число Положительное целое число. Значение, меньшее или равное 0, указывает на отсутствие ограничения. Если значение не является целым числом, выбрасывается исключение NumberFormatException. 64000 64000 Да DOM
SAX
StAX
Проверка
Преобразование
Метод 1 8
jdk.xml.elementAttributeLimit Ограничивает количество атрибутов, которые может иметь элемент. 10000 10000
jdk.xml.maxOccurLimit Ограничивает количество узлов модели содержимого, которые могут быть созданы при построении грамматики для W3C XML Schema, содержащей атрибуты maxOccurs со значениями, отличными от "unbounded". 5000 5000
jdk.xml.totalEntitySizeLimit Ограничивает общий размер всех сущностей, включая общие и параметрические сущности. Размер рассчитывается как сумма всех сущностей. 5x10^7 5x10^7
jdk.xml.maxGeneralEntitySizeLimit Ограничивает максимальный размер любых общих сущностей. 0 0
jdk.xml.maxParameterEntitySizeLimit Ограничивает максимальный размер любых параметрических сущностей, включая результат вложенности нескольких параметрических сущностей. 10^6 10^6
jdk.xml.entityReplacementLimit Ограничивает общее количество узлов во всех ссылках на сущности. 3x10^6 3x10^6
jdk.xml.maxElementDepth Ограничивает максимальную глубину элемента. 0 0
jdk.xml.maxXMLNameLimit Ограничивает максимальный размер XML-имён, включая имя элемента, имя атрибута и префикс и URI пространства имён. 1000 1000
jdk.xml.isStandalone Указывает, что сериализатор должен обрабатывать выходные данные как автономный документ. Свойство можно использовать для обеспечения записи новой строки после объявления XML. В отличие от свойства xml-declaration, это свойство не влияет на то, должно ли быть записано объявление XML. булево true/false false N/A Нет DOMLS 17
jdk.xml.xsltcIsStandalone Указывает, что сериализатор XSLTC должен обрабатывать выходные данные как автономный документ. Свойство можно использовать для обеспечения записи новой строки после объявления XML. В отличие от свойства OMIT_XML_DECLARATION, это свойство не влияет на то, должно ли быть записано объявление XML.

Это свойство ведет себя аналогично свойству для DOMLS выше, за исключением того, что оно предназначено для сериализатора XSLTC, а его значение — строка.

строка да/нет нет N/A Нет Сериализатор XSLTC 17
jdk.xml.cdataChunkSize Инструктирует парсер возвращать данные в разделе CData в одном блоке, если свойство равно нулю или не указано, или в нескольких блоках, если оно больше нуля. Парсер разделяет данные по разрывам строк, а любые блоки, которые больше указанного размера, делит на блоки, равные или меньшие размера. да Целое число Положительное целое число. Значение, меньшее или равное 0, указывает на то, что свойство не указано. Если значение не является целым числом, выбрасывается исключение NumberFormatException. 0 N/A Нет SAX
StAX
9
jdk.xml.extensionClassLoader Устанавливает экземпляр ClassLoader, отличный от null, который будет использоваться для загрузки расширений XSLTC java-функций. нет Объект Ссылка на объект ClassLoader. Null, если значение не указано. null N/A Нет Преобразование 9
jdk.xml.xpathExprGrpLimit Ограничивает количество групп, которые может содержать выражение XPath. да Целое число Положительное целое число. Значение, меньшее или равное 0, указывает на отсутствие ограничения. Если значение не является целым числом, выбрасывается исключение NumberFormatException. 10 10 Да Преобразование
XPath
19
jdk.xml.xpathExprOpLimit Ограничивает количество операторов, которые может содержать выражение XPath. 100 100
jdk.xml.xpathTotalOpLimit Ограничивает общее количество операторов XPath в стиле XSL. 10000 10000 Преобразование
jdk.xml.enableExtensionFunctions Определяет, разрешены ли расширения функций XSLT и XPath. да Булево true или false. True указывает, что расширения функций разрешены; False — в противном случае. true false Да Преобразование
XPath
Метод 2 8
jdk.xml.overrideDefaultParser Включает использование реализации парсера третьей стороны для переопределения системного парсера по умолчанию для реализаций JDK для преобразования, проверки и XPath. true или false. True включает использование реализаций парсеров третьих сторон для переопределения системной реализации во время операций XML-преобразования, проверки или XPath. False отключает использование реализаций парсеров третьих сторон. false false Да Преобразование
Проверка
XPath
Метод 2 9
jdk.xml.resetSymbolTable Инструктирует парсер сбросить свою внутреннюю таблицу символов во время каждой операции парсинга. true или false. True указывает, что таблица символов, связанная с парсером, должна быть перераспределена во время каждой операции парсинга.
False указывает, что экземпляр таблицы символов парсера будет повторно использоваться в последующих операциях парсинга.
false N/A Нет SAX Метод 2 9

[1] Для установки свойства следует использовать полное имя свойства.

[2] Значение "да" указывает на наличие соответствующего системного свойства для свойства, "нет" — в противном случае. Имя системного свойства такое же, как и имя свойства.

[3] Значение должно быть точно таким, как указано в этой таблице, регистрозависимым. Значение соответствующего системного свойства — строковое представление значения свойства. Если тип boolean, системное свойство равно true только если оно "true"; если тип String, системное свойство равно true только если это точно такая же строка, представляющая положительное значение (например, "да" для xsltcIsStandalone); в противном случае системное свойство равно false. Если тип Integer, значение системного свойства — строковое представление значения (например, "64000" для entityExpansionLimit).

[4] Значение "да" указывает, что свойство является свойством безопасности. Как указано в порядке приоритета свойств, значения, указанные в столбце enforced, будут использованы для инициализации этих свойств, когда FSP равно true.

[5] Один или несколько процессоров, которые поддерживают свойство. ИД и метод установки показаны в таблице Процессоры.

[6] Указывает исходную версию, в которой было добавлено свойство.

Названия устаревших свойств (устарели)

Выпуски JDK до JDK 17 поддерживают использование префикса URI для свойств. Эти устаревшие имена свойств устарели начиная с JDK 17 и могут быть удалены в будущих выпусках. Если установлены и новые, и устаревшие свойства, новые имена свойств имеют приоритет независимо от того, как и где они установлены. Порядок переопределения, как определено в Порядок приоритета свойств, таким образом, становится:
  • Значение, установленное в фабриках или обработчиках, использующих новые имена свойств.
  • Значение, установленное в фабриках или обработчиках, использующих устаревшие имена свойств;
  • Значение, установленное как системное свойство;
  • Значение, установленное в файле конфигурации;
  • Значение, установленное с помощью FEATURE_SECURE_PROCESSING;
  • Значение по умолчанию;

В следующей таблице перечислены свойства и соответствующие устаревшие имена.

Устаревшие имена свойств (устарели начиная с 17)
Свойство Устаревшее имя свойства(я)
jdk.xml.entityExpansionLimit http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit
jdk.xml.elementAttributeLimit http://www.oracle.com/xml/jaxp/properties/elementAttributeLimit
jdk.xml.maxOccurLimit http://www.oracle.com/xml/jaxp/properties/maxOccurLimit
jdk.xml.totalEntitySizeLimit http://www.oracle.com/xml/jaxp/properties/totalEntitySizeLimit
jdk.xml.maxGeneralEntitySizeLimit http://www.oracle.com/xml/jaxp/properties/maxGeneralEntitySizeLimit
jdk.xml.maxParameterEntitySizeLimit http://www.oracle.com/xml/jaxp/properties/maxParameterEntitySizeLimit
jdk.xml.entityReplacementLimit http://www.oracle.com/xml/jaxp/properties/entityReplacementLimit
jdk.xml.maxElementDepth http://www.oracle.com/xml/jaxp/properties/maxElementDepth
jdk.xml.maxXMLNameLimit http://www.oracle.com/xml/jaxp/properties/maxXMLNameLimit
jdk.xml.isStandalone http://www.oracle.com/xml/jaxp/properties/isStandalone
jdk.xml.xsltcIsStandalone http://www.oracle.com/xml/is-standalone
http://www.oracle.com/xml/jaxp/properties/xsltcIsStandalone
jdk.xml.extensionClassLoader jdk.xml.transform.extensionClassLoader
jdk.xml.enableExtensionFunctions http://www.oracle.com/xml/jaxp/properties/enableExtensionFunctions
Граф модулей:
Module graph for java.xmlModule graph for java.xml
С момента:
9

Пакеты

Пакет Описание
javax.xml
Определяет константы для обработки XML.
javax.xml.catalog
Предоставляет классы для реализации Стандарта XML-каталогов OASIS V1.1, 7 октября 2005 года.
javax.xml.datatype
Определяет сопоставления типов XML/Java.
javax.xml.namespace
Определяет обработку XML-пространств имен.
javax.xml.parsers
Предоставляет классы для обработки XML-документов с помощью парсера SAX (простой API для XML) или создателя документа DOM (Document Object Model).
javax.xml.stream
Определяет интерфейсы и классы для потокового API для XML (StAX).
javax.xml.stream.events
Определяет интерфейсы событий для потокового API для XML (StAX).
javax.xml.stream.util
Предоставляет вспомогательные классы для потокового API для XML (StAX).
javax.xml.transform
Определяет универсальные API для обработки инструкций преобразования и выполнения преобразования из источника в результат.
javax.xml.transform.dom
Предоставляет классы преобразования, специфичные для DOM.
javax.xml.transform.sax
Предоставляет классы преобразования, специфичные для SAX.
javax.xml.transform.stax
Предоставляет классы преобразования, специфичные для StAX.
javax.xml.transform.stream
Предоставляет классы преобразования, специфичные для потоков и URI.
javax.xml.validation
Предоставляет API для проверки XML-документов.
javax.xml.xpath
Предоставляет нейтральный по отношению к объектной модели API для оценки XPath-выражений и доступа к среде оценки.
org.w3c.dom
Предоставляет интерфейсы для объектной модели документа (DOM).
org.w3c.dom.bootstrap
Предоставляет фабрику для получения экземпляров DOMImplementation.
org.w3c.dom.events
Предоставляет интерфейсы для событий DOM уровня 2.
org.w3c.dom.ls
Предоставляет интерфейсы для загрузки и сохранения DOM уровня 3.
org.w3c.dom.ranges
Предоставляет интерфейсы для диапазона DOM уровня 2.
org.w3c.dom.traversal
Предоставляет интерфейсы для перемещения DOM уровня 2.
org.w3c.dom.views
Предоставляет интерфейсы для представлений DOM уровня 2.
org.xml.sax
Предоставляет интерфейсы для простого API для XML (SAX).
org.xml.sax.ext
Предоставляет интерфейсы для возможностей SAX2, которые совместимые драйверы SAX не обязательно будут поддерживать.
org.xml.sax.helpers
Предоставляет вспомогательные классы, включая поддержку запуска приложений на основе SAX.

Услуги

Тип Описание
DatatypeFactory
Фабрика, которая создает новые javax.xml.datatype Object для сопоставления XML с/из Java Object.
DocumentBuilderFactory
Определяет API фабрики, который позволяет приложениям получать парсер, который создаёт деревья объектов DOM из XML-документов.
SAXParserFactory
Определяет API фабрики, который позволяет приложениям настроить и получить парсер на основе SAX для разбора XML-документов.
SchemaFactory
Фабрика, которая создаёт объекты Schema.
TransformerFactory
Экземпляр TransformerFactory может использоваться для создания Transformer и Templates объектов.
XMLEventFactory
Этот интерфейс определяет утилитарный класс для создания экземпляров XMLEvents
XMLInputFactory
Определяет абстрактную реализацию фабрики для получения потоков.
XMLOutputFactory
Определяет абстрактную реализацию фабрики для получения XMLEventWriters и XMLStreamWriter.
XMLReader
Интерфейс для чтения XML-документа с помощью обратных вызовов.
XPathFactory
Экземпляр XPathFactory может использоваться для создания XPath объектов.

© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.xml/module-summary.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API