본문 바로가기
웹/웹 지식

[웹 지식] .jar 파일과 .war파일은 무엇일까?

by 클레어몬트 2024. 10. 6.

프로젝트를 하면서, jar 파일과 war 파일에 대해 많이 보았을 것이다!
오늘은 이 두 개념에 대해 정확히 알아보고자 한다 🤐

 

그냥 결론부터 말하면 이 둘은 zip 파일이다 :|

.jar: java archive

 

.jar 파일: 자바 애플리케이션이나 라이브러리를 배포하기 위해 여러 파일들을 하나의 압축 파일로 묶어 놓은 것

이 파일은 자바에서 널리 사용되며, 다음과 같은 중요한 역할을 한다

 

[.jar 파일의 주요 특징]

  1. 다수의 파일을 하나로 묶음: .jar 파일은 클래스 파일, 리소스 파일(이미지, 설정 파일 등), 그리고 메타데이터 파일을 하나의 파일로 압축한다. 이를 통해 배포가 간편해지며, 여러 파일을 개별적으로 관리할 필요가 없다.
  2. 자바의 배포 형식: 자바 애플리케이션은 .jar 파일로 패키징되어 배포된다. 자바 런타임 환경(JRE)에서 실행할 수 있는 애플리케이션을 하나의 .jar 파일로 제공하면, 사용자는 해당 파일을 실행하기만 하면 된다. 실행 가능한 .jar 파일에는 메타데이터 파일인 MANIFEST.MF가 포함되어 있어, 진입점이 되는 클래스(main 메서드를 포함한 클래스)를 정의한다.
  3. 라이브러리 파일: .jar 파일은 단순히 실행 파일뿐만 아니라, 라이브러리 파일로도 사용된다. 자바 애플리케이션에서 필요한 외부 라이브러리나 모듈을 .jar 파일로 제공하여, 다른 프로젝트에서 쉽게 재사용할 수 있다. 개발자는 프로젝트에서 .jar 파일을 참조하여 해당 라이브러리의 기능을 호출할 수 있다.
  4. ZIP 형식 기반: .jar 파일은 기본적으로 ZIP 압축 형식을 따르기 때문에, 파일 확장자를 .zip으로 변경하여 ZIP 유틸리티로 내용을 열어볼 수 있다. 다만 .jar 파일은 자바 런타임 환경에서 사용될 목적으로 만들어졌으므로, 그 내부에는 자바 클래스 파일과 메타데이터가 포함되어 있다.
  5. 보안 기능: .jar 파일은 디지털 서명을 지원하여 배포된 파일의 무결성을 보장할 수 있다. 이를 통해 파일이 전달되는 중간에 변경되거나 악의적으로 변조된 경우 이를 감지할 수 있다.

 

(.jar 파일의 용도)

  1. 자바 애플리케이션 배포: 자바로 작성된 애플리케이션을 배포할 때, 모든 클래스 파일과 리소스 파일을 .jar 파일로 패키징하여 배포한다. 사용자는 해당 .jar 파일을 실행하기만 하면 된다.
  2. 라이브러리 제공: 다양한 자바 라이브러리(예: Apache Commons, Spring Framework)들이 .jar 파일 형식으로 제공된다. 개발자는 이러한 라이브러리를 프로젝트에 추가하여 필요한 기능을 활용할 수 있다.
  3. 웹 애플리케이션 구성: 웹 애플리케이션 개발에서, 자바의 서버 사이드 프레임워크인 Servlet이나 Spring 등의 프로젝트에서 .jar 파일을 사용하여 다양한 기능을 제공받는다.

 

그렇다면 war 파일은 뭘까?

똑같다! 근데 다만 이름만 앞에 web으로 바뀌었을 뿐이다

ㅇwar 파일: web application archive

 

(Maven을 이용한 WAR 파일 생성)

📌 pom.xml 설정

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>myapp</artifactId>
    <version>1.0.0</version>
    <packaging>war</packaging>  <!-- WAR 패키징 설정 -->

    <dependencies>
        <!-- 필요한 의존성 추가 (예: Spring Boot, Servlet API 등) -->
    </dependencies>
</project>

 

📌 WAR 파일 생성 명령어

mvn clean package

 

실행하면 target/ 디렉토리에 myapp.war 파일이 생성!

 

 

(Gradle을 이용한 WAR 파일 생성)

📌 build.gradle 설정

plugins {
    id 'war'
}

war {
    archiveFileName = 'myapp.war'
}

 

📌 WAR 파일 생성 명령어

gradle clean build

 

실행하면 build/libs/myapp.war 파일이 생성!

 

 

WAR 파일 배포 방법

1) Apache Tomcat에 배포

1. Tomcat 설치 후 webapps 디렉토리에 .war 파일 복사

cp myapp.war /path/to/tomcat/webapps/

 

 

2. Tomcat 실행

./bin/startup.sh # (Linux/macOS)
./bin/startup.bat # (Windows)

 

 

3. 웹 브라우저에서 확인

http://localhost:8080/myapp/
 

2) IntelliJ에서 직접 배포

  1. RunEdit ConfigurationsTomcat Server 추가
  2. Deployment 에서 .war 파일 추가
  3. 실행하면 Tomcat에 자동 배포됨

 

 

 

[JAR vs WAR]

WAR 파일은 Java뿐만 아니라 HTML, CSS, JavaScript 같은 FE 기술도 함께 포함할 수 있다

 

 

 

 

.jar 파일은 자바 환경에서 "애플리케이션과 라이브러리를 배포하기 위한 표준 형식"이다. 이를 통해 여러 파일을 하나로 묶어 배포가 용이해지며, 자바 프로젝트에서 쉽게 활용할 수 있는 형태로 제공된다.