JAR( Java ARchive) -- зип-архив ява приложения. Внутри находятся директория-пакеты с откомпилированными классами и обязательно среди них класс со статическим методом мейн. Когда запаковывается приложение, в архиве рядом с дирекориями пакетов появляется еще одна META-INF. Эта директория содержит файл MANIFEST.MF, в нем указывается какой класс и из какого пакета содержит метод мейн(так запускает архив виртуальная машина, она по манифесту находит какой класс запустить). Также в манифесте содержися другая мета-информация. Пример манифеста:
Стоит отметить, что директория lib, чтобы приложение могло обращаться за пакеами библиотек, прописанных в Class-Path, должна находися на одном уровне с архивом приложения.
Также в архиве могут находится картинки, текстовые файлы, аудио и другие ресурсы необходимые для приложения.
WAR (Web Application aRchive) - это тоже зип-архив, но это веб-ява-приложение. Содрежит внури XML файлы, Java классы, JavaServer Pages, Servlets, стили, яваскрипты, картинки и другие файлы необходимые для веб-приложения. Внутри архив содержит следующую сруктуру: обязательно директория WEB-INFO, рядом могут находится файлы ресурсов(хтмл страницы, стили, скрипты, jsp), также может находиться директория META-INF, но ее манифест не важен для вебприложения и вроде как эту директорию вообще можно удалить.
Что не скажешь про директорию WEB-INFO, она внутри содержит дескриптор приложения web.xml, который подсказывает контейнеру сервлетов, как нужно разворачивать приложения. Если единственные сервлеты в приложении это jsp страницы, то внури этого дескриптора не будет никакой полезной информации. В более сложном приложении десриптор описывает сервлеты, путь к ним, и какой ури данный сервлет будет обслуживать. Также определяются фильтра, которые привязываются к определенному ури(или наверно сервлету); фильра могут изменять обьекты реквест/респонс.
Внутри WEB-INFO кроме дескриптора может находиться директория classes, в которой обитают классы реализовывающие интерфейс сервлет(на них деспритор делает ссылки по конкретным ури), также другие классы использующиеся сервлетами. Этот уровень называется дефолтовым пакетом, рядом с классами мугут быть директории, которые содержат в себе другие пакеты(недефолтовые), на эти пакеты обычно ссылаются классы с дефолтового пакета.
Эще рядом с директорией classes может находится дирекория lib, в ней находятся jar-архивы библиотек, класс-лоудер в своем класспазе кроме пути к пакетам из classes, содержит пути к этим архивам. По необходимоси если какой-то класс импортирует пакет из этих архивов класс-лоудер его подгружает, потому что знает к нему путь по своему класспазу.
RAR (Resource Adapter aRchive) -- (не путать RAR file format), также ява-арихив, содержит XML файлы, Java classes и другие обьекты для J2EE Connector Architecture (JCA) applications (архитектура которая соединяет application server и enterprise information system, последнее это более уницицированное понятие чем к примеру база данных - это комплексная база, к примеру датацентра, туда могут входить различные базы данных, просто файлы на дисках и т.д. JCA это часть enterprise application integration (EAI) решения).
EAR (Enterprise ARchive) -- эти файлы предоставляют композитные Java-архивы. Внури модули приложение, среди которых XML files, Java classes и другие обьекты, включая JAR, WAR and RAR Java-архивы для Enterprise Applications.
Под jar-архивами могут находиться как и POJO-классы(Plain Old Java Object), так и ejb-бины.
Этот архив предоcтавляет возможность задеплоить несколько модулей одновременно. Среди модулей обязательно будет находиться директория META-INF и внутри будет дескпритор развертывания application.xml. Рядом с этим дескриптором могут быть другие характерные под контектную реализацию application server, они помогают развернуть приложение в контектном сервере.
Структура application.xml:
SAR (Service ARchive) подобный EAR. Он предоставляет service.xml файл и связанные с ним JAR файлы.
APK (Android Application PacKage), вариант Java archive формата, используется для Android applications.
Manifest-Version: 1.0 Ant-Version: Apache Ant 1.8.1 Created-By: 1.6.0_22-b04 (Sun Microsystems Inc.) Main-Class: jettytest.AddressBook Class-Path: lib/jetty-6.1.22.jar lib/jetty-util-6.1.22.jar lib/servlet-api-2.5.jar lib/xstream.jar X-COMMENT: Main-Class will be added automatically by build
Стоит отметить, что директория lib, чтобы приложение могло обращаться за пакеами библиотек, прописанных в Class-Path, должна находися на одном уровне с архивом приложения.
Также в архиве могут находится картинки, текстовые файлы, аудио и другие ресурсы необходимые для приложения.
WAR (Web Application aRchive) - это тоже зип-архив, но это веб-ява-приложение. Содрежит внури XML файлы, Java классы, JavaServer Pages, Servlets, стили, яваскрипты, картинки и другие файлы необходимые для веб-приложения. Внутри архив содержит следующую сруктуру: обязательно директория WEB-INFO, рядом могут находится файлы ресурсов(хтмл страницы, стили, скрипты, jsp), также может находиться директория META-INF, но ее манифест не важен для вебприложения и вроде как эту директорию вообще можно удалить.
Что не скажешь про директорию WEB-INFO, она внутри содержит дескриптор приложения web.xml, который подсказывает контейнеру сервлетов, как нужно разворачивать приложения. Если единственные сервлеты в приложении это jsp страницы, то внури этого дескриптора не будет никакой полезной информации. В более сложном приложении десриптор описывает сервлеты, путь к ним, и какой ури данный сервлет будет обслуживать. Также определяются фильтра, которые привязываются к определенному ури(или наверно сервлету); фильра могут изменять обьекты реквест/респонс.
Внутри WEB-INFO кроме дескриптора может находиться директория classes, в которой обитают классы реализовывающие интерфейс сервлет(на них деспритор делает ссылки по конкретным ури), также другие классы использующиеся сервлетами. Этот уровень называется дефолтовым пакетом, рядом с классами мугут быть директории, которые содержат в себе другие пакеты(недефолтовые), на эти пакеты обычно ссылаются классы с дефолтового пакета.
Эще рядом с директорией classes может находится дирекория lib, в ней находятся jar-архивы библиотек, класс-лоудер в своем класспазе кроме пути к пакетам из classes, содержит пути к этим архивам. По необходимоси если какой-то класс импортирует пакет из этих архивов класс-лоудер его подгружает, потому что знает к нему путь по своему класспазу.
RAR (Resource Adapter aRchive) -- (не путать RAR file format), также ява-арихив, содержит XML файлы, Java classes и другие обьекты для J2EE Connector Architecture (JCA) applications (архитектура которая соединяет application server и enterprise information system, последнее это более уницицированное понятие чем к примеру база данных - это комплексная база, к примеру датацентра, туда могут входить различные базы данных, просто файлы на дисках и т.д. JCA это часть enterprise application integration (EAI) решения).
EAR (Enterprise ARchive) -- эти файлы предоставляют композитные Java-архивы. Внури модули приложение, среди которых XML files, Java classes и другие обьекты, включая JAR, WAR and RAR Java-архивы для Enterprise Applications.
Под jar-архивами могут находиться как и POJO-классы(Plain Old Java Object), так и ejb-бины.
Этот архив предоcтавляет возможность задеплоить несколько модулей одновременно. Среди модулей обязательно будет находиться директория META-INF и внутри будет дескпритор развертывания application.xml. Рядом с этим дескриптором могут быть другие характерные под контектную реализацию application server, они помогают развернуть приложение в контектном сервере.
Структура application.xml:
- icon, опеределяет путь к картинкам которые представляют приложение(small-icon и large-icon).
- display-name, идентифицирует приложение.
- Модуль элемент для каждого модуля в архиве.
- Ноль и более security-role элементов для the global security roles in the application.
SAR (Service ARchive) подобный EAR. Он предоставляет service.xml файл и связанные с ним JAR файлы.
APK (Android Application PacKage), вариант Java archive формата, используется для Android applications.
Комментариев нет:
Отправить комментарий