JAR (формат файла)

редактировать
Формат файла архива Java
Архив Java
Значок файла KDE JAR
Расширение имени файла .jar
Тип интернет-носителя application / java-archive
Uniform Type Identifier (UTI) com.sun.java-archive
Magic number 50 4b 03 04ASCII: PK \ x03 \ x04
РазработаноNetscape, Sun Microsystems, Oracle Corporation
Тип форматаФайловый архив, сжатие данных
Расширенный изZIP

A JAR (Java AR chive) - это пакет формат файла, обычно используемый для объединения многих файлов классов Java и связанных метаданных и ресурсов (текст, изображения и т. Д.) В один файл для распространения.

JAR-файлы - это архивные файлы, которые включают специфичный для Java файл манифеста. Они основаны на формате ZIP и обычно имеют расширение файла .jar.

Содержание
  • 1 Дизайн
  • 2 Извлечение
  • 3 Безопасность
  • 4 Исполняемые файлы JAR
  • 5 Манифест
    • 5.1 Спецификации
      • 5.1.1 Специальные заголовки манифеста
      • 5.1.2 Приложения
      • 5.1.3 Запечатывание пакета
    • 5.2 Управление версиями пакета
    • 5.3 Зависимости
  • 6 Поддержка Apache Ant Zip / JAR
  • 7 Связанные форматы
  • 8 См. Также
  • 9 Ссылки
  • 10 Внешние ссылки
Дизайн

Файл JAR позволяет Среда выполнения Java для эффективного развертывания всего приложения, включая его классы и связанные с ними ресурсы, в одном запросе. Элементы файла JAR могут быть сжаты, что сокращает время загрузки.

Файл JAR может содержать файл манифеста, который находится в META-INF / MANIFEST.MF. Записи в файле манифеста описывают, как использовать файл JAR. Например, запись Classpath может использоваться для указания других файлов JAR для загрузки вместе с JAR.

Извлечение

Содержимое файла JAR может быть извлечено с помощью любого стандартного программного обеспечения для распаковки или утилиты командной строки jar: "jar -xf foo. банка".

Безопасность

Разработчики могут подписывать файлы JAR цифровой подписью. В этом случае информация о подписи становится частью встроенного файла манифеста. Сам JAR не подписан, но вместо этого перечислены все файлы внутри архива вместе с его контрольной суммой; именно эти контрольные суммы подписаны. Несколько объектов могут подписывать файл JAR, изменяя сам файл JAR с каждой подписью, хотя сами подписанные файлы остаются действительными. Когда среда выполнения Java загружает подписанные файлы JAR, она может проверять подписи и отказываться загружать классы, не соответствующие подписи. Он также может поддерживать «запечатанные» пакеты, в которых Classloader разрешает загружать классы Java в один и тот же пакет только в том случае, если все они подписаны одними и теми же объектами. Это предотвращает вставку вредоносного кода в существующий пакет и, таким образом, получение доступа к классам и данным на уровне пакета.

Содержимое файлов JAR может быть затемнено, чтобы затруднить обратное проектирование.

Исполняемые файлы JAR

Исполняемая программа Java может быть упакована в файл JAR вместе с любыми библиотеками, которые использует программа. Исполняемые файлы JAR имеют манифест, определяющий точку входа класс с Main-Class: myPrograms.MyClassи явный путь к классу (и аргумент -cp игнорируется). Некоторые операционные системы могут запускать их напрямую при нажатии. Типичный вызов - java -jar foo.jarиз командной строки.

Нативные программы запуска могут быть созданы на большинстве платформ. Например, пользователи Microsoft Windows, которые предпочитают файлы Windows EXE, могут использовать такие инструменты, как JSmooth, Launch4J, WinRun4J или Nullsoft Scriptable Install System, чтобы обернуть отдельные файлы JAR в исполняемые файлы.

Манифест

Файл манифеста - это файл метаданных, содержащийся в JAR. Он определяет данные, относящиеся к расширению и пакету. Он содержит пары имя-значение, организованные по разделам. Если файл JAR предназначен для использования в качестве исполняемого файла, в файле манифеста указывается основной класс приложения. Файл манифеста называется MANIFEST.MF. Каталог манифеста должен быть первой записью сжатого архива.

Технические характеристики

Манифест отображается в каноническом месте META-INF / MANIFEST.MF. В архиве может быть только один файл манифеста, и он должен находиться в этом месте.

