Jump to content

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

(Перенаправлено из файла Jar )
Java-архив
Значок JAR-файла KDE
KDE Значок JAR-файла
Расширение имени файла
.jar
Тип интернет-СМИ
приложение/java-архив [ 1 ] [ 2 ] [ 3 ]
Единый идентификатор типа (UTI) com.sun.java-архив
Магическое число 50 4b 03 04 ASCII: ПК\x03\x04
Разработано Netscape , Sun Microsystems , Oracle Corporation
Тип формата Архив файлов , сжатие данных
Расширено с Почтовый индекс

Файл JAR («архив Java») — это пакета, формат файла который обычно используется для объединения множества файлов классов Java и связанных с ними метаданных и ресурсов (текста, изображений и т. д.) в один файл для распространения. [ 4 ]

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

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

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

Содержимое файла можно извлечь с помощью любого программного обеспечения для извлечения архивов, поддерживающего формат ZIP или jar Утилита командной строки, входящая в состав Java Development Kit.

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

[ редактировать ]

Разработчики могут цифровой подписью подписывать файлы JAR . В этом случае информация о подписи становится частью встроенного файла манифеста. Сам JAR-файл не подписан, вместо этого каждый файл внутри архива указан вместе с его контрольной суммой; именно эти контрольные суммы подписываются. Несколько объектов могут подписывать файл JAR, изменяя сам файл JAR при каждом подписании, хотя сами подписанные файлы остаются действительными. Когда среда выполнения Java загружает подписанные файлы JAR, она может проверять подписи и отказываться загружать классы, которые не соответствуют подписи. Он также может поддерживать «запечатанные» пакеты, в которых загрузчик классов разрешает загрузку классов 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. [ 6 ] [ 7 ] Он определяет данные расширения и пакета. Он содержит пары имя-значение, организованные в разделы. Если файл JAR предназначен для использования в качестве исполняемого файла, файл манифеста указывает основной класс приложения. Файл манифеста называется MANIFEST.MF. Каталог манифеста должен быть первой записью сжатого архива.

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

[ редактировать ]

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

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

Manifest-Version: 1.0

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

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

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

[ редактировать ]

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

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

Манифест позволяет разработчикам определять несколько полезных функций для своих jar-файлов. Свойства указываются в парах ключ-значение.

Приложения

[ редактировать ]

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

Main-Class: com.example.MyClassName

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

Герметизация упаковки

[ редактировать ]

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

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

Name: myCompany/myPackage/
Sealed: true

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

Функция запечатанных пакетов устарела благодаря системе модулей платформы Java, представленной в Java 9, в которой модули не могут разделять пакеты. [ 9 ]

Управление версиями пакета

[ редактировать ]

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

Name: java/util/
Specification-Title: "Java Utility Classes"
Specification-Version: "1.2"
Specification-Vendor: "Sun Microsystems, Inc.".
Implementation-Title: "java.util"
Implementation-Version: "build57"
Implementation-Vendor: "Sun Microsystems, Inc."

Мультирелиз

[ редактировать ]

Банку можно дополнительно пометить как банку с несколькими выпусками. Использование функции нескольких выпусков позволяет разработчикам библиотек загружать различный код в зависимости от версии среды выполнения Java. [ 10 ] Это, в свою очередь, позволяет разработчикам использовать новые функции, не жертвуя совместимостью.

JAR с несколькими выпусками включается с помощью следующего объявления в манифесте:

Multi-Release: true

Зависимости

[ редактировать ]

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

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

Class-Path: . pkg1.jar path/to/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 и другие объекты для веб-приложений.
  • Файлы RAR (архив адаптера ресурсов) (не путать с форматом файла RAR ), а также архивы Java, хранят XML-файлы, классы Java и другие объекты для J2EE Connector Architecture (JCA). приложений
  • Файлы EAR (корпоративный архив) представляют собой составные архивы Java, которые объединяют файлы XML, классы Java и другие объекты, включая архивные файлы JAR, WAR и RAR Java для корпоративных приложений.
  • SAR (служебный архив) аналогичен EAR. Это обеспечивает service.xml файл и сопутствующие файлы JAR.
  • APK (пакет приложений Android), вариант формата архива Java, используется для Android . приложений [ 12 ]
  • AAR (архив Android) используется для распространения библиотек Android , обычно через Maven . [ 13 ]
  • PAR (плановый архив) — поддерживается сервером приложений Eclipse Virgo OSGi , позволяет развертывать несколько пакетов приложений OSGi в виде одного архива и обеспечивает изоляцию от других приложений на основе PAR, развернутых на том же сервере.
  • KAR (архив Karaf) – поддерживается сервером приложений Apache Karaf OSGi, позволяет развертывать многокомпонентные многофункциональные приложения OSGi.

См. также

[ редактировать ]
  1. ^ «Расширение файла .JAR. Подробности» . Проверено 29 ноября 2012 г.
  2. ^ «MIME: Глоссарий Java» . Проверено 29 ноября 2012 г.
  3. ^ «Назначение IANA» . Проверено 12 мая 2023 г.
  4. ^ «API и руководства для разработчиков, связанные с JDK 6 Java Archive (JAR)» .
  5. ^ «Спецификация файла JAR» . Документация Java SE . Оракул. Архивировано из оригинала 11 сентября 2017 г.
  6. ^ «Понимание манифеста» . Java.sun.com. 21 марта 2003 г. Проверено 31 июля 2012 г.
  7. ^ «Спецификация файла JAR» . Скачать.oracle.com . Проверено 31 июля 2012 г.
  8. ^ «Спецификация файла JAR» . Скачать.oracle.com . Проверено 31 июля 2012 г.
  9. ^ «JEP 261: Система модулей» . Проверено 6 февраля 2021 г.
  10. ^ «JEP 238: Файлы JAR с несколькими выпусками» . Проверено 6 февраля 2021 г.
  11. ^ спецификация сервлета Sun, стр. 72 (servlet-2_4-fr-spec.pdf). См. также Технические примечания по Java .
  12. ^ «Глоссарий» . Developer.android.com .
  13. ^ «Андроид-библиотека» . Developer.android.com .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1e0437c12039a8f6ce46d9a943a49289__1718293380
URL1:https://arc.ask3.ru/arc/aa/1e/89/1e0437c12039a8f6ce46d9a943a49289.html
Заголовок, (Title) документа по адресу, URL1:
JAR (file format) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)