JVM(Java Virtual Machine)은 Java코드 또는 애플리케이션을 구동하기 위한 런타임 환경을 제공하는 엔진이다. Java바이트 코드를 기계언어로 변환해준다.
자바 이전에 C/C++는 컴파일 플랫폼과 타겟 플랫폼이 다를 경우, 프로그램이 동작하지 않는다.
자바 바이트코드는 타겟 플랫폼에 상관 없이 JVM 위에서 동작한다.(JVM은 타겟 플랫폼에 의존한다)
"Write Once, Run Anywhere" - Sun Microsysthems
한번 작성한 코드(컴파일한 자바코드)를 어떤 플랫폼이든 다시 컴파일 할 필요 없이 실행시킬 수 있다!
위 그림에서와 같이 서로 다른 운영체제라도 JVM만 설치가 되있으면 같은 자바 프로그램이 문제 없이 동작한다.
Person p = new Persion("JESS", "M");
위 코드에서 p 객체는 Stack area에 저장이 되고, new Person("JESS", "M")는 Heap 영역에 저장이 된다.
즉, 참조 변수는 Stack영역에 저장되고 인스턴스의 주소값을 저장 하고 있다.
Execution Engine
Native Method interface
Native Method Libraries
참고문서
https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html
https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_%EA%B0%80%EC%83%81_%EB%A8%B8%EC%8B%A0