Gidhub BE Developer

JAR vs WAR

2019-07-27
goodGid

JAR와 WAR는 압축파일의 한 유형(Format)이다.

배경

  • jar, war 모두 어플리케이션 소스들을 배포할 시에 path 등의 설정으로 인한 이슈를 제거하기 위해 탄생한 압축방식이다.

  • 이 압축방식들은 압축의 해제없이 JDK에서 각 파일들을 접근하여 사용할 수 있도록 설계되었다.


JAR(Java ARchive)

  • jar 압축은 하나의 application 기능이 가능하도록 java 파일 등을 압축하고 지원한다.

  • path 등의 경로를 유지하기 때문에
    배포된 jar 파일을 사용하는 사용자들은 각 파일들에 대한 path 문제에서 벗어날 수 있다.
    ex) ojdbc14.jar, servlet-api.jar 등등


WAR(Web ARchive)

  • war는 자바 기반의 웹 프로젝트의 최종 결과 포맷이다.

  • war는 jar와 달리 웹 어플리케이션(Web Application)을 지원하기 위한 압축방식이다.

  • war는 웹 프로젝트에서 배포를 위한 최소한의 단위이다.

  • WAS마다 배포 방식과 설정이 조금씩 다르지만 기본적으로 war파일에 대한 규격은 동일하다.

  • 웹 어플리케이션을 지원하기 위해서 war 압축방식은 jsp, servlet, gif, html, jar 등을 압축하고 지원한다.

  • war로 올리면 WAS(Web Application Server)가 압축을 해제하여 배포해준다.

  • war는 단독으로 실행이 안되며
    서버컨테이너 WAS에 의해 실행되어야 하므로
    배포에 대한 메타 정보(웹 프로젝트에 대한 설정 정보)가 담겨져 있다.

  • 따라서 배포서술자(DD, Deploy Description)를 의미하는 web.xml이 포함되어 있다.

  • 서버에서는 배포 서술자 정보를 읽어 컨텍스트를 생성한다.

  • 컨텍스트는 기본적으로 war 파일명과 동일한 이름으로 생성되고
    사용자가 웹 디렉터리에 있는 자원에 접근할 수 있게 한다.


JAR vs WAR

  • jar의 경우에는 실행될 클래스(main)를 명시하며 JVM위에서 단독으로 수행이 가능하다.

  • war 파일의 경우에는 단독으로 실행할 수 없고
    서버 컨테이너에 의해서 실행되므로
    배포에 대한 메타 정보가 담겨 있다.

  • 만들어진 목적이 다르다.

    • jar : 자바 클래스 파일들이 주이며, EJB 파일들을 포함한다.

    • war : 웹 어플리케이션에 관련된 파일들을 포함한다. (jsp, servlet 파일들)

클래스 파일을 압축 : jar

웹 어플리케이션을 통째로 압축 : war


사용 이유(jar, war)

  • 평소 압축을 하는 이유는 용량을 줄이며 관리하기 편함을 위해서이다.

  • jar 혹은 war도 같은 이유이다.


압축 파일(.jar, .war) 만들기

  • java를 설치하면 JAVA_HOME(설치 디렉토리의 루트) 하위 bin 폴더에는 여러 실행프로그램들이 존재한다.

  • 그 중 jar.exe 파일이 존재하는데
    바로 이 파일이 JAVA기반의 파일들을 압축하는 데 사용할수 있는 프로그램이다.

  • 따라서 cmd창에서 jar의 다양한 옵션을 활용하여 .jar 혹은 .war파일을 만들 수 있다.


Reference


Index