-
1. JDK, JVM, JRE 이해하기프로그래밍언어/Java(중급) 2020. 3. 26. 14:45
안녕하세요 현우입니다. 이번 포스팅은 [ JVM, JRE, JDK에 대한 이해와 활용 ] 입니다.
자바 학습에 도움을 주신 백기선 개발자님에게 감사드립니다 :)
https://www.inflearn.com/course/the-java-code-manipulation
JVM (Java Virtual Machine)
특징
- 자바 가상 머신으로 자바 바이트 코드(.class 파일)를 OS에 특화된 코드로 변환(인터프리터와 JIT 컴파일러)하여 실행한다.
- 바이트 코드를 실행하는 표준(JVM 자체는 표준)이자 구현체(특정 밴더가 구현한 JVM)다.
- JVM 스팩: https://docs.oracle.com/javase/specs/jvms/se11/html/
- JVM 밴더: 여러벤더에서 JVM 스팩에만 맞춰서 구현이 가능하다 (오라클, 아마존, Azul, ...)
- 특정 플랫폼에 종속적.
JVM은 특정 os에 종속되지 않고 JVM 플랫폼에 속해있는언어(JAVA, 코틀린...) 등을 개발 할 수 있게 해주는 도구 이다.
- 인터프리터, Jit컴파일러(Just in Time)를 사용하여 native os(mac or Window) 에 맞춰서 머신코드로 변경하고 머신이 이해할수 있는 코드로 실행한다.
- 클래스 읽어들이기, 메모리에 올리기
JRE (Java Runtime Environment): JVM + 라이브러리
- 자바 애플리케이션을 실행할 수 있도록 구성된 배포판.
- JVM과 핵심 라이브러리 및 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일을 가지고 있다.
- 개발 관련 도구는 포함하지 않는다. (그건 JDK에서 제공)
JRE의 경우 컴파일에 사용되는 JAVAC 파일이 들어있지 않다.
JDK (Java Development Kit): JRE + 개발 툴
- JRE + 개발에 필요할 툴
- 소스 코드를 작성할 때 사용하는 자바 언어는 플랫봄에 독릭접
- 오라클은 자바 11부터 JDK만 제공하며 JRE를 따로 제공하지 않는다.
- Write Once Run Anywhere
- After 자바9 모듈시스템의 jlink를 사용하여 jre를 만들 수 있다. https://www.baeldung.com/jlink
- 프로그래밍 언어
- JDK에 들어있는 자바 컴파일러(javac)를 사용하여 바이트코드(.class 파일)로 컴파일 할 수 있다.
- 자바 유료화? 오라클에서 만든 Oracle JDK 11 버전부터 상용으로 사용할 때 유료 나머지는 무료이다.
JVM언어
- 의존성이 타이트하지 않다. 클래스파일이 만들어지거나 Java파일이 만들어 진다면 JVM을 활용할 수 있다.
- JVM기반으로 동작하는 프로그래밍 언어
- 클로저, 그루비, JRuby, Jython, Kotlin, Scala...
reference
- JIT 컴파일러: [https://aboullaite.me/understanding-jit-compiler-just-in-time-compiler/]
- JDK, JRE 그리고 JVM: https://howtodoinjava.com/java/basics/jdk-jre-jvm/]
- [https://en.wikipedia.org/wiki/List_of_JVM_languages]
'프로그래밍언어 > Java(중급)' 카테고리의 다른 글
6. Spring에서 바이트 코드 조작 활용 예 (0) 2020.03.26 5. 바이트코드 조작마술 (0) 2020.03.26 4. 바이트코드 조작 (0) 2020.03.26 3. 클래스 로더 (0) 2020.03.26 2. JVM 구조 (0) 2020.03.26