Технологии 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-файлы
Манифесты
Заключение
Ссылки
Java Archive (JAR) Files //
http://docs.oracle.com/javase/8/docs/technotes/
guides/jar/index.html
Tutorial: Packaging Programs in JAR Files //
http://docs.oracle.com/javase/tutorial/
deployment/jar/
Jar Tool //
http://docs.oracle.com/javase/8/docs/
technotes/tools/windows/jar.html
Вопросы
???