Java11 부터는 Jre를 제공하지 않음
Java9부터 모듈 개념이 들어옴
오라클에서 만든 자바11 버전부터는 상용으로 사용할 때 유료 오라클에서 만든 open-jdk는 버전 업그레이드도 되고 무료
JVM에서 구동되는 언어로는
클로저, 그루비, JRuby, Jython, 코틀린, ...
JIT 컴파일러로 반복되는 코드를 모두 네이티브 코드로 바꿔둔다. 그 다음부터 인터프리터는 네이티브 코드로 컴파일된 코드를 바로 사용한다.
로딩, 링크, 초기화 순으로 진행된다.
클래스 로더
ClassFileNotFoundException은 클래스 로드가 못 찾는 것
Verify, Prepare, Resolve(optional)
Static 변수의 값을 할당한다. (static 블럭이 있다면 실행 된다)
$> javap -c -v ${클래스 파일 경로} // -v 애노테이션 정보도 볼 수 있음 Compiled from "CodeManipulationApplication.java" public class com.repia.java.codemanipulation.CodeManipulationApplication { public com.repia.java.codemanipulation.CodeManipulationApplication(); Code: 0: aload_0 1: invokespecial #8 // Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: ldc #1 // class com/repia/java/codemanipulation/CodeManipulationApplication 2: aload_0 3: invokestatic #16 // Method org/springframework/boot/SpringApplication.run:(Ljava/lang/Class;[Ljava/lang/String;)Lorg/springframework/context/ConfigurableA pplicationContext; 6: pop 7: return }
어떻게 동작할까?