Java의 원칙
<JDK JRE JVM>
JAVA 프로그램을 작성하는데 필요한 개발 키트(Windows,MAC 및 Linux용 버전이 있다)
기본적으로 JAVA 소스 코드, 작성한 코드를 가져와 JRE 및 JVM 이 실행할 수 있는 형식을 변환하는 도구이다.
JDK는 JRE를 포함하고 있고, JRE는 JVM을 포함하고 있어서 JDK를 설치하면 JRE, JVM이 자동으로 다 설치된다.
JDK 구성(임의선정) | 역할 |
---|---|
apt | 어노테이션 툴 |
appletviewer | 웹브라우저 없이 자바 애플릿을 실행하고 디버깅하기 위한 툴 |
javac | 자바 컴파일러 (자바 소스파일 => 바이트코드로 변환) |
java | javac가 만든 클래스 파일을 해석 및 실행 |
jar | 서로 관련있는 클래스 라이브러리들과 리소스를 하나의 파일로 묶어주는 툴 |
jab | 자바 디버깅 툴 |
JRE | Java가 동작하는데 필요한 JVM, 라이브러리 등 다양한 파일들을 포함한다. Java를 실행하려면 JRE를 설치해야함 |
JVM | Java가 실제로 동작하는 가상 환경. 이 JVM덕분에 하나의 Java프로젝트를 개발해도 여러 환경에서 원활하게 실행시킬 수 있음 |
JAVA 프로그램을 실행하는 데 사용되는데 JAVA 와 함께 제공되는 다양한 라이브러리 세트.
JRE 작업에는 JVM이 포함되고 또한 자바 클래스 로더(Java class loader)를 포함하고 있어서 클래스 라이브러리를 통해 작성한 자바 코드를 라이브러리와 결합한 후 JVM에 넘겨 실행시켜서 JVM이 원할하게 잘 작동할 수 있도록 환경을 맞춰주는 역할을 한다.
ClassLoader: '.class' 바이트 코드를 읽어 들여 class 객체를 생성하는 역할을 담당한다
즉, 클래스가 요청될 때 class파일로부터 바이트 코드를 읽어 메모리로 로딩하는 역할
JRE 의 일부이며 추상 컴퓨터 머신이다.
JRE로 실제로 프로그램을 실행할 때 이 가상머신이 실행되는데 C/C++같은 언어는 컴파일 플랫폼과 타겟플랫폼이 다를 경우 프로그램이 동작하지 않는데 우리의 자바 소스파일을 <JAVA 바이트 코드>로 변환하고 JVM으로 실행시키면 어떤 플랫폼이든 다시 컴파일할 필요 없이 실행 시킬 수 있다, 하지만 실행하려면 그 플랫폼에 맞는 JVM 이 설치되어 있어야 한다
- 추상머신:기계의 기능을 알고 있기 때문에 어떠한 입력을 주면 어떠한 출력이 나오는지는 알 수 있다
- 환경, 플랫폼 = 운영체제 + CPU 아키텍처
- 자바 바이트 코드(Java bytecode) 자바 가상 머신이 이해할 수 있는 언어로 변환된 자바 소스 코드를 의미한다.
자바 컴파일러에 의해 변환되는 코드의 명령어 크기가 1바이트라서 자바 바이트 코드라고 불리고 있음.
- Compiler (javac)
인간 코드 -> byteCode 변환(컴퓨터 언어)
<출처>
고랭이네 [Java] JDK? JRE? JVM?
JDK, JRE, JVM: What Are They and What Are Their Differences?
[10분 테코톡] 🎅무민의 JVM Stack & Heap
TCP SHCOOL.com 자바프로그래밍