JAR와 WAR

niz w·2024년 4월 3일

Spring

목록 보기
4/17

JAR와 WAR는 Java 애플리케이션을 패키징하는 방식!
두 가지가 어떤 차이점이 있고 언제 어떤 걸 사용하는지 알아보고자 한다!


우선!
둘 다 기본적으로 Java의 jar옵션을 이용해 생성된 압축(아카이브) 파일로, 애플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일을 패키징 하는 것이다.

JAR (Java Archive)

  • Java 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일
  • Class (Java 리소스, 속성 파일), 라이브러리 파일을 포함
  • JRE(Java Runtime Environment)만 있어도 실행 가능함 (java -jar 프로젝트명.jar)

    • 장점
      - 독립적인 Java 어플리케이션을 패키징할 수 있고, 실행가능한 jar 파일로 만들어서 개발자가 쉽게 어플리케이션을 실행할 수 있다.
      - 압축된 형식으로 클래스, 리소스, 라이브러리 등을 포함하므로 배포와 전달이 용이하다.
      - java 어플리케이션의 진입점인 main 메소드를 포함하고 있어 JVM에서 직접 실행하기에 별도의 웹 컨테이너나 서버가 필요하지 않다.
    • 단점
      - 개발 시 WAR 파일에 비해 제약사항이 있다. 예를 들어, JSP나 서블릿 컨테이너에 대한 표준 기능을 활용하기 어렵다.
      - 웹 어플리케이션에서 동적인 웹 컨텐츠 생성 및 관리가 제한적이다.


WAR (Web Applicaion Archive)

  • Servlet/Jsp 컨테이너에 배치할 수 있는 웹 어플리케이션 압축파일 포맷
  • 웹 관련 자원을 포함 (JSP, Servlet, JAR, Class, XML, HTML, Javascript)
  • 사전 정의된 구조 사용(WEB-INF, META-INF)
  • 별도의 웹 서버(WEB) or 웹 컨테이너(WAS) 필요
  • JAR 파일의 일종으로, 웹 어플리케이션 전체를 패키징하기 위한 JAR 파일

    • 장점
      - java 패키징에 최적화 되어 있으며, 웹 구성요소인 jsp, 서블릿, 필터, 리스너 등과 웹 어플리케이션 실행을 위한 서블릿 컨테이너에서 필요한 설정 파일, 라이브러리, 리소스 등을 포함하여 한 번에 배포 및 실행을 할 수 있다.
      - 웹 컨테이너를 통해 어플리케이션을 실행하므로 다양한 웹 기능과 서버 환경을 활용할 수 있다.
    • 단점
      - 웹 컨테이너나 서버에 종속적이므로 특정한 웹 컨테이너 환경이 필요하다.
      - 배포 및 전달에 있어서 JAR 파일에 비해 크기가 크고 번거로울 수 있다.





결론

단순히 소스를 형상관리에 업로드하는 개발자로는 이걸 굳이 따지면서까지 작업할 필요가 없다고들 한다... 패키징하는 방법의 차이가 있을 뿐!(그냥 알고 넘어가는 정도로 하자...)
꼭 jsp를 사용하여 화면구성을 한다거나, 외장 was 사용 계획이 있는 게 아니면 (<- war 사용 해야 함) 답은 없다.

🤷‍그래도 Spring Boot에서 가이드하는 표준은 JAR이므로 프로젝트 초기 설정 시 JAR로 선택해서 시작하는 걸로!!!


참고

[devdo.log] JAR vs WAR 배포의 차이
[한발짝 두발짝, 개발짝] JAR WAR 배포 차이점과 장단점

0개의 댓글