Какая разница между jar war и ear файлами

Обновлено: 03.07.2024

в чем разница между .jar и ? Это только расширение файла или есть что-то еще?

  • .файлы jar: The .jar файлы содержать библиотеки, ресурсы и файлы аксессуаров как файлы свойств.

  • .war files: война содержит веб-приложение что может быть развернуто на любом сервлете / jsp контейнер. Этот.war-файл содержит jsp, html, javascript и другие файлы необходимые для разработки web приложения.

официальные описания Sun / Oracle:

статьи:

A имеет определенную структуру с точки зрения того, где будут находиться определенные файлы. Кроме этого, да, это просто .jar .

основное различие между банкой и войной заключается в том, что банка на самом деле не является форматом одной цели, в то время как война. С помощью файла JAR вы можете упаковать много разных вещей. Обычно вы упаковываете классы Java, но вы можете поместить почти все в файл JAR, и вы можете создавать банки, которые имеют любые файлы и форматы каталогов, которые вы хотите. Например, Oracle (по крайней мере, в 8.1.x) фактически использует файлы JAR для распространения программного обеспечения Oracle на установочных компакт-дисках, а IBM использует их для распространите установочную версию документации для WebSphere. Технически вы можете поместить JSP-страницы, HTML-страницы,классы сервлетов и т. д. в банке, но вы обычно не . вы используете войну.

  • серверные служебные классы (компоненты базы данных, тележки для покупок и т. д.).
  • статические веб-ресурсы (HTML, изображения, звуковые файлы и так далее)
  • классы на стороне клиента (апплеты и служебные классы)

Так .война-это .jar, но он содержит компоненты веб-приложения и выложен в соответствии с определенной структурой. Ля. война должна быть развернут на сервере веб-приложений, таком как Tomcat или Jetty, или на сервере Java EE, таком как JBoss или Glassfish.

A .war файл представляет собой архив веб-приложений, который работает внутри сервера приложений в то время как .jar - Это архив приложений Java, который запускает настольное приложение на компьютере пользователя.

файл войны-это специальный файл jar, который используется для упаковки веб-приложения, чтобы упростить его развертывание на сервере приложений. Содержимое файла war должно соответствовать определенной структуре.

.банка и. war-это архивные файлы на молнии. Оба могут иметь необязательный META-INF/MANIFEST.Файл манифеста MF, который содержит информативную информацию, такую как управление версиями, и учебные атрибуты, такие как classpath и main-class для JVM, который его выполнит.

.war file-архив веб-приложений, предназначенный для выполнения внутри "контейнера сервлетов" и может включать в себя другие файлы jar (в каталоге WEB-INF/lib), скомпилированные классы (в WEB-INF/classes (сервлет тоже идет туда)) .JSP-страница файлы изображений, файлы и т. д. Все содержимое войны, которое есть, чтобы создать автономный модуль.

EAR является архивом корпоративного приложения и может содержать файлы JAR ejb, файлы WAR и файлы RAR (connector). Они также могут содержать сторонние библиотеки , но вы должны знать, как управлять средствами расширения Java (например, MANIFEST.MF Class-Path directive), чтобы сделать это хорошо работать.

JAR - это "нормально" Архив приложений Java, но в этом контексте он обычно содержит EJBs вместо библиотек кода или запускаемых (например, извне контейнера приложения) приложений.

war и jar являются архивами для файлов java. война-это веб-архив, и они работают на веб-сервере. jar-это Java-архив.

в основном оба сжатых архива. война используется для веб-приложения с определенной структурой каталогов.

Jar-файлы (файлы с a .jar extension) предназначены для хранения общих библиотек классов Java, ресурсов, вспомогательных файлов и т. д.Тогда как War files (файлы с a .War extension) предназначены для размещения полных веб-приложений. В этом контексте веб-приложение определяется как одна группа файлов, классов, ресурсов .файлы jar, которые могут быть упакованы и доступны как один контекст сервлета.

распространение веб-приложений на основе Java. Война имеет тот же файл структура как файл JAR, который является одним сжатым файлом, который содержит несколько файлов в комплекте внутри него.

The .файлы jar содержат библиотеки, ресурсы и файлы аксессуаров как файлы свойств.

файлы WAR используются для объединения JSPs, сервлетов, файлов классов Java, XML файлы, библиотеки javascript, JAR библиотеки, статические веб-страницы и любые другие ресурсы, необходимые для запуска приложения.

Подробное объяснение функций и различий между пакетами jar, war и ear в Java.

