ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [스프링] jar, war 차이점
    스프링 2023. 2. 1. 14:19
    728x90

    Jar file

    JAR = Java Archieve 라는 의미이다.

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

     

    Jar file structure

    jar file structure

    1. BOOT-INF

    : 개발자가 직접 작성한 클래스 파일들(classes)과, 의존성 주입을 통한 jar 파일(lib)들로 구성되어 있다.

     

     

    2. META-INF

    프로젝트 매니페스트 파일(MANIFEST.MF)을 포함하는 폴더이다. 매니페스트 파일은 파일 그룹을 위한 메타데이터(이름, 버전 번호, 라이선스, 프로그램의 구성 등)를 포함하는 파일이다.

     

     

    3. ORG

    : org 폴더 안에는 위에서 설명한 Springboot loader classes 모듈이 저장되어 있다.

     

     

    스프링 부트에 Jar 를 사용하면 /resources/static/ 위치에 index.html 파일을 두면 Welcome 페이지로 처리해준다.
    Jar 를 사용하면 webapp 경로를 사용할 수 없다. 정적 리소스도 클래스 경로에 함께 포함해야 한다.

     

     

     

     

     

    War file

    War = Web Application Archive

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

     

    War file structure

    War file structure

    JAR File과의 차이점은 BOOT-INF 대신 WEB-INF가 있다는 것인데, 웹 애플리케이션의 사전 정의된 구조를 따르기 위한 것으로 보인다.

     

    1. WEB-INF

    : 개발자가 직접 입력한 class와 jar 파일, JSP 일 경우 view 파일들까지 포함되어 있는 디렉터리 이다. -> 외장 WAS 나 JSP를 사용할 일이 있다면 WAR를 이용하여 배포해야 한다.

     

     

    2. META-INF

    : JAR File과 동일하게 MANIFEST.MF 파일을 확인할 수 있다

     

     

     

    결론

    이미지

    - War 안에 Jar가 있는 것 처럼 war는 실행하기 위한 모든 파일을 묶고 있다고 생각 하면 된다

    - 외장 WAS 나 JSP를 사용할 일이 있다면 WAR를 이용하여 배포해야 한다.

    - Sprinag boot에서 가이드하는 표준은 JAR이니까 JAR를 사용하여 서비스하는 것도 괜찮은 선택같다

     

    참고

    https://wonin.tistory.com/498

    https://hye0-log.tistory.com/27

    '스프링' 카테고리의 다른 글

    [스프링] 아키텍쳐  (0) 2023.10.10
    [스프링] IoC, DI  (0) 2023.10.04
    [스프링] Loging 로깅  (0) 2023.02.01
    [스프링] JDK17사용시에 주의할 점  (0) 2023.01.27
    [스프링] Gradle, Maven 차이점  (0) 2023.01.07
Designed by Tistory.