[JAVA] JAR(Java ARchive) VS WAR(Web Application Archive)

null·2025년 12월 24일

JAVA

목록 보기
9/9

JAR (Java ARchive)

  • JAR 파일은 .jar 확장자를 가지며, 주로 일반 Java 애플리케이션이나 라이브러리를 패키징할 때 사용
  • 독립 실행형 애플리케이션: 데스크톱 애플리케이션이나 콘솔 애플리케이션처럼 웹 서버 없이 자체적으로 실행되는 프로그램을 패키징 (예: java -jar MyProgram.jar 명령어로 실행)

  • 재사용 가능한 라이브러리: 여러 프로젝트에서 공통적으로 사용되는 클래스 파일이나 리소스를 묶어서 라이브러리 형태로 배포할 때 사용 (예: 로깅 라이브러리, 데이터베이스 연결 라이브러리 등)

  • 컴파일된 Java 클래스 파일(.class)

  • 관련 리소스 파일 (이미지, 설정 파일 등)

  • META-INF/MANIFEST.MF 파일 (패키지에 대한 메타데이터)

  • 구조: 특정 표준화된 디렉터리 구조를 강제하지 않으며, 개발자가 원하는 대로 구성할 수 있음

  • 배포 및 실행: JRE(Java Runtime Environment)만 있다면 단독으로 실행하거나 다른 Java 애플리케이션의 클래스 경로에 추가하여 사용할 수 있음, Spring Boot 같은 프레임워크는 내장 웹 서버를 포함하여 JAR 파일을 웹 애플리케이션처럼 실행할 수 있게 해주기도 함

WAR (Web Application Archive)

  • WAR 파일은 .war 확장자를 가지며, 웹 애플리케이션을 패키징할 때 사용

  • 웹 서버(예: Tomcat, Jetty) 또는 WAS(Web Application Server)에 배포되어 실행

  • 웹 애플리케이션 배포: 서블릿, JSP, HTML, CSS, JavaScript 파일 등 웹 애플리케이션의 모든 구성 요소를 하나의 파일로 묶어 웹 서버에 쉽게 배포

  • Java 클래스 파일 (WEB-INF/classes 디렉터리)

  • 외부 라이브러리 JAR 파일 (WEB-INF/lib 디렉터리)

  • JSP 파일

  • HTML, CSS, JavaScript 등 정적 웹 리소스

  • web.xml (웹 애플리케이션 배포 설명자)

  • 구조: 웹 애플리케이션 표준에 따라 미리 정의된 특정 디렉터리 구조를 따름

  • 루트 디렉터리: HTML, JSP, CSS, JavaScript 등 클라이언트가 직접 접근하는 정적 웹 리소스

  • WEB-INF/: 웹 애플리케이션의 보안 및 설정 정보, 클래스 파일, 라이브러리 등을 포함. 클라이언트가 직접 접근할 수 없음

  • WEB-INF/web.xml: 웹 애플리케이션의 구성 정보를 담는 배포 설명자

  • WEB-INF/classes/: 컴파일된 서블릿 및 기타 Java 클래스 파일

  • WEB-INF/lib/: 웹 애플리케이션이 사용하는 외부 라이브러리 JAR 파일

  • 배포 및 실행: 반드시 서블릿 컨테이너(웹 서버 또는 WAS)에 배포되어야 함. 컨테이너가 WAR 파일을 해석하고 웹 애플리케이션을 실행

구분JAR (Java ARchive)WAR (Web Application Archive)
용도독립 실행형 Java 애플리케이션, 라이브러리웹 애플리케이션
실행 환경JRE (Java Runtime Environment)서블릿 컨테이너 / WAS (예: Tomcat, Jetty)
실행 방식java -jar app.jarWAS에 배포 후 실행
포함 내용Java 클래스, 리소스, MANIFEST.MFJava 클래스, JSP, 서블릿, HTML, CSS, JS, web.xml, 외부 라이브러리
디렉터리 구조자유로운 구조웹 표준 구조 고정 (WEB-INF, META-INF 등)
대표 예시콘솔 앱, 배치 프로그램, 유틸리티, Spring Boot 단일 실행 파일웹 사이트, REST API 서버, 전통적인 웹 애플리케이션

0개의 댓글