1주차 : Java application의 실행 과정
Java application의 실행 과정
자바파일 (.java) -> java compiler -> byte code
byte code -> JVM -> OS 실행
컴파일 하는 방법
javac HelloWorld.java
바이트코드란 무엇인가
JVM 이 이해할 수 있는 언어
자바 코드(.java)를 자바 컴파일러가 바이트 코드(.class)로 만듦
실행하는 방법
java HelloWorld
JVM이란 무엇인가
JVM (Java Virtual Machine) 자바를 실행하기 위한 가상 기계
자바 프로그램 실행 시에 OS 가 프로그램을 이해할 수 있게 해석해 줌
런타임 시에 하드웨어에 맞게 해석함
자바 프로그램이 다양한 OS 위에서 실행 될 수 있게 해줌 -> 자바 프로그램은 OS 맞추어서 따로 개발할 필요없이 한번만 개발하면 프로그램의 변경없이 JVM 이 지원하는 OS들 에서 실행 가능, OS에 독립적
JVM 구성 요소
1. 클래스 로더(class loader) : 런타임에서 데이터 영역에 .class 파일을 로드함
2. 자바 인터프리터(interpreter) : 로드된 클래스를 실행
3. JIT 컴파일러(Just-In-Time compiler) : 네이티브 코드를 캐싱하여 속도 높임
4. 가비지 컬렉터(garbage collector) : 메모리 해제나 폐기를 수행
JIT 컴파일러란 무엇이며 어떻게 동작하는지
JIT (Just In Time)
JVM 안에서 바이트코드를 해석 할 때 기존에 실행한 적이 있는 코드는 캐싱함.
이미 실행한 적이 있는 경우에는 캐싱된 데이터를 가져다 씀으로써 인터프리터의 속도를 올려주는 역할.
JDK와 JRE의 차이
JDK : 자바 개발 도구 (Java Development Kit) , JRE + 개발에 필요한 실행 파일(javac.exe 등)
JRE : 자바 실행 환경 (Java Runtime Enviornment), JVM + 클래스 라이브러리 (Java API)
출처
자바의 정석, 남궁성 지음
medium.com/@ahn428/java-jit-%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC-c7d068e29f45