시스템 메모리를 관리하면서 자바 기반 애플리케이션을 위해 이식 가능한 실행 환경을 제공하는 것이다. 즉, 다른 프로그램을 실행시키는 것을 목적으로 하는 프로그램을 말한다. JVM은 2가지 기능을 수행하는데, 1. 자바 프로그램이 어느 기기 또는 어느 운영체제 상에서도 실행될 수 있게 하는 것("한 번 작성해, 모든 곳에서 실행")과 2. 프로그램 메모리를 관리하고 최적화하는 것(자동 메모리 관리)을 담당한다.
기술적으로 JVM은 코드를 실행하고 해당 코드에 대해 런타임 환경을 제공하는 소프트웨어 프로그램에 대한 사양(Specification)이라고 하나, 일반적으로는 자바 프로그램을 실행하는 방법이라 말한다. JVM의 설정을 구성한 다음 설정사항에 따라 실행 중에 프로그램 리소스를 관리하는 것으로, 개발자들이 말하는 JVM은 대개 어떤 기기 상에서 실행되고 있는 프로세스, 특히 자바 앱에 대한 리소스를 대표하고 통제하는 서버를 지칭한다.
간단하게 말하면 자바 애플리케이션을 클래스 로더를 통해 읽어 들여, 자바 API와 함께 실행하는 것이다.
자바 애플리케이션을 클래스 로더를 통해 읽어 들여, 자바 API와 함께 실행한다
JVM의 과정은 다음과 같다. 자바 컴파일러가(javac) 자바 소스 코드를(.java) 컴파일 하면(읽으면) 바이트코드가 포함된 클래스 파일로(.class) 변환한다. 이때 만들어진 Class 파일들을 클래스 로더가 JVM으로 로딩한다. 로딩된 클래스 파일은 execution engine을 통해 해석되어 Runtime Data Area에 배치된 채 실질적인 수행이 이루어진다. 이 과정에서 JVM은 필요에 따라 GC 작업을 수행한다.
따라서 자바 소스를 컴파일 하는 방법은 자바 컴파일러(Java compiler)가 자바 소스 코드(자바로 작성된)를 자바 가상 머신이 이해할 수 있는 자바 바이트 코드로 변환하는 것을 말한다. 자바 컴파일러는 자바를 설치하면 JAVAC.exe라는 실행 파일 형태로 설치된다.
Reference:
https://aljjabaegi.tistory.com/387
https://velog.io/@dnjscksdn98/Java-What-is-JVM
https://www.itworld.co.kr/news/110837
https://www.itworld.co.kr/news/109008
https://asfirstalways.tistory.com/158
https://sas-study.tistory.com/262
http://tcpschool.com/java/java_intro_programming
*자바 API
https://bvc12.tistory.com/133