Overview
Neste tutorial rápido, vamos focar nas diferenças entre empacotamento JAR e WAR em Java.
Primeiro, vamos definir cada opção de empacotamento separadamente. Em seguida, vamos resumir suas diferenças.
Empacotamento JAR
Simplesmente colocado, JAR – ou Java Archive – é um formato de arquivo de pacote. Os arquivos JAR têm a extensão .jar e podem conter bibliotecas, recursos e arquivos de metadados.
Essencialmente, é um arquivo compactado contendo as versões compactadas dos arquivos .class e recursos das bibliotecas e aplicativos Java compilados.
Por exemplo, aqui está uma estrutura de arquivos JAR simples:
META-INF/ MANIFEST.MFcom/ baeldung/ MyApplication.class
O META-INF/MANIFEST.O arquivo MF pode conter metadados adicionais sobre os arquivos armazenados no arquivo.
Podemos criar um arquivo JAR usando o comando jar ou com ferramentas como Maven.
WAR Packaging
WAR significa Web Application Archive ou Web Application Resource. Estes arquivos têm a extensão .war e são usados para empacotar aplicações web que podemos implementar em qualquer container Servlet/JSP.
Aqui está um layout de exemplo de uma estrutura de arquivo típica WAR:
Inside, ele tem um diretório META-INF contendo informações úteis no MANIFEST.MF sobre o arquivo web. O diretório META-INF é privado e não pode ser acessado de fora.
Por outro lado, ele também contém o diretório público WEB-INF com todos os recursos estáticos da web, incluindo páginas HTML, imagens, e arquivos JS. Além disso, ele contém o arquivo web.xml, classes servlet e bibliotecas.
Podemos usar as mesmas ferramentas e comandos que usamos para construir um JAR para construir um arquivo .war.
Diferenças-chave
Então, quais são as principais diferenças entre estes dois tipos de arquivo?
A primeira e mais óbvia diferença é a extensão do arquivo. Os JARs têm a extensão .jar, enquanto o arquivo WAR tem a extensão .war.
A segunda diferença principal é a sua finalidade e a forma como funcionam. Os arquivos JAR nos permitem empacotar múltiplos arquivos para usá-lo como biblioteca, plugin, ou qualquer tipo de aplicação. Por outro lado, arquivos WAR são usados apenas para aplicações web.
A estrutura dos arquivos também é diferente. Nós podemos criar um JAR com qualquer estrutura desejada. Em contraste, WAR tem uma estrutura pré-definida com diretórios WEB-INF e META-INF.
Finalmente, podemos rodar um JAR a partir da linha de comando se o construirmos como um JAR executável sem usar software adicional. Ou, podemos usá-lo como uma biblioteca. Em contraste, precisamos de um servidor para executar uma WAR.
Conclusion
Neste artigo rápido, nós comparamos os tipos de empacotamento .jar e .war Java. Ao fazer isso, também notamos que enquanto ambos usam o mesmo formato de arquivo ZIP, existem várias diferenças importantes.
Comece com Spring 5 e Spring Boot 2, através do curso Learn Spring:
>> VERIFIQUE O CURSO