|
Для упаковки нескольких
файлов в один архивный файл, со сжатием или без
сжатия, в технологии Java разработан формат JAR. Имя
архивного jar-файла может быть любым, но обычно оно
получает расширение jar. Способ упаковки и сжатия
основан на методе ZIP.
Отличие jar-файлов от zip-файлов только в том,
что в первые автоматически включается каталог
META-INF, содержащий несколько файлов с информацией
об упакованных в архив файлах.
Архивные файлы очень удобно использовать
в апплетах, поскольку весь архив загружается по
сети сразу же, одним запросом. Все файлы апплета с
байт-кодами, изображениями, звуковые файлы
упаковываются в один или несколько архивов. Для
их загрузки достаточно в теге <applet>
указать имена архивов в параметре archive,
например:<applet
code = "MillAnim.class" archive = "first.jar, second.jar" width =
"100%" height = "100%"></applet>
Основной файл MillAnim.class должен
находиться в каком-либо из архивных файлов first.jar
или second.jar. Остальные файлы отыскиваются
в архивных файлах, а если не найдены там, то на
сервере, в том же каталоге, что и HTML-файл. Впрочем,
файлы апплета можно упаковать и в zip-архив, со
сжатием или без сжатия.
Архивные файлы удобно использовать и в
приложениях. Все файлы приложения упаковываются
в архив, например, appl.jar. Приложение выполняется
прямо из архива, интерпретатор запускается с
параметром -jar, например:
Java -jar appl.jar
Имя основного
класса приложения, содержащего метод main(),
указывается в файле MANIFEST.MF, речь о котором пойдет
чуть ниже.
Архивные файлы удобны и просты для компактного
хранения всей необходимой для работы программы
информации. С файлами архива можно работать
прямо из архива, не распаковывая их, с помощью
классов пакета
java.util.jar.
Создание архива
Jar-архивы создаются с помощью классов
пакета java.util.jar или с помощью утилиты
командной строки jar.
Набрав в командной строке слово jar и
нажав клавишу <Enter>, вы получите краткое
пояснение.
В строке
jar {ctxu}[vfmOM] [jar-file]
[manifest-file] [-C dir] files...
зашифрованы правила применения утилиты.
Фигурные скобки показывают, что после слова jar
и пробела надо написать одну из букв с,
t, x или u. Эти буквы
означают следующие операции:
- c(create) - создать
новый архив
- t(table of contents) -
вывести в стандартный вывод список содержимого
прхива;
- x(extract) - извлечь
из архива один или несколько файлов;
- u(update) - обновить
архив, заменив или добавив один или несколько
файлом
После буквы, без
пробела, можно написать одну или несколько букв,
перечисленных в квадратных скобках. Они означают
следующее:
- v(verbose) - выводить
сообщения о процессе работы с архивом в
стандартный вывод;
- f(file) -
записанный далее параметр jar-file
показывает имя архивного файла;
- m(manifest) -
записанный далее параметр manifest-file
показывает имя файла описания;
- 0(нуль) - не
сжимать файлы, записывая их в архив;
- M(manifest) - не
создавать файл описания;
Параметр -i(index)
предписывает создать в архиве файл INDEX.LIST.
Он используется уже после формирования
архивного файла. После буквенных параметров-файлов
через пробел записывается имя архивного файла jar-fiie,
потом, через пробел, имя файла описания manifest-file,
затем перечисляются имена файлов, которые надо
занести в архив или извлечь из архива. Если это
имена каталогов, то операция выполняется
рекурсивно со всеми файлами каталога.
Перед первым именем каталога может стоять
параметр -с. Конструкции -с dir
означает, что на нремя выполнения утилиты jar
текущим каталогом станет каталог dir.
Необязательные параметры занесены в
квадратные скобки.
Итак, в конце командной строки должно быть
записано хотя бы одно имя файла или каталога.
Если среди параметров есть буква f, то
первый из этих файлов понимается как архивный jar-файл.
Если среди параметров находится буква m,
то первый файл понимается как файл описания (manifest-file).
Если среди параметров присутствуют обе буквы, то
имя архивного файла и имя файла описания должны
идти в том же порядке, что и букны f и m.
Если параметр f и имя архивного
файла отсутствуют, то архивным фНЙЛПМ будет
служить стандартный вывод.
Если параметр m и имя файла описания
отсутствуют, то по умалчанию файл MANIFEST.MF, лежащий
в каталоге META-INF архивного файла, будет
содержаться только номер версии. |