С точки зрения конечного потребителя файл JAR представляет собой своего рода упаковку. Им не нужно знать, сколько файлов .class находится в файле jar, и функции и функции каждого файла также могут получить желаемые результаты. Кроме jar есть war и ear для J2EE. Разница показана в таблице ниже:

JAR WAR EAR
английский Java Archive file Web Archive file Enterprise Archive file
Включить контент Файлы классов и свойств являются наименьшей единицей инкапсуляции файлов; включают общие библиотеки, ресурсы и вспомогательные файлы классов Java и т. Д. Сервлет, страница JSP, библиотека тегов JSP, файл библиотеки JAR, документ HTML / XML и другие общедоступные файлы ресурсов, такие как изображения, аудиофайлы и т. Д. Помимо JAR и WAR, он также включает компоненты EJB
Файл развертывания application-client.xml web.xml application.xml
контейнер Серверы приложений Контейнеры сервлетов Контейнеры EJB
уровень небольшой в Большой

(1) Упаковка файлов EAR

Файл EAR включает в себя весь проект, содержащий несколько модулей EJB (файлы JAR) и веб-модуль (файлы WAR).

Файл EAR может быть создан с помощью WinRAR в сжатии zip или с помощью команды jar из командной строки.

1>. Сначала упакуйте его в war и jar, напишите application.xml и поместите в каталог META-INF.

2>, запустите jar cf your_application.ear your_war.war your_jar.jar META-INF \ application.xml (при условии, что все они находятся в текущем каталоге).

Конечно, вы также можете использовать jar xf your_application.ear для распаковки.

application.xml используется для описания войны и фляги в ухе

Application.xml пример магазина домашних животных, который поставляется с weblogic:

(2) Использование WAR

1>. Используйте следующую команду для создания файла war: jar -cvf web1.war *
2>. Чтобы проверить, какие файлы находятся в web1.war, вы можете использовать команду: jar -tf web1.war
3>. Чтобы распаковать файл web1.war, вы можете использовать команду: jar -xvf web1.war

Кроме того, вы также можете использовать программное обеспечение winrar, чтобы выбрать метод сжатия zip и изменить суффикс сжатого файла на war, чтобы сжать и сгенерировать файл war; также используйте программное обеспечение winrar, чтобы принудительно открыть файл war или принудительно распаковать файл war

Разница между использованием команды jar и программного обеспечения winrar заключается в том, что первое будет генерировать папку META-INF при сжатии файла, который содержит файл MANIFEST.MF.

(3) Когда использовать файлы war или jar

Когда ваш проект не полностью завершен, использовать военные файлы нецелесообразно, потому что ваши классы будут часто меняться из-за отладки и т. Д. Удалять и создавать военные файлы туда и обратно очень неудобно. Лучше, чтобы ваш проект был завершен. Если вы не меняете его, просто создайте пакет war. В настоящее время файл war эквивалентен веб-приложению, а файл jar инкапсулирует классы и связанные ресурсы в пакет для удобства использования в программе.

Упаковочная банка Java, война, функция упаковки ушей, разница, метод упаковки:

1. Функции и различия

i. jar: обычно ссылаются на общие (JAVA) классы во время разработки и упаковывают их в пакеты для хранения и управления;

ii. война: после создания (веб) приложения, обычно веб-сайта, оно упаковывается и развертывается в контейнер;

iii. ear: приложения уровня предприятия. Фактически, пакет EAR содержит пакеты WAR и файлы конфигурации нескольких проектов уровня предприятия. Обычно, если сервер выбирает WebSphere и т. д., будет использоваться пакет EAR. Обычно EJB помечается как ушной пакет.

2. Способ упаковки

I. Все пакеты набираются с помощью jar, но расширение целевого файла другое;

II. Вы также можете использовать Ant для установки и сборки.

3. Скомпилируйте JET в EXE.

I. JET следует покупать за деньги, и говорят, что JET не может компилировать все программы Java в исполняемые файлы, и производительность должна быть скомпрометирована. Следовательно, наилучшим выбором является создание пакетов исполняемых файлов JAR, не говоря уже о том, что он может поддерживать кроссплатформенные характеристики Java.

заметка:

После экспорта веб-проекта в режиме войны поместите его непосредственно в веб-приложения контейнера tomcat, запустите службу, и вы сможете запустить проект. Пакет war автоматически распакует папку с тем же именем.

Во-первых, мы определим каждый вариант упаковки отдельно. После мы резюмируем их различия.

2. Упаковка JAR

Проще говоря, JAR - или Java Archive - это формат файла пакета. Файлы JAR имеют расширение .jar и могут содержать библиотеки, ресурсы и файлы метаданных.

