JAR
JAR (Java ARchive)는 Java 애플리케이션 이나 라이브러리를 배포할 때 사용되는 압축 파일 형식
특징
- Java 클래스 파일 (
.class), 리소스(이미지, 속성 파일 등), 메타데이터(MANIFEST.MF 등)을 하나로 묶어 배포 및 관리 단순화
- JAR는 Main-Class 속성이 포함된 MANIFEST 파일을 정의해 바로 실행 가능한 애플리케이션을 만듦
- JVM과 JRE만 있으면 별도의 웹 서버 없이 명령어(java -jar)를 통해 실행 가능
WAR
WAR (Web Application Archive)는 Java 웹 애플리켕션을 패키징해서 웹 서버나 WAS에 배포할 때 사용하는 파일 형식
특징
- WAR 파일은 사전 정의된 디렉터리 구조 (
WEB-INF, META-INF 등)을 가짐
- 서블릿, JSP, 정적 리소스, web.xml 같은 배포 설명자 포함
- WAR 파일 자체 직접 실행할 수 없고, Tomcat, WebLogic, WebSphere 등 웹 컨테이너에서 배포하여 실행
- 다양한 웹 서버 환경과의 호환성, 대규모 웹 시스템 통합 등에서 활용도가 높음
비교

결론
JAR는 단독 실행, 빠른 배포가 장점이고,
WAR는 대규모시스템과 호환, 표준 웹 앱 구조 제공이 장점이다.
실무에서는 Spring Boot 처럼 내장 WAS를 사용하는 경우 JAR로 단일 실행 파일 배포가 쉽고,
전통적인 웹 시스템 및 WAS와 연동을 위해서라면 WAR가 적합하다.
부록
JVM (Java Virtual Machine) : 바이트코드 실행 엔진
- 자바 바이트코드(
.class 파일)을 각 운영체제에서 실행할 수 있도록 해석하고 실행하는 가상 머신
- 운영체제에 맞게 Java 애플리케이션 실행
- 메모리 관리, 가비지 컬렉션, 스레드 관리, 보안 등 담당
- JVM 덕분에 자바는 WORA (Write Once, Run Anywhere) 즉, 플랫폼 독립적으로 동작
JRE (Java Runtime Environment) : 실행 환경 패키지
- 자바 프로그램을 실행하기 위한 환경(런타임 환경)
- JVM과 자바 표준 라이브러리 , 기타 리소스 파일을 포함한 패키지
- 개발자가 아닌 일반 사용자는 프로그램 실행만 필요하므로, JRE만 설치하면 됨
- JRE는 JDK에 포함되어 있지만, 개발 도구 는 포함하지 않음
MANIFEST 파일 : 클래스 경로 및 메타정보
- JAR 또는 WAR 내부에 META-INF/ 폴더에 위치하며, 아카이브에 대한 여러 메타 정보 기술하는 텍스트 파일
- 주요 용도는 애플리케이션의 진입점, 클래스 패스 정의, 버전 정보 등 설정에 사용
Servlet
- 자바로 작성된 서버 측 프로그램
- 클라이언트의 HTTP 요청을 받아 처리하고 동적 웹 페이지를 생성하여 응답 반환
- HttpServletRequest와 HttpServletResponse 객체를 통해 요청과 응답 관리
- 웹 서버가 WAS에 요청 전달 시, WAS가 해당 서블릿을 실행해 필요한 로직 수행 후 결과를 웹 브라우저에 전송
JSP (Java Server Pages) : 웹 페이지 생성 기술
- HTML 내에 자바 코드를 삽입하여 서버에서 동적으로 웹 페이지 생성하는 기술
- 실행 시 Servlet으로 변환되어 컴파일되고 실행, Servlet 쉽게 작성할 수 있는 템플릿 역할
- 복잡한 웹 페이지를 쉽게 만들 수 있게 돕고, DB 연동, 세션 관리 등 가능
- WAS에서 실행 가능
WAS (Web Application Server) : 웹 앱 실행환경 제공 미들웨어
- 웁 애플리케이션의 실행 환경을 제공하는 미들웨어
- 동적인 웹 컨텐츠 처리
- 웹 서버가 정적인 리소스(HTML, 이미지 등) 처리하는 반면, WAS는 DB 연동, 세션 관리, 비즈니스 로직 처리 같은 동적 요청 담당
- 대표적인 WAS : Tomcat, IBM WebSphere, Jeus