Содержимое файла манифеста в файле JAR, созданном с помощью версии 1.0 пакета Java Development Kit, следующее.

Версия манифеста: 1.0

Имя отделяется от значения двоеточием. Манифест по умолчанию показывает, что он соответствует версии 1.0 спецификации манифеста.

Манифест может содержать информацию о других файлах, упакованных в архив. Содержимое манифеста зависит от предполагаемого использования файла JAR. Файл манифеста по умолчанию не делает никаких предположений о том, какую информацию он должен записывать о других файлах, поэтому его единственная строка содержит данные только о себе. Он должен быть в кодировке UTF-8.

Заголовки манифеста специального назначения

Файлы JAR, созданные только для целей архивирования, не используют файл MANIFEST.MF.

В большинстве случаев использование файлов JAR выходит за рамки простого архивирования и сжатия и требует специальной информации в файле манифеста.

Приложения

Если приложение содержится в файле JAR, виртуальной машине Java необходимо знать точку входа приложения. Точкой входа является любой класс с методом public static void main (String args). Эта информация предоставляется в заголовке Main-Class, который имеет общую форму:

Main-Class: com.example.MyClassName

В этом примере com.example.MyClassName. main ()выполняется при запуске приложения.

Запечатывание пакета

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

Чтобы запечатать пакет, должна появиться запись Name, за которой следует заголовок Sealed, например:

Name: myCompany / myPackage / Sealed: true

Значение заголовка Name является относительным для пакета путь. Обратите внимание, что он заканчивается знаком «/», чтобы отличить его от имени файла. Любые заголовки, следующие за заголовком Name, без промежуточных пустых строк, применяются к файлу или пакету, указанному в заголовке Name. В приведенном выше примере, поскольку заголовок Sealedпоявляется после заголовка Name: myCompany / myPackageбез промежуточных пустых строк, заголовок Sealedприменяется (только) к пакет myCompany / myPackage.

Контроль версий пакета

Несколько заголовков манифеста содержат информацию о версиях. Каждому пакету может быть назначен один набор заголовков. Заголовки управления версиями отображаются непосредственно под заголовком "Имя" пакета. В этом примере показаны все заголовки управления версиями:

Имя: java / util / Specification-Title: «Java Utility Classes» Версия спецификации: «1.2» Производитель спецификации: «Sun Microsystems, Inc.». Название реализации: "java.util" Версия реализации: "build57" Поставщик реализации: "Sun Microsystems, Inc."

Зависимости

Файл MANIFEST.MFможно использовать для указания всех классов, которые должны быть загружены, чтобы приложение могло работать.

Обратите внимание, что Записи Class-Path разделяются пробелами, а не системным разделителем пути:

Class-Path:. pkg1.jar путь / к / pkg2.jar
Поддержка Apache Ant Zip / JAR

Инструмент сборки Apache Ant имеет собственный пакет для чтения и записи архивов Zip и JAR, включая поддержка расширений Unix файловой системы. Пакет org.apache.tools.zip выпущен под лицензией Apache Software Foundation и предназначен для использования вне Ant.

Связанные форматы

Несколько связанных форматов файлов основаны на формате JAR: файлы

  • WAR (архив веб-приложений), а также архивы Java, хранят XML файлы, классы Java, JavaServer Pages и другие объекты для веб-приложений.
  • Файлы RAR (архив адаптера ресурсов) (не путать с форматом файла RAR ), а также архивы Java, хранят файлы XML, классы Java и другие объекты для приложений J2EE Connector Architecture (JCA). Файлы
  • EAR (корпоративный архив) предоставляют составные архивы Java, которые объединяют файлы XML, Классы Java и другие объекты, включая архивные файлы Java JAR, WAR и RAR для корпоративных приложений.
  • (служебный архив) аналогичен EAR. Он предоставляет файл service.xmlи сопутствующие файлы JAR.
  • APK (пакет приложений Android), вариант формата архива Java, используется для приложений Android.
  • (архив Android) используется для распространения библиотек Android, обычно через Maven.
  • PAR (архив планов) - поддерживается Eclipse Virgo OSGi сервер приложений, позволяет развертывать многосвязные приложения OSGi в виде единого архива и обеспечивает изоляцию от других приложений на основе PAR, развернутых на том же сервере.
  • KAR (архив Карафа) - поддерживается Apache Karaf сервером приложений OSGi, позволяет развертывать многосвязные, многофункциональные приложения OSGi.
См. также
  • значок Портал компьютерного программирования
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-24 09:57:50
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте