
Создание и использование архивов Java
Зачем нужны JAR-архивы?
Использование JAR-архивов предоставляет разработчикам аплетов (а также и автономных приложений) ряд преимуществ.
Повышение эффективности загрузки. Вместо нескольких файлов отдельных классов загружается единственный файл JAR-архива.
Улучшенное хранилище файлов, так как файлы классов хранятся в одном сжатом файле архива.
Повышение защищённости. В JAR-файл можно поместить цифровую подпись, дающею конечному пользователю гарантии, что файл архива не изменился с момента её внесения. Если конечный пользователь доверяет вашей фирме, он может предоставить подписанным вами аплетам право доступа к его жестким дискам или другим важным ресурсам системы.
Независимость от платформы. Построение JAR-архивов базируется на использовании популярной программы PKZIP сжатия файлов. Однако JAR-файлы могут создаваться и сохраняться на любой компьютерной платформе.
Расширяемость. В спецификацию JAR-файлов внесены некоторые дополнения, обеспечивающие возможность дальнейших расширений.
Одно только повышение эффективности загрузки даёт какое преимущество! Если вы знакомы с работой протокола HTTP, то должны понимать насколько неэффективно, с его помощью, выполнять передачу нескольких небольших файлов. В каждом случае потребуется установить новое соединение TCP/IP, которое после передачи данного файла будет разорвано. Установка каждого соединения связана с дополнительной нагрузкой на сервер и сеть. При использовании коммутируемых линий связи среднее время установки TCP/IP-соединения может составлять около 0,5 c. Если для работы аплета необходимо 16 файлов, общее время затрачиваемое только на установку соединений - 8 с.
Создание jar-архива
Для создания и модификации JAR-архивов можно использовать любую поддерживающую формат PKZIP программу. JAR-файл отличается от zip-файла наличием дополнительного текстового файла, называемого файлом описания (manifest file). Этот файл содержит сведения обо всех помещённых в данный архив файлах. В состав файла описания должны входить определённые элементы, в частности он должен включать следующие.
Номер версии стандарта JAR. В соответствии, с которым построен данный архив. Этот номер задаётся параметром Manifest-Version и является обязательным. В SDK 1.2 значение этого параметра должно быть равно 1.0
Минимальный номер версии утилиты JAR, которая сможет прочитать этот архив. Этот параметр необязателен и имеет название Required-Version.
Отдельная запись для любого, помещённого в архив файла. Необязательно перечислять все помещённые в архив файлы, достаточно указать только файлы главных классов.
Фирма Sun предоставила, для создания JAR архивов, специализированный инструмент для всех поддерживаемых платформ. Рассмотрим создание JAR-архива с помощью этой утилиты под названием jar.
Предположим, что у нас имеется каталог, содержащий несколько файлов типа .class и подкаталог с именем images содержащий несколько файлов типа .gif. Пусть имя создаваемого архива будет archive.jar
Общий формат команды вызова утилиты jar: jar параметры имена_файлов
Параметр имена_файлов представляет собой список имён файлов, первым в котором всегда указывается имя самого архивного файла. Назначение остальных имён файлов зависит от ключей:
c
- создать новый архив.
m
- использовать внешний файл описания, имя которого указано вторым в списке имена_файлов.
M
- не создавать файл описания.
t
- вывести содержание указанного архивного.
x
- извлечь файлы, указанные в списке имена_файлов. Если имена не указаны, то извлечь все файлы.
f
- указывает, что имя архивного файла помещено первым в списке имена_файлов.
v
- указывает, что утилита должна сопровождать сообщениями выполнение всех действий, заданных другими параметрами.
0
- сохранение файлов в архиве выполняется без их сжатия.
u
- указывает, что нужно обновить указанные файлы. Или в случае команды jar umf manifest имя_архива указывает что нужно обновить информацию в файле описания.
-i
- указывает, что необходимо сгенерировать файл INDEX.LIST содержащий информацию о всех файлах архива.
И так для создания нового архива введите: jar cf archive.jar .class images/.gif
Помещение в jar-архив цифровой подписи
Для того чтобы разобраться, как цифровая подпись помещается в JAR-архив, необходимо предварительно усвоить определённые базовые понятия из области криптографии - шифрование с помощью открытого ключа.
Для внесения цифровой подписи в JAR-архив необходимо иметь два инструмента.
Утилита keytool. Используется для генерации пары открытого и закрытого ключа и сертификата.
Утилита jarsigner. Используется для непосредственного помещения цифровой подписи в JAR-архивы с применением имеющегося сертификата.
Что нам понадобится:
Выполнить генерацию пары ключей.
Получить сертификат на эту пару.
Использовать сертификат для помещения цифровой подписи в JAR-архив.