EAR, WAR e JAR: Formatos de Arquivo em Java
Source: Dev.to

O que são esses formatos?
JAR (Java Archive)
O JAR é o formato mais básico e fundamental em Java. Significa Java Archive e é essencialmente um arquivo compactado no formato ZIP que contém classes compiladas, bibliotecas e recursos de uma aplicação Java.
Características principais
- Contém arquivos
.classcompilados - Inclui bibliotecas reutilizáveis
- Pode conter um arquivo
META-INF/MANIFEST.MFque define configurações da aplicação - É usado para aplicações standalone (desktop ou linha de comando)
- Pode ser executado diretamente se contiver um método
main()definido no manifesto
Estrutura típica
minha-aplicacao.jar
├── com/
│ └── exemplo/
│ ├── Principal.class
│ └── Utilitario.class
├── recursos/
│ └── config.properties
└── META-INF/
└── MANIFEST.MF
Exemplo de uso
java -jar minha-aplicacao.jar
WAR (Web Archive)
WAR significa Web Archive e é um formato especializado para aplicações web Java. É projetado para ser implantado em servidores de aplicação web como Tomcat, JBoss ou GlassFish.
Características principais
- Contém servlets, JSPs e controladores web
- Inclui a estrutura de diretórios específica para aplicações web
- Contém o arquivo
WEB-INF/web.xml(descritor de implantação) - Armazena recursos estáticos (HTML, CSS, JavaScript, imagens)
- Inclui bibliotecas (JARs) necessárias para a aplicação web
- É implantado em um servidor de aplicação, não executado diretamente
Estrutura típica
minha-aplicacao-web.war
├── index.html
├── css/
│ └── estilo.css
├── js/
│ └── script.js
├── WEB-INF/
│ ├── web.xml
│ ├── classes/
│ │ └── com/exemplo/servlets/MeuServlet.class
│ └── lib/
│ ├── spring-core.jar
│ └── hibernate.jar
└── META-INF/
└── MANIFEST.MF
Exemplo de implantação
Copie o arquivo WAR para a pasta webapps do Tomcat (ou equivalente) e ele será automaticamente descompactado e executado pelo servidor.
EAR (Enterprise Archive)
EAR significa Enterprise Archive e é o formato mais complexo dos três. É projetado para aplicações empresariais que podem conter múltiplos módulos (web, EJB, bibliotecas compartilhadas).
Características principais
- Contém múltiplos módulos (WARs, JARs de negócio, etc.)
- Inclui o arquivo
META-INF/application.xmlque define a estrutura da aplicação - Permite compartilhar bibliotecas comuns entre múltiplos módulos
- É implantado em servidores de aplicação empresariais (JBoss, WebSphere, GlassFish)
- Facilita a organização de aplicações complexas com várias camadas
Estrutura típica
minha-aplicacao-enterprise.ear
├── minha-web.war
├── minha-logica-negocio.jar
├── minha-integracao.jar
├── lib/
│ ├── commons-lang.jar
│ └── log4j.jar
└── META-INF/
├── application.xml
└── MANIFEST.MF
Comparação prática
| Aspecto | JAR | WAR | EAR |
|---|---|---|---|
| Propósito | Aplicações standalone, bibliotecas | Aplicações web | Aplicações empresariais |
| Execução | Direto: java -jar … | Via servidor web | Via servidor empresarial |
| Arquivo de configuração | MANIFEST.MF | WEB-INF/web.xml | META-INF/application.xml |
| Recursos estáticos | Opcional | Esperado (HTML, CSS, etc.) | Dentro dos módulos (WARs) |
| Módulos | Um único módulo | Um módulo | Múltiplos módulos |
| Servidor necessário | Nenhum | Tomcat, Jetty, etc. | JBoss, WebSphere, GlassFish, etc. |
| Uso típico | API, ferramentas CLI | Portais, sistemas web | Sistemas bancários, ERP, etc. |
Processo de compilação e empacotamento
Independentemente do tipo de artefato, o fluxo geral é:
- Compilação – O compilador Java converte arquivos
.javaem.class. - Empacotamento – Ferramentas como Maven ou Gradle agrupam esses arquivos no formato apropriado (JAR, WAR ou EAR).
- Distribuição – O artefato resultante é entregue para execução ou implantação.
Exemplo com Maven (pom.xml)
jar
war
ear
Exemplos práticos
Cenário 1 – Aplicação de desktop
Ferramenta de processamento de imagens empacotada como JAR:
mvn clean package
# Gera: imagem-processor-1.0.jar
java -jar imagem-processor-1.0.jar
Cenário 2 – Site dinâmico
Blog ou e‑commerce empacotado como WAR:
mvn clean package
# Gera: meu-blog-1.0.war
# Copiado para: /tomcat/webapps/
# Acesso: http://localhost:8080/meu-blog
Cenário 3 – Sistema complexo
Sistema bancário com múltiplos serviços empacotado como EAR:
mvn clean package
# Gera: banco-sistema-1.0.ear
# Implantado em: JBoss Application Server
Conclusão
A escolha entre JAR, WAR e EAR depende do tipo de aplicação que você está desenvolvendo:
- JAR – Versátil, ideal para bibliotecas e aplicações standalone.
- WAR – Especializado para aplicações web que rodam em servidores servlet.
- EAR – Destinado a soluções corporativas que exigem múltiplos módulos e recursos avançados de gerenciamento.
Entender as diferenças ajuda a organizar melhor o projeto, escolher as ferramentas corretas e garantir uma implantação mais eficiente.
WAR é para aplicações web, enquanto EAR é para arquiteturas empresariais complexas. Compreender essas diferenças é essencial para qualquer desenvolvedor Java, pois garante que sua aplicação seja empacotada e implantada corretamente.