Spec-Zone .ru
спецификации, руководства, описания, API
|
Дополнительные пакеты являются пакетами классов Java и связали собственный код, который разработчики приложений могут использовать, чтобы расширить функциональность базовой платформы. Механизм расширения позволяет виртуальной машине Java (VM) использовать классы дополнительного пакета почти таким же способом как классы начальной загрузки использования VM. (Классы начальной загрузки - те, которые реализуют базовую платформу, содержавшуюся в jre/lib/rt.jar и нескольких других важных файлах фляги. Они включают классы общедоступного API, такие как java.lang, java.io, и т.д., и классы, поддерживающие функции интернационализации/локализации платформы.). Как классы начальной загрузки, классы в дополнительных пакетах не должны быть помещены в путь к классу. Механизм расширения также обеспечивает путь к необходимым дополнительным пакетам, которые будут получены от указанных URL, когда они уже не устанавливаются в Java 2 Среды выполнения или JDK.
Дополнительные пакеты воплощаются в файлах JAR, и каждый файл JAR является потенциальным дополнительным пакетом. Файл JAR может быть сделан играть роль дополнительного пакета двумя способами:
Когда VM будет искать класс определенного имени, это будет сначала смотреть среди классов начальной загрузки. Если это будет не в состоянии найти требуемый класс там, то это будет затем искать класс среди любых установленных дополнительных пакетов. Если это не найдет класс или среди классов начальной загрузки или среди установленных дополнительных пакетов, то VM будет искать среди любой загрузки дополнительные пакеты, на которые ссылается приложение или апплет. VM только ищет путь к классу, если это не в состоянии найти класс среди классов начальной загрузки или дополнительных классов пакета.
Установленные дополнительные пакеты являются файлами JAR в следующих каталогах:
lib/ext
(в JRE)jre/lib/ext
(в JDK)Классы в пределах файлов JAR в этом каталоге могут использоваться апплетами и приложениями очень, как будто они были частью набора классов начальной загрузки, не имея необходимость явно включать их в путь к классу.
Собственные двоичные файлы кода установленного дополнительного пакета, если таковые вообще имеются, помещаются в
jre\bin
(Microsoft Windows)jre/lib/<arch>
(Операционная среда Соляриса)где <arch>
архитектура процессора Соляриса, также sparc
или i386
. Собственные библиотеки могут также быть размещены в jre/lib/ext/<arch> и для Microsoft Windows и для операционной среды Соляриса, где <arch> будет i386 на системах Microsoft Windows. Каталог jre/lib/ext/<arch> ищется после jre\bin или jre/lib/<arch>.
Когда Java, VM встречается с именем класса, он сначала ищет класс в среде выполнения. Если это будет не в состоянии найти требуемый класс среди классов, которые являются частью стандартной среды выполнения, то VM будет искать класс в любых файлах JAR в дополнительном каталоге пакетов.
Отметьте, что нет ничего специального ни о каком определенном файле JAR непосредственно или классах, которые это содержит, который делает это установленным дополнительным пакетом. Это - установленный дополнительный пакет на основании своего расположения в jre/lib/ext
.
Декларация файла JAR установленного дополнительного пакета должна содержать версию и информацию о поставщике для использования апплетами, которые должны использовать дополнительные классы пакетов. Атрибуты, которые определяют версию и информацию о поставщике, описываются в Дополнительном Управлении версиями Пакета. Вот пример того, на что могла бы быть похожей такая декларация:
Manifest-version: 1.0 Extension-Name: javax.extension Specification-Version: 1.0 Specification Vendor: Sun Microsystems, Inc. Implementation-Vendor: Sun Microsystems, Inc. Implementation-Vendor-Id: com.sun Sealed: true
Эта версия и информация о поставщике могут использоваться Плагином Java, выполняя апплет, чтобы видеть, устанавливаются ли дополнительные пакеты, необходимые апплету, современны, и от поставщика, которого требует апплет. В противном случае Плагин Java может запросить пользователя апплета загружать надлежащий дополнительный пакет. См. Дополнительное Управление версиями Пакета для получения дополнительной информации.
Если класс не будет сочтен после поиска и системными классами и классами в установленных дополнительных пакетах, то механизм расширения будет искать класс в загрузке дополнительный пакет....
Дополнительный пакет загрузки является JAR файлы, который определяется в поле заголовка Class-Path в декларации другого JAR файлы. Классы в загрузке дополнительные пакеты могут использоваться классами в файле JAR ссылки. В типичной ситуации апплет будет связан в файле JAR, чьи явные ссылки файл JAR (или несколько файлов JAR), который будет служить дополнительным пакетом в целях того апплета. Дополнительные пакеты могут сослаться на друг друга таким же образом.
Заголовок Class-Path мог бы быть похожим на это, например:
Class-Path: servlet.jar infobus.jar acme/beans.jar
Это определяет что классы в файлах servlet.jar
, infobus.jar
, и acme/beans.jar
будет служить дополнительным pakcages в целях классов в файле JAR, декларация которого содержит этот заголовок. URL в поле Class-Path даются относительно URL файла JAR апплета или приложения.
В отличие от случая установленных дополнительных пакетов, расположение файлов JAR, которые служат загрузкой дополнительные пакеты, является irrelevent. Дополнительный пакет загрузки является дополнительным пакетом, потому что он определяется как значение заголовка Class-Path в другой декларации файла JAR, не потому что у него есть любое определенное расположение.
Другое различие между установленным и загружает дополнительные пакеты, то, что только апплеты и приложения, связанные в файле JAR, могут использовать загрузку дополнительные пакеты. У апплетов и приложений, не связанных в файле JAR, нет декларации, с которой можно сослаться на загрузку дополнительные пакеты.
Ища класс, VM сначала ищет среди классов в системных классах и в любых установленных дополнительных пакетах. Если класс не будет найден или в системных классах или в установленных дополнительных пакетах, то VM будет искать класс в любой загрузке дополнительные пакеты, на которые ссылается декларация приложения или апплета. Дополнительный пакет загрузки не будет загружен, если требуемый класс будет найден среди установленных дополнительных пакетов, даже если на загрузку дополнительный пакет ссылается файл манифеста апплета или приложения.
Механизм расширения не будет устанавливать загрузку дополнительный пакет в структуре каталогов JDK или JRE. Дополнительные пакеты загрузки не становятся установленными расширениями после того, как они были когда-то загружены.
В отличие от установленных дополнительных пакетов, у дополнительных пакетов загрузки не может быть никакого собственного кода.