Java | war, jar 등등!

와르르르 자르르르

자바 배포 파일 형식에 대해 알아보자.

배포한다는 건 우리가 열심히 만든 프로젝트가 있다. 유틸 프로젝트라고 가정하자. 타프로젝트에서 이를 어떻게 가져다 쓸 것인가? 쉽게는, 유틸 프로젝트의 전체 파일들을 메인 프로젝트에 옮기면 해당 기능들을 사용할 수 있겠지. 그러나 우리는 유틸 프로젝트 내부 내용을 바꿀 이유가 없고 내부 소스코드를 알 필요도 없다. 기능을 ‘사용’할 수만 있으면 되므로 배포용으로 파일을 전환해서 메인 프로젝트에 import하면 된다.

java 프로젝트들 또한 압축(아카이브) 형태로 다른 사람이 쓸 수 있도록 배포한다. 관련 파일(리소스, 속성파일 등)이 패키징된다.

웹 개발에서는 아래와 같은 형식의 자바 파일들을 볼 수 있다. maven 등을 통해 내려받는 외부 라이브러리들은 class 파일들이 묶인 jar파일로 구성되어 있다. = jar파일 안에 있는 소스코드를 볼 수 있나?

  • JAR(Java Archive): java 리소스와 속성 파일, 라이브러리 파일 등 포함 자바 프로젝트를 압축한 파일, Window의 zip 과 동일한 구조 jre만 있으면 실행 가능하다. (.class로 이미 컴파일 되어 들어가 있는건가?)

  • WAR(Web Application Archive): 서블릿/jsp 컨테이너에 배치할 수 있는 웹용 압축파일 포맷 jsp, 서블릿, jar, class, xml, js 등 서블릿 context 관련 파일들로 패키징 되어 있음 WEB-INF 및 META-INF 디렉토리로 사전 정의된 구조를 사용 war 파일 실행을 위해서는 웹서버 또는 was가 필요하다.

  • 톰캣(WAS) 에 WAR 넣어 배포해보기

  • node로 웹 개발했을 배포 어떻게 하였는가? 프로젝트 소스파일 그대로 서버 컴퓨터에 넣고 빌드 및 실행하는 스크립트를 짰던 것 같다,,? 좀 더 편하게 하려면: 수정된 버전들을 도커 이미지로 만들어서, 서버 컴퓨터에서 도커 이미지 받아서 똑같이 스크립트로 실행, 혹은 pm2 같은 모듈을 추가적으로 사용.

Ref.

  • https://ifuwanna.tistory.com/224