Diferença entre jar e guerra em Java

462

Qual é a diferença entre um .jare um .wararquivo?
É apenas a extensão do arquivo ou há algo mais?

helpermethod
fonte

Respostas:

388

Das dicas do Java: Diferença entre ear jar e arquivos war :

Esses arquivos são simplesmente arquivos compactados usando a ferramenta java jar. Esses arquivos são criados para diferentes propósitos. Aqui está a descrição desses arquivos:

  • Arquivos .jar: os arquivos .jar contêm arquivos de bibliotecas, recursos e acessórios, como arquivos de propriedades.

  • Arquivos .war: O arquivo war contém o aplicativo da web que pode ser implementado em qualquer contêiner servlet / jsp. O arquivo .war contém jsp, html, javascript e outros arquivos necessários para o desenvolvimento de aplicativos da web.


Descrições oficiais da Sun / Oracle:


Artigos da Wikipedia:

aioobe
fonte
10
Estou tendo uma dúvida quanto ao jsp e aos arquivos adicionais de aplicativos da web porque não posso estar no arquivo jar.
Emmanuel Angelo.R
@ EmmanuelAngelo.R Eles podem - um arquivo jar é apenas um arquivo zip. Se isso for útil, é outra questão, que depende do código que você deseja utilizar no arquivo jar. Como um exemplo interessante, o servidor de Integração Contínua Jenkins é distribuído como um arquivo WAR, que pode ser executado com "java -jar". Veja wiki.jenkins-ci.org/display/JENKINS/… para detalhes.
Thorbjørn Ravn Andersen
77

Um .wararquivo tem uma estrutura específica em termos de onde determinados arquivos estarão. Fora isso, sim, é apenas um .jar.

TJ Crowder
fonte
40

Você inclui componentes da web em um aplicativo J2EE em um pacote chamado WAR (Application Archive Archive), que é um JAR semelhante ao pacote usado para bibliotecas de classes Java. Um WAR geralmente contém outros recursos além dos componentes da web, incluindo:

  • Classes de utilitário do lado do servidor (beans de banco de dados, carrinhos de compras e assim por diante).
  • Recursos estáticos da Web (HTML, imagem e arquivos de som etc.)
  • Classes do lado do cliente (applets e classes de utilitário)

Um WAR possui uma estrutura de diretório hierárquica específica. O diretório de nível superior de um WAR é a raiz do documento do aplicativo. A raiz do documento é onde as páginas JSP, as classes e os arquivos do lado do cliente e os recursos estáticos da Web são armazenados.

( fonte )

Portanto, um .war é um .jar, mas contém componentes de aplicativos da web e é organizado de acordo com uma estrutura específica. Um .war foi projetado para ser implementado em um servidor de aplicativos da web, como Tomcat ou Jetty, ou em um servidor Java EE, como JBoss ou Glassfish.

justkt
fonte
1
Então, isso significa que, se você estiver criando um aplicativo de servidor que use soquetes e não tenha interface do usuário, não será necessário empacotá-lo como um arquivo de guerra?
Bot0lot
Na verdade, agora estou lendo um pouco mais, não preciso do Tomcat, posso apenas exportar o jar para o servidor e executá-lo diretamente a partir daí.
Bot0lot
40

WAR significa ARchive de aplicativo da Web

JAR significa Java ARchive

insira a descrição da imagem aqui

Joby Wilson Mathews
fonte
e EAR é o ARchive do aplicativo Enterprise?
Funder
15

Um .wararquivo é um Web Application Archive que é executado dentro de um servidor de aplicativos enquanto um .jaré o Java Application Archive que executa um aplicativo de desktop na máquina do usuário.

