Технологии Java
Jar
https://kgeorgiy.info/courses/java-advanced/
Copyright © Georgiy Korneev
Jar-файлы
Содержание
Jar-файлы
Манифесты
Заключение
Что такое Jar
Архивы Java-приложений
Инструмент для создания jar-файлов
Структура Jar-файла
.jar
– это
.zip
Можно создать вручную
Направление
/
фиксировано
/META-INF/
– дополнительная информация
Инструмент jar
Создание
jar cf <jar-файл> <файлы-для-упаковки>
Обновление
jar uf <jar-файл> <файлы-для-обновления>
Распаковка
jar xf <jar-файл> <файлы-для-распаковки>?
Запуск
Требуется манифест
java -jar <jar-файл>
API для работы с Zip-файлами (1)
ZipOutputStream
– запись
putNextEntry(zipEntry)
– следующий заголовок
write(...)
– запись данных
ZipInputStream
– чтение
getNextEntry()
– следующий заголовок
read(...)
– чтение данных
API для работы с Zip-файлами (2)
ZipEntry
– заголовок файла/каталога
ZipEntry(fileName)
– создание
name
– имя
directory
– тип
size
/
compressedSize
– размеры
method
– метод упаковки
STORED
– без сжатия
DEFLATED
– c сжатием
crc
– проверочная сумма
Директории
Обычно не хранятся
Если хранить явно
method
:
STORED
size
: 0
crc
: 0
Дополнительные возможности
Сжимающие потоки
GZIPOutputStream
– сжимающий поток
GZIPInputStream
– разжимающий поток
Работа с манифестами
JarOutputStream
– запись
JarOutputStream(os, manifest)
– указание манифеста
JarInputStream
Manifest
getManifest()
– получение манифеста
Загрузка ресурсов
По абсолютному пути
Разделитель
/
URL
getResource(name)
– получить адрес
getResourceAsStream(name)
– прочитать
По относительному пути
URL
getResource(name)
– получить адрес
getResourceAsStream(name)
– прочитать
Манифесты
Содержание
Jar-файлы
Манифесты
Заключение
Манифест
Текстовый файл
/META-INF/MANIFEST.MF
Формат
секция секция имя-атрибута:␣значение ␣продолжение-значения
Основные атрибуты
Manifest-Version
Версия (1.0)
Created-By
Инструмент, создавший файл
Class-Path
Относительные пути к зависимостям
Main-Class
Что запускать
Подписанные jar-файлы
Инструмент
jarsigner
Хэши файлов в манифесте
Подпись манифеста
Заключение
Содержание
Jar-файлы
Манифесты
Заключение
Ссылки
JAR File Specification //
https://docs.oracle.com/en/java/javase/23/
docs/specs/jar/jar.html
Guides:
Jar - the Archive Tool //
https://dev.java/learn/jvm/tools/core/jar/
Jarsigner - Signing Your JARs //
https://dev.java/learn/jvm/tool/security/jarsigner/
Tutorial: Packaging Programs in JAR Files //
http://docs.oracle.com/javase/tutorial/
deployment/jar/
Вопросы
???