자바의 모토에 Write Once, Run AnyWhere라는게 있다. 때문에 자바는 어떤 OS에서도 돌아 간다. JVM이 그 역할을 하는데, 자바가 compile을 하면 바이너리 코드가 아닌 바이트 코드로 바뀌는게 이러한 이유다.
JVM은 자바를 돌릴 수 있는 가상 머신으로, 자바를 컴파일한 바이트코드를 실행하는 역할을 한다. JVM은 OS위에 위치 한다.

JVM은 위와 같이 구성되어 있다.
Class Loader : 컴파일된 바이트 코드를 Runtime Data Area로 로딩.
Runtime Data Area : JVM의 메모리로 Methode, Heap, Stack, PC Register, Native Method Stack으로 나뉜다.
Excution Engine : Runtime Data Area에 올라온 바이트 코드를 명령어 단위로 하나씩 실행 시키는 역할을 한다.
한 줄평 : JVM이 없는 언어들은... OS별로 코드 작성하는게 다른가??
참고 -
https://www.youtube.com/watch?v=AWXPnMDZ9I0&ab_channel=%EC%9D%B4%EC%A0%95%EB%A1%9D