공부하는 중이라 부정확하고 부족한 지식일 수있습니다! 댓글로 지적 부탁드립니다!
JVM,JRE,JDK
- 자바 가상 머신(
JVM
, Java Virtual Machine)
- 자바 런타임 환경(
JRE
, Java Runtime Environment)
- 자바 개발 키트(
JDK
, Java Development Kit)
Java 프로그램 실행
JVM
- Java 는 OS에
독립적
OS에 독립적 실행
이 되기 위해선 OS 위에서 Java 를 실행시킬 무언가가 필요 = JVM
JRE
- 컴파일 된 Java 프로그램을
실행
하는데 필요한 패키지
JRE
은 JVM
+ 자바 클래서 라이브러리(Java Class Library)
등으로 구성
Java 프로그램 개발
- Java 프로그램 실행 & 개발 = JDK(= JVM + JRE)
JVM
- Java를 실행하고 개발하기 위해 필요한 모든 기능을 갖춘 Java용 소프트웨어 개발 키트(SDK, Software Development Kit)
JDK = JVM + JRE
- 컴파일러, 디버그 도구 등이 포함

컴파일
-
자바 소스 파일
프로그래밍 언어로 작성된 파일
확장자 명은 .java
-
컴파일
소스 파일을 컴퓨터가 이해할 수 있는 기계어
로 만드는 과정

-
클래스 파일(바이트코드 파일)
소스 파일을 컴파일해도 바로 기계어로 변환 x
컴파일된 소스 파일은 JVM이 인식할 수 있는 클래스 파일
(바이트코드 파일)로 변환
확장자 명은 .class
-
기계어 변환
이후 클래스 파일을 JVM
이 기계어
로 변환하여 컴퓨터가 Java 소스 파일을 해석
Java 플랫폼의 독립성(Independency)
- C/C++ 플랫폼
종속적(Dependency)
- 예를 들어, 리눅스 OS + 인텔 CPU를 가진 컴퓨터에서 개발
1. 리눅스 OS + 인텔 CPU 컴퓨터에서 실행 o
2. MAC OS 컴퓨터에서 실행 x
3. Windows OS + 인텔 CPU 컴퓨터에서 실행 x
4. 리눅스 OS + 임베디드 컴퓨터에서 실행 x
- 소스를 조금씩 바꿔줘야 하는 경우 ↑
- 소스를 안 바꾸는 경우라도 다른 플랫폼에서 사용하려면 새로 컴파일 해야 함
- Java 플랫폼
독립적(Independency)
- 예를 들어, 리눅스 OS + 인텔 CPU를 가진 컴퓨터에서 개발
1. 리눅스 OS + 인텔 CPU 컴퓨터에서 실행 o
2. MAC OS 컴퓨터에서 실행 0
3. Windows OS + 인텔 CPU 컴퓨터에서 실행 0
4. 리눅스 OS + 임베디드 컴퓨터에서 실행 0
- JVM이 설치된 모든 컴퓨터에서 실행 가능