c/c++ 는 Compile Platform 과 Target Platform이 다를 경우, 프로그램이 동작하지 않는다.
Target Platform에 맞춰 Compile을 하는 것.
Java bytecode는 Target Platform에 상관 없이 JVM 위에서 동작한다.
JVM은 Target Platform에 의존한다. (Windows용 JVM 등)
Write Once, Run Anywhere
Java Code를 Compile 해서 배포한다면, 어떤 Platfrom 이든 다시 Compile 할 필요 없이 실행 시킬 수 있다. 다만 실행하려면 그 플랫폼에 맞는 JVM이 설치되어 있어야 한다.
자바는 네트워크에 연결된 모든 Device에서 작동하는 것이 목적이었다.
Device 마다 운영체제나 하드웨어가 다르기 때문에, 자연스럽게 Platform에 의존하지 않도록 언어를 설계하였고 그 결과가 Java Bytecode, JVM
아래 사진을 참조.
Compile
Java Source 를 Compiler를 통해 Java Bytecode로 변환시킨다.
Run
Java Bytecode를 JVM 환경에서 구동 시킨다.
https://www.youtube.com/watch?v=UzaGOXKVhwU
https://velog.io/@harang/스터디-1주차-정리-Java의-실행-모델-Java의-Compile-and-Run