Diferenças entre embalagens JAR e WAR
1. Visão geral
Neste tutorial rápido,we’ll focus on the differences between JAR and WAR packaging in Java.
Primeiro, definiremos cada opção de embalagem separadamente. Depois, vamos resumir suas diferenças.
2. Embalagem JAR
Simplificando, JAR - ou Java Archive - é um formato de arquivo de pacote. Os arquivos JAR têm a extensão.jar e podem conterlibraries, resources, and metadata files.
Essencialmente, é um arquivo compactado contendo as versões compactadas dos arquivos.class e recursos de bibliotecas e aplicativos Java compilados.
Por exemplo, aqui está uma estrutura de arquivo JAR simples:
META-INF/
MANIFEST.MF
com/
example/
MyApplication.class
OMETA-INF/MANIFEST.MF file pode conter metadados adicionais sobre os arquivos armazenados no arquivo.
Podemoscreate a JAR arquivo usando o comandojar ou com ferramentas comoMaven.
3. Embalagem WAR
WAR é a sigla de Web Application Archive ou Web Application Resource. Esses arquivos de archive têm a extensão.war e sãoused to package web applications que podemos implantar em qualquer contêiner Servlet / JSP.
Aqui está um exemplo de layout de uma estrutura de arquivo WAR típica:
META-INF/
MANIFEST.MF
WEB-INF/
web.xml
jsp/
helloWorld.jsp
classes/
static/
templates/
application.properties
lib/
// *.jar files as libs
Dentro, ele tem um diretórioMETA-INF contendo informações úteis emMANIFEST.MF sobre o arquivo da web. O diretórioMETA-INF é privado e não pode ser acessado de fora.
Por outro lado, ele também contém o diretório públicoWEB-INF com todos os recursos estáticos da web, incluindo páginas HTML, imagens e arquivos JS. Além disso, ele contém o arquivoweb.xml, classes de servlet e bibliotecas.
Podemos usar as mesmas ferramentas e comandos que usamos para construir um JAR para construir um arquivo.war.
4. Principais diferenças
Então, quais são as principais diferenças entre esses dois tipos de arquivo?
A primeira e mais óbvia diferença é ofile extension. Os JARs têm a extensão.jar, enquanto o arquivo WAR tem a extensão.war.
A segunda diferença principal étheir purpose and the way they function. Os arquivos JAR nos 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.
The structure of the archives is also different. Podemos criar um JAR com qualquer estrutura desejada. Em contraste, WAR tem uma estrutura predefinida com diretóriosWEB-INFeMETA-INF.
Finalmente, podemosrun a JAR from the command line se construirmos como umexecutable JAR sem usar software adicional. Ou, podemos usá-lo como uma biblioteca. Em contraste, nósneed a server to execute a WAR.
5. Conclusão
Neste artigo rápido, comparamos os tipos de empacotamento Java.jare.war. Ao fazer isso, também observamos que, embora ambos usem o mesmo formato de arquivo ZIP, há várias diferenças importantes.