고민하기

JAR와 WAR의 차이?

pythaac 2021. 8. 22. 20:42

서비스에 맞는 Spring boot 패키징 방식?

  프로젝트 도중 Spring boot를 이용한 서버를 만들려고한다. 이 서버는 API 서버로 배포하여 사용되고, 리소스 서버(DB)를 따로 두어 요청에 맞게 사용자에게 응답을 주는 역할을 하려한다. Spring boot에서는 jar와 war 2가지 방식의 패키징을 지원하는데, 어떤 방식을 사용해야할까?

 

JAR (Java ARchive)

  • Java 어플리케이션이 자바 환경 위에서 바로 동작할 수 있도록 자바 프로젝트를 압축한 파일
  • JRE(Java Runtime Environment)만 있으면 실행 가능
  • 클래스 파일, 라이브러리, 리소스, 설정 파일들(META-INF 등)을 모여서 하나의 어플리케이션/라이브러리로 형성
    • META-INF
      - 자바 패키징 기술인 jar의 일부
      - 자바에서 설정관련 파일을 저장하는 폴더

 

WAR (Web application ARchive)

  • JSP/Servlet WAS 컨테이너 위에서 동작할 수 있는 웹 어플리케이션 압축 파일
  • 별도의 웹 컨테이너(WAS) 필요
  • WAS가 동작하면서 불러올 수 있는 설정 파일(WEB-INF)과 JSP, Servlet, XML, 정적 웹페이지(html) 등 웹 어플리케이션을 구성할 때 필요한 자원들을 포함
    • WEB-INF
      - 웹 어플리케이션의 사전 정의된 디렉터리 구조
      - 중요한 파일들이 노출되지 않도록 만든 폴더

 

Spring boot 빌드시 WAS 내장 여부

  • JAR로 빌드시, tomcat과 같은 WAS가 내장되어 실행
    - 바로 실행이 가능
  • WAR로 빌드시, 별도 WAS가 필요

 

결론

  우선 이를 고민했던 이유는 두 방식의 배포가 어떤 차이를 가져올지 확신이 없어서였는데, 차이가 있다면 WAS의 내장 여부 정도였다. 내장 WAS에 대해 얼마나 신뢰를 하는가에 따라 두 방식이 갈리는 듯 하다. WAS에 대한 커스텀 설정을 할 일이 아직은 없기 때문에 결론적으로 JAR를 이용해서 구축을 해봐야겠다!

 

참조

[1] https://hye0-log.tistory.com/27

 

[Spring Boot]배포 방법 비교 (JAR vs WAR)

스프링 부트의 장점 중 하나는 실행 가능한 JAR (Executable Jar)로 빌드하여 프로젝트를 바로 실행시킬 수 있다는 점이다. 실제로 스프링부트 관련 문서를 보다 보면 "Executable Jar"라는 단어를 많이 볼

hye0-log.tistory.com

[2] https://m.blog.naver.com/whdgml1996/221938516145

 

[JAVA 01] JAR vs WAR, 스프링 그리고 스프링 부트

1. 자바 파일을 배포하는 방법 JAVA를 사용하여 만든 소프트웨어가 배포할 때가 오면 오늘의 주제인 J...

blog.naver.com

[3] https://gocoder.tistory.com/29

 

JAVA | 이론 - WEB-INF, META-INF에 차이

META-INF - 자바 패키징 기술인 jar의 일부 - META-INF폴더는 자바에서 설정관련 파일을 저장하는 폴더 - jar 파일들을 풀어보면 META-INF 폴더 아래 MANIFEST.MF 라는 파일이 있고 사양서 내용이 있다. WEB-INF

gocoder.tistory.com

[4] https://velog.io/@maldaliza/JAR-WAR%EB%9E%80

 

JAR, WAR란?

JAR는 Java Archive의 약자로 자바에서 사용되는 압축 파일의 한 형태로, 작동 방식은 흔히 자료를 압축하는 .zip과 유사..jar는 압축을 따로 해제하지 않아도 JDK(Java Development Kit)에서 접근하여 사용이

velog.io

[5] https://okky.kr/article/589110

 

OKKY | SPRING BOOT REST API 서비스 배포시 jar VS war

위에 자바 선배님이 안계셔서 어쩔수 없이 여기 선배님에게 질문 드립니다. 조사해보니 배포하는 방법이 2가지가 있더군요. 둘이 차이점이 있다면 war 속에 jar들이 있는것이고  jar에 없는 war경

okky.kr

[6] https://groups.google.com/g/ksug/c/A5l7oBC8ZLg?pli=1 

 

META_INF? WEB-INF? 어떤 차이가 있는거죠??

META-INF는 자바 패키징 기술인 jar의 일부입니다. jar는 기본적으로 파일 포맷이 zip과 동일하지만 zip외에 부가적인 규약이 정해져 있고, 그 중 하나가 META-INF 디렉토리와 그 속 몇몇 파일의 포멧과

groups.google.com