1. JAR와 WAR의 차이점
JAR SpringBoot의 내장톰켓 vs. WAR 외장톰켓, jsp 이용시
Maven 등을 통해 내려받는 라이브러리들(External Libraries)은 CLASS 파일들이 묶인 jar파일로 구성되어 있는 것을 확인할 수 있다.
그리고 서비스 배포시에는 프로젝트를 WAR 포맷으로 묶어서 /webapps 등의 지정된 경로에 넣고 Tomcat 등의 웹 컨테이너(Web Contaioner)를 이용하여 deploy하는 식으로 서비스를 많이 올리곤 한다.
JAR 과 WAR
https://ifuwanna.tistory.com/224
* 스프링부트에서의 JAR와 WAR
스프링부트 프로젝트를 새로 생성할 때, JAR(Java Archive) 또는 WAR(Web Application Archive) 로 패키징 방식을 선택할 수 있다.
JAR는 class 및 설정 파일들을 압축해서 만들어진 하나의 어플리케이션 혹은 라이브러리다.
WAR는 JSP나 Servlet 등 WAS 컨테이너 위에서 동작하게끔 빌드된 형태이다. 웹 어플리케이션을 어떻게 설정할 지에 대한 정의가 있는 web.xml 파일을 포함( 반드시는 아님 Web Application Initailizer로 대체 가능하다.)
JAR파일에는 WAS가 내장되어 있다.( embedded tomcat을 jar에 내장해서, jar파일로도 빌드가 가능하다.)
따라서 기존 톰켓과 같은 컨테이너를 이용해야 했던 스프링보다 훨씬 간단하게 어플리케이션을 제작/배포할 수 있는 것입니다. 하지만 필요에 따라 외부 WAS를 이용해야할 경우도 생기는데, 이때는 WAR 파일로 패키징을 해야한다.
※ SpringBoot에서 War 로 배포하는 법 : https://prde.tistory.com/330
(출처 : https://mongsil1025.github.io/til/server/warjar/)
https://programmer93.tistory.com/40
https://hye0-log.tistory.com/27
2. JVM, JDK, JRE의 차이점
https://ko.strephonsays.com/what-is-the-difference-between-jdk-and-jre
# 컴파일러가 컴파일하고 JVM이 읽어서 OS에게 명령~
1) Java 컴파일러 : java 프로그램을 바이트코드라는 중간 코드로 변환 ->
2) JVM : Java Virtual Machine 으로 바이트 코드를 기계어 코드로 변환하는 추상 기계
( JVM은 플랫폼에 의존적이다. 즉 리눅스의 JVM과 윈도우의 JVM은 다르다. 단, 컴파일된 바이너리 코드는 어떤 JVM에서 도 동작시킬 수 있다. )
3) 소스코드는 CPU가 이해할 수 없고, 프로그래머만 이해 가능 ( Java Compiler가 소스코드 -> 바이트코드로 변환
JVM이 바이트 코드 기계어 코드로 변환 따라서 CPU가 프로그램의 주어진 명령에 따라 작업 실행
4) JRE : 자바 런타임 환경으로 JVM, Java 클래스 라이브러리 및 Java 응용 프로그램을 실행하는데 필요한 기타 파일의 조합이다. 따라서 JRE를 설치하면 Java 프로그램만 실행할 수 있다.(프로그램 개발은 불가능)
5) JDK : 자바 개발 킷트 : JRE + 기타 개발도구(컴파일러(javac), 아카이버(jar), 문서생성기(javadoc))로 구성됨.
https://m.blog.naver.com/duqrlwjddns1/221770110714
'Back-end > Java Language' 카테고리의 다른 글
Exception Handling (0) | 2023.01.01 |
---|---|
super()와 super (0) | 2022.12.11 |
직렬화(Serialization) (0) | 2022.10.12 |
for 문 자세히 알기 (0) | 2022.03.20 |
Java heap, stack (0) | 2022.03.18 |