- 기존 컴파일 문제
- C/C++ 컴파일 플랫폼과 타켓 플랫폼이 다르면 실행이 안됨
- 배포 과정에서 문제가 생김
- 해결하기 위해 크로스 컴파일(타켓 플랫폼에 맞게)
- Java
- JVM으로 문제 해결
- 자바 바이트 코드는 타겟 플랫폼에 관계없이 JVM에서 작동
- 타켓 플랫폼이 아니라 JVM에 전적으로 의존
- JVM은 네트워크에 연결된 모든 디바이스에서 작동하는 것이 목적이었음(그때 그시절)
- 하지만 JavaScript에게 그 자리를 뺏김 (인터프리트로 해결)
- JVM
- MethodArea와 Heap은 모든 스레드가 공유
- MethodArea
- Class data가 저장됨(변수, 메소드 등등)
- Heap
- Stack
- 바이트 코드를 이용하여 변수, 값(참조 포함)을 다룬다.
- JVM이 레지스트가 아닌 stack을 쓰는 이유는 디바이스 마다 레지스트는 값이 다르기 때문
- stack은 최소한의 관여가 가능하기 때문