По сути, это заархивированный файл, содержащий сжатые версии файлов .class и ресурсы скомпилированных библиотек и приложений Java.

Например, вот простая файловая структура JAR:

/ MANIFEST.MF META-INF - файл может содержать дополнительные метаданные о файлах , хранящихся в архиве.

Мы можем создать файл JAR с помощью команды jar или таких инструментов, как Maven.

3. Упаковка WAR

WAR означает архив веб-приложений или ресурс веб-приложения. Эти архивные файлы имеют расширение .war и используются для упаковки веб-приложений, которые мы можем развернуть в любом контейнере сервлетов / JSP.

Вот пример макета типичной файловой структуры WAR:

Внутри у него есть каталог META-INF, содержащий полезную информацию о веб-архиве в MANIFEST.MF . META-INF каталог является частным и не могут быть доступны извне.

С другой стороны, он также содержит общедоступный каталог WEB-INF со всеми статическими веб-ресурсами, включая HTML-страницы, изображения и JS-файлы. Кроме того, он содержит файл web.xml , классы сервлетов и библиотеки.

Мы можем использовать те же инструменты и команды, которые использовали для создания JAR- архива .war .

4. Ключевые различия

Итак, каковы основные различия между этими двумя типами архивов?

Первое и наиболее очевидное отличие - это расширение файла . Файлы JAR имеют расширение .jar , а файл WAR - расширение .war .

Второе главное отличие - их предназначение и способ работы . Файлы JAR позволяют нам упаковать несколько файлов, чтобы использовать их как библиотеку, плагин или любое приложение. С другой стороны, файлы WAR используются только для веб-приложений.

Структура архивов также отличается. Мы можем создать JAR с любой желаемой структурой. Напротив, WAR имеет предопределенную структуру с каталогами WEB-INF и META-INF .

Наконец, мы можем запустить JAR из командной строки, если мы создадим его как исполняемый JAR без использования дополнительного программного обеспечения. Или мы можем использовать его как библиотеку. Напротив, нам нужен сервер для выполнения WAR .

5. Заключение

В этой быстрой статье мы сравнили типы упаковки Java .jar и .war . При этом мы также отметили, что, хотя оба используют один и тот же формат файла ZIP, есть несколько важных отличий.

В приложении J2EE модули упакованы как EAR, JAR и WAR в зависимости от их функциональности.

JAR: Модули EJB, содержащие корпоративные Java-бины (файлы классов) и дескриптор развертывания EJB, упаковываются в файлы JAR с расширением .jar

WAR: Веб-модули, содержащие файлы классов Servlet, JSP-файлы, вспомогательные файлы, GIF и HTML-файлы, упакованы в виде JAR-файла с расширением .war (веб-архив).

EAR: Все перечисленные выше файлы (.jar и .war) упакованы в файл JAR с расширением .ear (корпоративный архив) и развернуты на сервере приложений.

WAR (веб-архив) - это модуль, который загружается в веб-контейнерJava Application Server. Сервер приложений Java имеет два контейнера (среды выполнения) - один является веб-контейнером, а другой - контейнером EJB.

В контейнере EJB размещаются корпоративные Java-бины на основе EJB API, разработанные для предоставления расширенных бизнес-функций, таких как декларативные транзакции, безопасность на уровне декларативных методов и поддержка многопротокольных протоколов - так что это скорее стиль распределенных вычислений RPC , Контейнеры EJB требуют, чтобы модули EJB были упакованы как файлы JAR - они содержат файл ejb-jar.xml в папке META-INF .

Корпоративные приложения могут состоять из одного или нескольких модулей, которые могут быть веб-модулями (упакованными в файл WAR), модулями EJB (упакованными в файл JAR) или обоими. Корпоративные приложения упакованы в файлы EAR - это специальные файлы JAR, содержащие файл application.xml в папке META-INF .

По сути, файлы EAR представляют собой расширенный набор, содержащий файлы WAR и файлы JAR. Серверы приложений Java позволяют развертывать автономные веб-модули в файле WAR, хотя внутри они создают файлы EAR в качестве оболочки для файлов WAR. Автономные веб-контейнеры, такие как Tomcat и Jetty не поддерживают файлы EAR - они не являются полноценными серверами приложений. Веб-приложения в этих контейнерах должны быть развернуты только в виде файлов WAR.

На серверах приложений файлы EAR содержат конфигурации, такие как сопоставление ролей безопасности приложений, сопоставление ссылок EJB и сопоставление корневых URL-адресов контекста веб-модулей.

