EAR, WAR 및 JAR: Java 파일 형식

발행: (2025년 12월 29일 오전 04:58 GMT+9)
7 min read
원문: Dev.to

Source: Dev.to

EAR, WAR 및 JAR 커버 이미지: Java 파일 형식

이러한 포맷은 무엇인가요?

JAR (Java Archive)

JAR는 Java에서 가장 기본적이고 근본적인 포맷입니다. Java Archive의 약자로, 본질적으로 ZIP 형식으로 압축된 파일이며 컴파일된 클래스, 라이브러리 및 Java 애플리케이션의 리소스를 포함합니다.

주요 특징

  • 컴파일된 .class 파일을 포함
  • 재사용 가능한 라이브러리를 포함
  • 애플리케이션 설정을 정의하는 META-INF/MANIFEST.MF 파일을 포함할 수 있음
  • standalone 애플리케이션(데스크톱 또는 커맨드 라인)용으로 사용
  • 매니페스트에 main() 메서드가 정의되어 있으면 직접 실행 가능

일반적인 구조

minha-aplicacao.jar
├── com/
│   └── exemplo/
│       ├── Principal.class
│       └── Utilitario.class
├── recursos/
│   └── config.properties
└── META-INF/
    └── MANIFEST.MF

사용 예시

java -jar minha-aplicacao.jar

WAR (Web Archive)

WAR는 Web Archive의 약자로, Java 웹 애플리케이션 전용 포맷입니다. Tomcat, JBoss, GlassFish와 같은 웹 애플리케이션 서버에 배포하도록 설계되었습니다.

주요 특징

  • 서블릿, JSP, 웹 컨트롤러를 포함
  • 웹 애플리케이션 전용 디렉터리 구조를 포함
  • 배포 서술자 파일인 WEB-INF/web.xml을 포함
  • 정적 리소스(HTML, CSS, JavaScript, 이미지)를 저장
  • 웹 애플리케이션에 필요한 라이브러리(JAR)들을 포함
  • 직접 실행되지 않고 애플리케이션 서버에 배포됨

일반적인 구조

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

배포 예시

WAR 파일을 Tomcat의 webapps 폴더(또는 해당 서버의 동일 폴더)로 복사하면 서버가 자동으로 압축을 풀고 실행합니다.

EAR (Enterprise Archive)

EAR는 Enterprise Archive의 약자로, 세 포맷 중 가장 복잡한 형태입니다. 여러 모듈(웹, EJB, 공유 라이브러리 등)을 포함할 수 있는 엔터프라이즈 애플리케이션을 위해 설계되었습니다.

주요 특징

  • 여러 모듈(WAR, 비즈니스 JAR 등)을 포함
  • 애플리케이션 구조를 정의하는 META-INF/application.xml 파일을 포함
  • 여러 모듈 간에 공통 라이브러리를 공유할 수 있음
  • 엔터프라이즈 애플리케이션 서버(JBoss, WebSphere, GlassFish 등)에 배포됨
  • 다계층 복잡 애플리케이션의 조직을 용이하게 함

일반적인 구조

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

실용 비교

항목JARWAREAR
목적독립 실행 애플리케이션, 라이브러리웹 애플리케이션엔터프라이즈 애플리케이션
실행직접: java -jar …웹 서버를 통해엔터프라이즈 서버를 통해
구성 파일MANIFEST.MFWEB-INF/web.xmlMETA-INF/application.xml
정적 리소스선택 사항기대됨 (HTML, CSS 등)모듈 내부 (WAR)
모듈단일 모듈단일 모듈다중 모듈
필요 서버없음Tomcat, Jetty 등JBoss, WebSphere, GlassFish 등
일반적인 사용API, CLI 도구포털, 웹 시스템은행 시스템, ERP 등

컴파일 및 패키징 프로세스

아티팩트 유형에 관계없이 일반적인 흐름은 다음과 같습니다:

  1. 컴파일 – Java 컴파일러가 .java 파일을 .class 파일로 변환합니다.
  2. 패키징 – Maven이나 Gradle과 같은 도구가 이러한 파일들을 적절한 형식(JAR, WAR 또는 EAR)으로 묶습니다.
  3. 배포 – 결과 아티팩트가 실행 또는 배포를 위해 전달됩니다.

Maven 예시 (pom.xml)

jar
war
ear

실용적인 예시

시나리오 1 – 데스크톱 애플리케이션

JAR로 패키징된 이미지 처리 도구:

mvn clean package
# Gera: imagem-processor-1.0.jar
java -jar imagem-processor-1.0.jar

시나리오 2 – 동적 웹사이트

WAR로 패키징된 블로그 또는 전자상거래:

mvn clean package
# Gera: meu-blog-1.0.war
# Copiado para: /tomcat/webapps/
# Acesso: http://localhost:8080/meu-blog

시나리오 3 – 복합 시스템

EAR로 패키징된 다중 서비스 은행 시스템:

mvn clean package
# Gera: banco-sistema-1.0.ear
# Implantado em: JBoss Application Server

결론

JAR, WAR, EAR 중 선택은 개발 중인 애플리케이션 유형에 따라 달라집니다:

  • JAR – 다목적이며, 라이브러리 및 독립 실행형 애플리케이션에 이상적입니다.
  • WAR – 서블릿 서버에서 실행되는 웹 애플리케이션에 특화되었습니다.
  • EAR – 다중 모듈 및 고급 관리 기능이 필요한 기업용 솔루션을 위해 설계되었습니다.

차이를 이해하면 프로젝트를 더 잘 구성하고, 올바른 도구를 선택하며, 보다 효율적인 배포를 보장할 수 있습니다.

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.
Back to Blog

관련 글

더 보기 »

Maven의 내부

소개 오늘 나는 내 소중한 시간을 두 시간이나 잃었다. 그렇다. 그리고 모두 Maven https://maven.apache.org/ 때문에, 내 판단으로는, 특이하기 때문이다. 모든 것이 관련이 있다.

바이너리

2 GiB “Relocation Barrier” – 왜 대형 바이너리가 x86‑64에서 깨지는가 제가 박사 과정을 진행하고 학술 논문을 제출하면서 겪은 문제는 제가 …