글의 목적
프로젝트를 세팅하며 확실하지 못한 개념들에 대해 정리하고 넘어가기
JRE(Java Runtime Environment)란?
JRE는 자바 실행 환경(Java Runtime Environment)의 약자로 자바로 만들어진 프로그램을 실행시키는데 필요한 라이브러리들과 각종 API, 그리고 자바 가상 머신 (JVM)이 포함되어 있다.
JRE는 자바로 "개발(쓰기)은 안되고 실행(읽기)만 된다"라고 생각하면 된다.
JDK(Java Development Kit)란?
JDK는 자바 개발키트(Java Development Kit)의 약자로 이름 그대로 개발자들이 자바로 개발하는 데 사용됩니다. JDK안에는 개발 시 필요한 라이브러리들과 javac, javadoc 등의 개발 도구들을 포함되어 있고 개발을 하려면 당연히 실행도 시켜줘야 하기 때문에 JRE (Java Runtime Environment)도 함께 포함되어 있습니다.
javac : 자바 컴파일러로 자바 소스를 바이트 코드로 변환
java : 자바 프로그램 실행기 → 자바 가상 기계를 작동시켜 자바 프로그램 실행
javadoc : 자바 소스로부터 HTML 형식의 API 도큐먼트 생성
JDK 버전 표기
-
Java SE(Java Standard Edition) : 가장 기본이 되는 표준 에디션의 자바 플랫폼으로 자바 언어의 핵심 기능을 제공
-
Java EE(Java Enterprise Edition) : 대규모 기업용 에디션. SE확장판(대형 네트워크환경 프로그램 개발시)
-
Java ME(Java Micro Edition) : 피쳐폰, PDA폰, 셉톱박스, 프린터와 같은 작은 임베디드 기기들 같은 작은 기기를 다루는데 이용하는 에디션
-
JavaFX : 가볍고 예쁜 그래픽 사용자 인터페이스(GUI)를 제공하는 에디션
결론 : JAVA 11이라 하는것은 결국 JDK(Java SE)의 버전을 의미한다고 볼 수 있다.
JAR vs WAR

JAR
- 정의: 자바프로젝트 압축 파일포맷(Java Archive)
- 특징: 자바 클래스 파일과 클래스가 이용하는 관련 리소스 및 메타 데이터를 모아서 배포하기 위한 소프트웨어 패키지 파일포맷이다. 원하는 구조로 구성 가능하다.
- 실행환경: JRE(Java Runtime Environment)만 가지고도 실행 가능하다.
WAR
- 정의: 웹 어플리케이션 압축 파일포맷(Web application Archive)
- 특징: Servlet/JSP 컨테이너에 배치할 수 있는 웹 어플리케이션 압축 파일 포맷이다. JSP, Servlet, Class, XML, HTML, Javascript 및 웹 애플리케이션을 함께 이루는 자원들을 모아 배포하는 데 사용된다. 즉, 웹 관련된 자원들만 포함하고 있어 웹 애플리케이션의 간편한 배포를 도와준다. WEB-INF, META-INF구조를 따라야한다.
- 실행환경: 웹서버나 WAS가 있어야 실행 가능하다.
JAR vs WAR 사용 고려
- JSP 파일을 사용한다면 JAR가 아닌 WAR를 사용해야 한다: JSP는 웹 애플리케이션에 사용되는 기술이기 때문에, 웹 애플리케이션을 포장하는 WAR(Web Application Resource or Web application ARchive) 파일 형식을 사용해야 한다.
- 외장 WAS를 사용하는 경우에는 WAR 파일을, 내장 WAS를 사용하는 경우 JAR 파일을 사용한다: 외장 WAS(Web Application Server)는 서버와 별도로 설치되는 WAS로, 이 경우에는 WAR 파일을 사용해야 한다. 반면에 내장 WAS는 애플리케이션에 포함되는 WAS로, 이 경우에는 JAR(Java ARchive) 파일을 사용한다.
- 스프링 부트의 장점 중 하나는 'JAR 파일로 간단하게 배포 가능하다': 스프링 부트는 웹 서버인 톰캣을 JAR 파일에 내장하기 때문에, 별도의 웹 서버 설치 없이 JAR 파일 하나로 애플리케이션을 빌드하고 배포할 수 있다.
- 스프링 부트를 JAR 파일로 빌드, 배포할 때는 JDK만 설치하면 되지만 스프링은 WAR 파일로 빌드, 배포하기 때문에 웹 서버인 톰캣도 설치해야 한다: 스프링 부트는 내장 웹 서버를 가지고 있기 때문에, 애플리케이션을 실행하기 위해 JDK만 설치하면 됩니다. 하지만 스프링은 별도의 웹 서버가 필요하므로, 애플리케이션을 배포하려면 웹 서버인 톰캣을 설치해야 한다.
추가)
내장톰캣을 사용하는 스프링부트 애플리케이션 실행
- build된 스프링부트 애플리케이션 jar, war 를 java 명령어로 실행한다.
외장톰캣을 사용하는 스프링 애플리케이션 실행
- tomcat을 설치한다.
- tomcat 설정 파일을 구성한다.
- tomcat webapp 디렉토리에 build된 스프링 애플리케이션 war 파일을 포함시켜준다.
- tomcat을 실행해준다.