Помимо веб-модулей и модулей EJB, файлы EAR могут также содержать соединительные модули, упакованные как файлы RAR, и клиентские модули, упакованные как файлы JAR.

война - веб архив. Он используется для развертывания веб-приложений в соответствии со стандартом сервлета. Это jar-файл, содержащий специальный каталог WEB-INF и несколько файлов и каталогов внутри него (web.xml, lib, classes), а также все HTML, JSP, изображения, CSS, JavaScript и другие ресурсы веб-приложения.

ухо - архив предприятия. Он используется для развертывания корпоративного приложения, содержащего EJB, веб-приложения и сторонние библиотеки. Это также файл jar, в нем есть специальный каталог APP-INF, содержащий файл application.xml и файлы jar и war.

Файлы WAR (веб-архив) содержат файлы классов сервлетов, JSP (страницы сервлетов Java), файлы HTML и графические файлы и другие вспомогательные файлы.

Файлы EAR (корпоративного архива) содержат файлы WAR вместе с файлами JAR, содержащими код.

В этих файлах могут быть и другие вещи, но они в основном предназначены для того, что они звучат так, как они означают: WAR для материала веб-типа, EAR для материала корпоративного типа (WAR, код, коннекторы и др.).

tar (ленточные архивы) - Используемый формат - это файл, записанный в последовательных единицах fileName, fileSize, fileData - без сжатия. может быть огромным

Jar (архив Java) - используемые методы сжатия - обычно содержит информацию Java, такую ​​как файлы классов/Java. Но может содержать любые файлы и структуру каталогов

war (архивы веб-приложений) - подобно тому, как файлы jar имеют только определенную структуру каталогов согласно спецификации JSP/Servlet для целей развертывания

ear (корпоративные архивы) - аналогично jar-файлам. иметь структуру каталогов, соответствующую требованиям J2EE, чтобы ее можно было развернуть на серверах приложений J2EE .- может содержать несколько файлов JAR и WAR

JAR файлы

Файл JAR (сокращение от Java Archive) позволяет объединять несколько файлов В один. Файлы с «.jar»; Расширение используется разработчиками software для распространения классов Java и различных метаданных . Они также содержат библиотеки и файлы ресурсов, а также вспомогательные файлы (например, файлы свойств).

Пользователи могут извлекать и создавать JAR-файлы с помощью команды Java. Kit ( (JDK) .jar). Zip инструменты также могут быть использованы.

JAR-файлы имеют дополнительные файлы манифеста. Записи в файле манифеста Предписывают использование файла JAR. Спецификация «основного» класса для класса файлов Обозначает файл как отдельную или «автономную» программу.

WAR-файлы

Файлы WAR (или архива веб-приложения) могут содержать файлы XML .__ (расширяемый язык разметки), классы Java, а также страницы Java Server Для целей интернет-приложения. Он также используется для маркировки Библиотек и веб-страниц, которые составляют веб-приложение. Файлы с расширением The .war содержат веб-приложение для использования с серверами или контейнерами JSP (Java Server Page). Он содержит JSP, HTML (гипертекстовая разметка Language), JavaScript и различные файлы для создания вышеупомянутых Веб-приложений.

WAR-файл структурирован как таковой, что позволяет использовать специальные каталоги и файлы Он также может иметь цифровую подпись (очень похожую на JAR-файл) , Чтобы показать достоверность кода.

EAR файлы

Файл EAR (Enterprise Archive) объединяет файлы JAR и WAR в один архив Эти файлы с расширением .ear имеют каталог для метаданных Модули упакованы в архив для бесперебойной и Одновременной работы различных модулей на сервере приложений.

Файл EAR также имеет дескрипторы развертывания (которые являются файлами XML) , Которые эффективно определяют развертывание различных модулей.

enter image description here

Ушные файлы предоставляют больше возможностей для настройки взаимодействия с сервером приложений.

Например: если версия сервера приложений в спящем режиме старше, чем версия, предоставляемая вашими зависимостями, вы можете добавить следующее в ear-deployer-jboss-beans.xml для JBOSS, чтобы изолировать загрузчики классов и избежать конфликтов:

или в src/main/application/META-INF/jboss-app.xml:

Это обеспечит отсутствие конфликта загрузчика классов между вашим приложением и сервером приложений.

Обычно механизм загрузчика классов работает так:

