스프링부트 ( Spring Boot ) 의 배포파일 중 jar 와 war 의 차이는 내장 WAS 의 존재유무에 있다. 배포 파일을 만들 시 jar 의 경우 WAS 인 아파치 톰캣이 포함되어 배포되는 반면, war 의 경우 WAS 에서 실행될 필수적인 파일만 배포하게 된다. 그렇기에 jar 의 경우 자바가 설치된 곳에서 독립적으로 실행할 수 있지만, war 의 경우 WAS 가 설치된 곳에서만 실행이 가능하다.
spring boot 배포 파일 jar war 차이
스프링부트 ( spring boot ) 를 공부하다보면 프로젝트를 생성하고 배포를 위한 파일을 생성한다.
스프링부트로 만들 수 있는 배포파일은 jar 와 war 가 있다.
이 둘의 차이는 WAS ( Web Application Server ) 의 포함유무에 따라 다르고, 실행방법도 차이가 있다.
스프링부트로 프로젝트를 생성할 때 Gradle 또는 Maven 을 선택하지만 배포시 jar 또는 war 로 배포가 가능하다.
배포 파일이란
배포 파일이 무엇인지를 먼저 살펴보자.
배포 파일은 만들어진 프로그램을 다른 곳에서 사용할 수 있도록 하는 용도로 사용된다.
프로그램을 설치하는 형태가 될 수도 있고, 그냥 실행파일이 될 수도 있다.
웹의 경우 웹서버인 WAS 에서 실행되는 형태의 파일이 될 수 있다.
스프링부트 ( Spring Boot )는 웹서버인 WAS ( Web Application Server ) 에서 실행가능한 형태인 배포 파일을 jar 또는 war 로 만들 수 있다.
jar 와 war 차이
먼저 배포 파일인 jar 와 war 의 단어부터 보자.
jar 는 Java Archive , war 는 Web Application Archive 의 축약어이다.
여기서 Archive 의 뜻을 찾아보면 기록물 또는 저장소와 같은 의미를 가진다.
그렇다면 추론해 볼 수 있는 것은 jar 는 자바 기반이며, war 는 웹서버 기반임을 알 수 있다.
굳이, 단어의 차이를 찾아보지 않아도 배포되고 실행되는 방법을 보더라도 차이는 확연이 알 수 있다.
이렇게 봐도 난해할 수 있는데 좀 더 구체적인 차이는 웹서버인 WAS ( Web Application Server ) 의 포함유무에 있다.
- jar 의 경우
내장 톰캣이 함께 배포 파일로 만들어 지기에 JRE 가 설치된 곳이라면 독립적으로 실행이 가능하다. - war 의 경우
WAS 에서 실행되는 필수적인 파일만 배포되기 때문에 WAS가 설치된 곳에서만 실행이 가능하다.
즉, jar 는 독립적 실행이 가능하지만 war 는 WAS 가 있는 곳에서만 실행이 가능하다.
실행 방법
스프링부트 ( Spring Boot ) 의 배포파일인 jar 와 war 파일은 각각 확장자가 jar, war 로 되어 있다.
개발자들이 사용하는 인텔리제이 ( intelliJ ) 개발툴에서도 jar 와 war 로 된 배포파일을 구성할 수 있다.
위에서 언급했듯 jar 는 독립적이며, war 는 WAS 에 의존적인 점에서 차이가 있다.
그렇기 때문에 실행하는 방법은 다르다.
- jar 의 경우
자바 실행명령어를 이용하여 jar 배포 파일 실행 가능
java -jar jar-파일명.jar - war 의 경우
WAS 인 톰캣이 설치된 곳에 파일을 복사하고 붙여넣기 한 후 톰캣을 재실행하면 된다.
댓글
댓글 쓰기