Justin Niessner
fonte
14
A segunda afirmação não é necessariamente verdadeira. Um jar também pode iniciar um servidor da Web incorporado, por exemplo, com o Spring Boot.
whirlwin
4
mesmo essa afirmação não é inteiramente verdadeira. Um jar também pode ser apenas uma biblioteca de código para ser usada por outros aplicativos. Em outras palavras, pode nem conter uma classe principal para execução.
Kevin Welker
@KevinWelker concordou. Mesmo em 2011 (quando este post foi escrito), um jarro ainda poderia representar apenas uma biblioteca. No entanto, a inicialização por primavera não existia, portanto, posso ver com vista o fato de que você pode incorporar um servidor da Web em um jarro como o turbilhão mencionado.
Intrepistar_88 27/01
@ Kevin Welker, não "não inteiramente", eu diria "nem toda verdade", como o redemoinho mencionou uma exceção, o que é totalmente verdade, não é?
Alexei Martianov
12

Um arquivo war é um arquivo jar especial usado para empacotar um aplicativo da web para facilitar a implantação em um servidor de aplicativos. O conteúdo do arquivo war deve seguir uma estrutura definida.

Vincent Ramdhanie
fonte
10

.jar e .war são arquivos compactados compactados. Ambos podem ter o arquivo de manifesto META-INF / MANIFEST.MF opcional, que contém informações informativas como controle de versão e atributos instrucionais como caminho de classe e classe principal para a JVM que o executará.

Arquivo .war - o Web Application Archive pretende ser executado dentro de um 'Servlet Container' e pode incluir outros arquivos jar (no diretório WEB-INF / lib) classes compiladas (em WEB-INF / classes (o servlet também é fornecido)) .jsp arquiva imagens, arquivos etc. Todo o conteúdo WAR existente para criar um módulo independente.

Haim Sulam
fonte
5

Basicamente, ambos os arquivos compactados. war é usado para aplicativos da web com uma estrutura de diretórios específica.

fmucar
fonte
4

war e jar são arquivos para arquivos java. war é um arquivo da web e eles estão sendo executados no servidor da web. jar é um arquivo java.

nyanev
fonte
1

Guerra -

distribuir aplicativos da web baseados em Java. Um WAR possui a mesma estrutura de arquivo que um arquivo JAR, que é um único arquivo compactado que contém vários arquivos incluídos nele.

Jar -

Os arquivos .jar contêm arquivos de bibliotecas, recursos e acessórios, como arquivos de propriedades.

Os arquivos WAR são usados ​​para combinar JSPs, servlets, arquivos de classe Java, arquivos XML, bibliotecas javascript, bibliotecas JAR, páginas estáticas da web e quaisquer outros recursos necessários para executar o aplicativo.

Akitha_MJ
fonte
0

Jar : - jar contém apenas .class war : - war contém html, js, css e .class, além de páginas jsp e servlets

TI térmica
fonte
0

Os arquivos JAR permitem empacotar vários arquivos para usá-lo como uma biblioteca, plug-in ou qualquer tipo de aplicativo. Por outro lado, os arquivos WAR são usados ​​apenas para aplicativos da web.

O JAR pode ser criado com qualquer estrutura desejada. Por outro lado, o WAR possui uma estrutura predefinida com os diretórios WEB-INF e META-INF.

Um arquivo JAR permite que o Java Runtime Environment (JRE) implemente um aplicativo inteiro, incluindo as classes e os recursos associados em uma única solicitação. Por outro lado, um arquivo WAR permite testar e implementar um aplicativo da Web facilmente.

Abdul Alim Shakir
fonte
0

Uma extensão de arquivo JAR é .jar e é criada com o comando jar no prompt de comando (como o comando javac é executado). Geralmente, um arquivo JAR contém recursos relacionados a Java, como bibliotecas, classes etc. O arquivo JAR é como o arquivo winzip, exceto que os arquivos Jar são independentes da plataforma.

Um arquivo WAR é simplesmente um arquivo JAR, mas contém apenas arquivos Java relacionados à Web, como Servlets, JSP, HTML.

Para executar um arquivo WAR, é necessário um servidor da Web ou um contêiner da Web, por exemplo, Tomcat ou Weblogic ou Websphere. Para executar um arquivo JAR, o JDK simples é suficiente.

Animesh Jaiswal
fonte