🖥️ 컴파일
인간이 이해하기 쉬운 언어를 0,1(바이트 코드 == 바이너리 코드 == 기계어)로 변환
컴파일러 : 컴파일을 하는 프로그램
0,1의 조합은 운영체제마다 다름 -> C언어같은 경우 윈도우, 맥, 리눅스 각각 운영체제마다 C언어 컴파일러가 필요
JVM 등장
JAVA의 경우 운영체제에 바로 가는 게 아니라 윈도우 위 JVM에 간다. 따라서 JVM을 거쳐가기 때문에 컴파일러 하나로 OK🙌
즉, JAVA가 알아서 번역해줌
JVM은 똑같은 JAVA 바이트 코드를 OS마다 다르게 해석해주는구나!
💡JVM, JRE, JDK
JVM(자바가상머신, Java Virtual Machine)
- OS별로 존재
- 바이너리 코드를 읽기, 검증, 실행
JRE(자바실행환경, Java Runtime Environment)
- JVM + 자바 프로그램(라이브러리 등)
- JVM 실행환경 구현
JDK(자바개발도구, JAVA Development Kit)
- JRE + 개발을 위한 도구
- 컴파일러, 디버그 도구 등
컴파일을 한 결과물을 JVM이 실행시켜준다 -> 누군가가 컴파일을 해줘야 함 -> 컴파일러의 역할
🧨Point
JAVA는 동일한 컴파일 이후, 적절한 JVM이 0,1을 컴퓨터에게 전달
JDk > JRE > JVM