Когда запрос на загрузку класса представлен загрузчику классов, он сначала просит загрузчик родительского класса выполнить запрос. Родитель, в turn, просит своего родителя для класса, пока запрос не достигает вершины иерархии. Если загрузчик классов наверху иерархии не может выполнить запрос, то загрузчик дочернего класса, который вызвал его отвечает за загрузку класса.

Изолируя загрузчики классов, ваш ушной загрузчик классов не будет выглядеть в родительском (= JBoss/другой AS загрузчик классов) . Насколько я знаю, это невозможно с файлами war.

J2EE определяет три типа архивов:

Архивы Java (JAR) Файл JAR содержит один или несколько классов Java, манифест и дескриптор. Файлы JAR - самый низкий уровень архива. JAR-файлы используются в J2EE для упаковки EJB-компонентов и клиентских Java-приложений.

Веб-архивы (WAR) Файлы WAR похожи на файлы JAR, за исключением того, что они специально предназначены для веб-приложений, созданных из сервлетов, JSP и поддерживающих классов.

Enterprise Archives (EAR) »Файл EAR содержит все компоненты, которые составляют конкретное приложение J2EE.

Чтобы сделать транспортировку проекта, развертывание стало простым . Нужно сжать в один файл . JAR (Java-архив) группу файлов .class

WAR (веб-архив) - каждая война представляет одно веб-приложение - использовать только веб-технологии, такие как сервлет, можно использовать jsps . - может работать на сервере Tomcat - веб-приложение, разработанное только с использованием веб-технологий. jsp servlet html js - представление информации только без транзакций.

EAR (корпоративный архив) - каждая война представляет одно корпоративное приложение - мы можем использовать что угодно из j2ee, например, ejb, jms можно с радостью использовать . - может работать на сервере Glassfish как сервер, а не на сервере Tomcat. - корпоративное приложение, разработанное по любой технологии, из j2ee, как и все в Интернете приложение плюс ejbs jms и т. д. - выполняет транзакции с представлением информации. например. Банк приложение, приложение Телеком

В приложении J2EE модули упаковываются как EAR, JAR и WAR на основе их функциональности

JAR: Модули EJB, содержащие корпоративные java beans (файлы классов) и дескриптор развертывания EJB, упаковываются в виде файлов JAR с расширением .jar extenstion

WAR: Веб-модули, содержащие файлы классов Servlet, файлы JSP, поддерживающие файлы, файлы GIF и HTML, упаковываются в виде файла JAR с расширением .war(web archive)

EAR: Все вышеприведенные файлы (.jar и .war) упакованы в виде файла JAR с расширением .ear(корпоративный архив) и развертываются на сервере приложений.

Эти посты заставляют меня думать, что EAR - это просто JARS и WARS вместе в большом EAR, что, я думаю, не так просто. Все по сути являются архивами (JAR), но с различным расширением, подразумевающим их природу / содержание.

A WAR (веб-архив) - это модуль, который загружается в веб-контейнер Java Application Server. Сервер приложений Java имеет два контейнера (среды выполнения): один представляет собой веб-контейнер, а другой - контейнер EJB.

Консоль EJB: хост Enterprise java beans на основе API EJB, разработанный для обеспечения расширенных бизнес-функций, таких как декларативные транзакции, уровень декларативного уровня и многопротокольная поддержка - поэтому более стиль RPC распределенных вычислений. Контейнеры EJB требуют, чтобы модули EJB были упакованы как файлы JAR - в файле META-INF есть файл ejb-jar.xml.

Корпоративные приложения могут состоять из одного или нескольких модулей, которые могут быть либо Web-модулями (упакованными как WAR файл), либо EJB-модулями (упакованными как JAR файл), либо их обоими. Корпоративные приложения упакованы как файлы EAR - это специальные файлы JAR, содержащие файл application.xml в папке META-INF .

В основном файлы EAR - это надмножество, содержащее файлы WAR и файлы JAR. Java-серверы приложений позволяют развертывать автономные веб-модули в WAR файле, хотя внутри они создают файлы EAR в качестве обертки вокруг файлов WAR. Автономные веб-контейнеры, такие как Tomcat и Jetty, не поддерживают файлы EAR - это не полноценные серверы приложений. Веб-приложения в этих контейнерах должны быть развернуты только как файлы WAR.

В серверах приложений - файлы EAR содержат такие конфигурации, как сопоставление ролей безопасности приложений, сопоставление ссылок EJB и отображение URL-адресов корневого URL-адреса веб-модулей.

Помимо модулей Web и модулей EJB, файлы EAR могут также содержать модули соединителей, упакованные как файлы RAR и клиентские модули, упакованные как файлы JAR.

Читайте также: