WAR / JAR

bearMin·2024년 7월 29일

들어가면서

이번주 블로그를 포스팅하면서 많이 나온 단어들이다. WAR와 JAR..? 읽는 방법도 다양한 이 두 단어는 무엇인데 많이 나오고 무엇이 다른지 한번 알아보자!


WAR란?

정의는?

Web ARchive의 약자로 웹 애플리케이션을 패키징하기 위한 파일 포맷이다. Java Class와 JSP, Servlet, XML, 정적 웹 리소스(ex. HTML, CSS, JavaScript) 등 웹 애플리케이션 구성 요소를 포함한다.


이 WAR는 웹 애플리케이션을 하나의 단위로 패키징하고 배포하기 위한 목적으로 사용하는데, 주로 Java 기반의 웹 애플리케이션 서버나 Servlet Container 등에서 실행되는 웹 애플리케이션에 사용이 된다. 이때 확장자는 .war 가 된다!


장점은?

WAR의 장점에는 무엇이 있을까?

  1. 한번에 배포 및 실행 가능
    : Java 웹 어플리케이션을 패키징하는데 최적화가 되어있으며, 웹 구성요소인 JSP, Servlet 등과 웹 애플리케이션을 실행하기 위한 Servlet Container에서 필요한 설정 파일, 라이브러리, 리소스 등을 포함하여 한번에 배포와 실행이 가능하다.
  1. 다양한 웹 기능과 서버 환경 활용
    : Web Container(Servlet Container)를 통해 애플리케이션을 실행하므로 다양한 웹 기능과 서버 환경을 활용할 수 있다.

단점은?

그렇다면 단점은 무엇이 있을까?

  1. 배포 및 전달에 있어서 JAR 파일에 비해 크기가 크고 번거로울 수 있다.

  2. Web Container나 Server에 종속적이기 때문에 특정한 Web Container 환경이 필요하다.


JAR란?

정의는?

Java ARchive의 약자로 여러 개의 Java Class. 메타 데이터, 리소스 파일 등을 하나의 파일로 묶은 아카이브 파일이다.


이 JAR 파일은 Java Class와 관련 리소스를 패키징하여 재사용 가능한 라이브러리나 실행 가능한 애플리케이션을 생성하는 것을 목적으로 한다. JRE만 있어도 실행이 가능하며 실제로 zip 파일 포맷으로 이루어진 압축 파일이다. 이때 확장자는 .jar가 된다!


장점은?

JAR의 장점에는 무엇이 있을까?

  1. 독립적인 Java 애플리케이션을 패키징할 수 있고, 실행 가능한 JAR 파일로 만들어서 개발자가 쉽게 애플리케이션을 실행할 수 있다.

  2. 압축된 형식으로 Class, 리소스, 라이브러리 등을 포함하므로 배포와 전달이 용이하다.

  3. Java 애플리케이션의 진입점인 main 메소드를 포함하고 있어 JVM에서 직접 실행하기 때문에 별도의 Web Container나 Server가 필요하지 않다.


단점은?

그렇다면 단점에는 무엇이 있을까?

  1. 웹 애플리케이션을 개발할 때는 WAR 파일에 비해 제약사항이 있다.
    ex) JSP나 Servlet Container에 대한 표준기능 활용이 어려움

  2. 웹 애플리케이션에서 동적인 웹 컨텐츠 생성 및 관리가 제한적이다.


둘은 어떤 차이가 있을까?

JAR 파일과 독립적인 Java 애플리케이션을 패키징하는 데 적합하며, 실행 가능한 JAR 파일로 개발자가 쉽게 실행할 수 있다.

그에 반해 WAR 파일은 Java 웹 애플리케이션을 패키징하고 실행하는데 적합하며, Web Container를 통해 다양한 웹 기능을 활용할 수 있다.


즉, JAR 파일은 독립적인 실행 가능한 애플리케이션을 구성하는 것을 목표로 하고, WAR 파일은 웹 환경에서 실행되는 애플리케이션을 구성하는 것을 목표로 한다!


뭘 선택해야할까?

결국 WAR와 JAR 중 어떤 파일을 사용해야할지 선택을 해야한다. 각각의 특징들이 있기 때문에 그 특징에 맞춰서 사용을 해야한다.

그렇다면 고려해야할 요소들에 무엇이 있는지 하나씩 살펴보자!


고려해야할 요소

  1. 프로젝트 유형
    : 프로젝트가 독립적인 Java 애플리케이션이라면 JAR 파일이 적합하고, 웹 애플리케이션이라면 WAR 파일이 적합하다.

  2. 배포 환경
    : 독립적인 애플리케이션을 서버나 Web Container 없이 실행을 해야한다면 JAR 파일이 적합하고, 특정한 Web Container(ex. Tomcat, Jetty) 에서 호스팅을 해야한다면 WAR 파일이 적합하다.

  3. 기능 요구사항
    : JAR 파일은 일반적인 Java 애플리케이션에 적합하며, 독립 실행 가능한 형태로 개발자가 애플리케이션을 실행하고 테스트할 수 있다.
    WAR 파일은 웹 애플리케이션의 구성 요소(Servlet, JSP 등)을 포함하므로, 웹 애플리케이션 개발에 필요한 기능을 활용할 수 있다.

  4. 확장성
    JAR 파일은 독립적인 애플리케이션을 패키징하므로 특정한 환경에 종속되지 않고 단일 기능을 수행하는 애플리케이션을 개발하는데 적합하다.
    WAR 파일은 웹 애플리케이션의 구성 요소를 통합하여 패키징하기 때문에 Web Container의 다양한 기능과 라이브러리를 활용할 수 있어 확장성이 높다.

  5. 개발 환경
    : 일부 개발 툴이나 프레임워크는 특정한 파일 형식을 선호하거나 지원할 수 있기 때문에 개발환경의 제한사항을 확인하여 선택하는 것이 좋다.


Spring Boot에서는?

그렇다면 Spring Boot에서는 무엇을 사용하는 것이 좋을까?


Spring Boot 프로젝트를 생성할 때 JAR 또는 WAR로 패키징 방식을 선택할 수 있다. 하지만 Default로는 JAR가 선택이 되어있다. 그 이유는 Web Container를 따로 사용하지 않고 내장된 WAS를 사용하여 JAR 파일을 실행함으로써 애플리케이션을 제작, 배포할 수 있기 때문이다.


따라서 JSP로 화면을 구성하거나 외부 WAS를 사용해야하는 경우에 WAR 파일로 패키징을 하고 이러한 조건이 아니라면 JAR 파일로 패키징하는 것이 좋다!


정리하자면

WAR 파일은 웹 애플리케이션 배포 아카이브로 웹 애플리케이션을 서버에 배포하기 위한 표준 파일 형식이다!

JAR 파일은 Java 아카이브 파일로 Java 애플리케이션이나 라이브러리를 배포하기 위한 파일 형식이다!

profile
소소한 공부기록

0개의 댓글