카테고리 없음

WAR VS JAR

jjhim531 2024. 10. 25. 13:58
반응형

둘 다 Java에서 애플리케이션을 패키징하고 배포하는 데 사용되지만, 용도와 구조에서 차이가 있다. 

 1. JAR (Java Archive) 파일 

Java 애플리케이션, 라이브러리, 또는 다른 자원들을 ZIP 형식으로 하나의 압축된 아카이브로 패키징한 파일.

 여러 가지 Java 클래스 파일과 리소스를 포함한다

>> 구조

여러 개의  .class 파일,  이미지,  텍스트 파일 등의 리소스를 포함하며,

이 파일들은 META-INF / MANIFEST.MF 파일에 의해 정의된다.

이를 통해 실행 가능한 JAR로 만들면, java -jar yourfile.jar 명령어로 애플리케이션을 실행할 수 있다.

myApp.jar
 ├── META-INF/
 │   └── MANIFEST.MF
 ├── com/
 │   └── example/
 │       ├── MyClass.class
 │       └── AnotherClass.class
 ├── resources/
 │   └── config.properties
 └── lib/
     └── external-library.jar

* META-INF / MANIFEST.MF

JAR 파일의 메타데이터를 포함한 파일.

이 파일에는 JAR의 특성, 의존성, 클래스 경로, 그리고 실행 가능한 메인 클래스를 지정할 수 있다.

예를 들어, Main-Class: com.example.MyClass와 같은 내용을 포함하면 JAR 파일을 실행할 때 이 클래스의 main() 메서드가 실행된다.

 

* .class 파일

Java 컴파일러가 생성한 바이트코드 파일입니다. 이 파일들이 JAR에 포함되어 실행할 수 있는 애플리케이션이 됩니다.

 

* 리소스 파일

이미지, 텍스트 파일, 설정 파일 등 애플리케이션에 필요한 리소스를 포함할 수 있습니다.

 

* 라이브러리

JAR 파일 내에서 다른 라이브러리 JAR 파일을 포함할 수 있습니다. lib/ 디렉토리에 외부 라이브러리를 포함하는 것이 일반적입니다.

 

>> 주 용도

JAR 파일은 주로 단일 Java 프로그램이나 라이브러리를 배포하는 데 사용된다

      * Java 라이브러리
        다른 Java 프로젝트에서 참조할 수 있는 재사용 가능한 코드 패키지.
        예를 들어, Apache Commons 라이브러리(압축, 네트워킹 등 다양한 기능을 제공)는 JAR 파일로 제공된다.

       * 데스크탑 애플리케이션
         독립 실행형 애플리케이션을 만들 때 JAR 파일을 사용한다.
         GUI 기반 프로그램이거나 CLI(Command Line Interface) 프로그램일 수 있다.

  • 장점: 가볍고 단일 파일로 애플리케이션을 배포할 수 있다.
  • 배포 및 실행
    • JAR 파일은 Java 런타임 환경(JRE)이 설치된 시스템에서 java -jar 명령어로 쉽게 실행할 수 있다.
    • 실행 가능한 JAR 파일은 META-INF/MANIFEST.MF 파일에 메인 클래스를 정의하여 배포된다.
      예를 들어:
Main-Class: com.example.MyClass

 

 

 2. WAR (Web ARchive) 파일 

WAR 파일은 웹 애플리케이션을 배포하기 위한 패키지 파일.

주로 웹 서버 또는 서블릿 컨테이너에서 실행되는 웹 애플리케이션에 사용된다.

JSP, 서블릿, HTML, CSS, JavaScript 등의 웹 관련 리소스가 포함된다.

>> 구조

WAR 파일은 JAR 파일과 유사하게 압축된 아카이브 파일이지만, 구조가 웹 애플리케이션에 특화되어 있다.

일반적으로 WEB-INF 디렉터리가 있으며, 이 안에 web.xml (배포 설명자) 파일, 클래스 파일 및 라이브러리 JAR 파일들이 포함된다.

myWebApp.war
 ├── META-INF/
 ├── WEB-INF/
 │   ├── web.xml
 │   ├── lib/
 │   │   └── some-library.jar
 │   ├── classes/
 │   │   └── com/
 │   │       └── example/
 │   │           └── MyServlet.class
 │   └── jsp/
 │       └── index.jsp
 ├── images/
 │   └── logo.png
 ├── css/
 │   └── styles.css
 └── js/
     └── script.js

* WEB-INF/

 WAR 파일에서 가장 중요한 부분.

이 안에 서블릿 클래스 파일, 라이브러리, 설정 파일 등이 위치한다.

특히 web.xml 파일은 애플리케이션의 배포 설정을 정의한다.

* web.xml

배포 설명자.

서블릿의 URL 매핑, 리스너, 필터 등의 설정을 정의힌다.

예를 들어, MyServlet 클래스를 특정 URL 패턴에 매핑할 수 있다

<servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.example.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/myServlet</url-pattern>
</servlet-mapping>

 

* lib/

애플리케이션에서 사용하는 외부 라이브러리 JAR 파일이 포함된다.

모든 의존성 라이브러리를 이 디렉토리에 배치하면 애플리케이션에서 사용할 수 있다.

* classes/

컴파일된 서블릿 클래스 파일이 위치하는 디렉토리.

* JSP, HTML, CSS, JS 등

WAR 파일에는 JSP(Java Server Pages), 정적 웹 리소스(HTML, CSS, JavaScript 등)도 포함될 수 있으며, 이를 통해 웹 애플리케이션을 구성한다.

 

 

 

>> 주 용도

WAR 파일은 웹 애플리케이션을 패키징하는 데 사용되며, 주로 서블릿, JSP, HTML 파일, JavaScript, CSS 등 웹 리소스와 Java 코드, 설정 파일을 모두 포함한다.

  • 애플리케이션 예시: WAR 파일은 웹 기반 Java 애플리케이션 (예: 서블릿, JSP 기반 웹사이트)을 배포할 때 사용됩니다.
  • 서버 배포: WAR 파일은 Tomcat, JBoss, WebLogic 같은 서블릿 컨테이너에 배포하여 실행합니다. 개발자는 war 파일을 서버에 배포하면 서버가 이를 자동으로 해석하고 실행합니다.

 

 WAR와 JAR 파일의 주요 차이점 

사용 목적 Java 애플리케이션 또는 라이브러리를 패키징하고 배포 Java 웹 애플리케이션을 패키징하고 웹 서버에 배포
주로 사용하는 환경 데스크탑 애플리케이션, 라이브러리 웹 서버에서 실행되는 애플리케이션 (서블릿, JSP 포함)
구조 .class 파일, 리소스, META-INF/MANIFEST.MF 파일을 포함 WEB-INF/ 디렉터리, web.xml 배포 설명자, JSP, 서블릿, 리소스 포함
실행 방식 java -jar 명령어로 실행 가능 웹 서버에 배포 후 HTTP 요청을 통해 실행

 

 요약 

  • JAR 파일은 일반적인 Java 애플리케이션이나 라이브러리 파일을 배포할 때 적합하며, 데스크탑 환경에서 주로 사용된다.
  • WAR 파일은 웹 애플리케이션을 배포할 때 필수적이며, 웹 서버와 같은 환경에서 실행되기 때문에 웹 기반 프로젝트에 적합하다.
728x90
반응형