C/C++의 경우
컴파일 플랫폼과 타겟 플랫폼이 다를 경우, 프로그램이 동작하지 않는다.
개발시에는 문제되지 않는다.
문제는 개발이 아닌 배포할 때 문제가 된다.
이를 해결하기 위해선 타겟 플랫폼에 맞춰 컴파일을 한다. 이를 '크로스 컴파일(Cross Compile)' 이라 한다.
JVM 으로 문제를 해결
자바 바이트코드는 타겟 플랫폼에 상관 없이 JVM위에서 동작
JVM은 타겟 플랫폼에 의존
Write Once, Run Anywhere" - Sun Microsysyems
네가 짠 자바 코드를 컴파일해서 배포하면, 어떤 플랫폼이든 다시 컴파일할 필요 없이 실행시킬 수 있어!
하지만 실행하려면 그 플랫폼에 맞는 JVM 이 설치되어 있어야 해!
자바는 네트워크에 연결된 모든 디바이스에서 작동하는 것이 목적
디바이스마다 운영체제나 하드웨어가 다르기 때문에, 자연스럽게 플랫폼에 의존하지 않도록 언어를 설계했고,
그 결과가 Java Bytecode, JVM
Method Area
클래스 로더가 클래스 파일을 읽어오면, 클래스 정보를 파싱해서 Method Area 에 저장
Heap
프로그램을 실행하면서 생성한 모든 객체(인스턴스)를 Heap 에 저장
Stack
스택은 스레드 별로 1개만 존재하고, 스택 프레임은 메서드가 호출될 대마다 생성된다.
메서드 실행이 끝나면 스택 프레임은 pop 되어 스택에서 제거된다.
Native method stack
Java Bytecode 가 아닌 다른 언어로 작성된 파일을 컴파일할 때 사용되는 메서드이다.
'우아한 테크톡' 카테고리의 다른 글
CI/CD와 무중단 배포 (0) | 2023.01.13 |
---|---|
Servlet vs Spring (0) | 2023.01.12 |
웹 소켓 (Web Socket) (0) | 2023.01.11 |
AOP와 Spring AOP (0) | 2023.01.11 |
Spring과 Spring Boot의 차이 (0) | 2023.01.11 |
댓글