반응형
JVM은 하드웨어 및 운영 체제에 독립적인 실행 환경을 제공하며, 컴파일된 코드의 크기를 줄이고, 악성 프로그램으로부터 사용자를 보호하는 역할을 한다. - Oracle Javadoc
JVM이 어떻게 저런걸 가능하게 할까?
C언어의 경우에는 윈도우용 컴파일러, 리눅스용 컴파일러가 각자 컴파일을 진행하여 실행파일을 만들지만 Java의 경우에는 각 환경에 맞는 JVM이 따로 존재하기 때문에 자바 컴파일러(javac)가 번역한 class file을 어느환경에서나 실행이 가능해진다.
여기서 만들어진 byte code는 JVM이 실행할 수 있는 추상적인 명령어 집합이므로 기계어보다 간결하다. CPU 명령어, 레지스터 정보 등 다양한 정보를 포함해야하는 기계어보다 컴파일된 코드의 사이즈는 작아진다.
이 때, class를 읽어올 때 byte code를 검증하고 메모리관리를 JVM이 직접하기 때문에 사용자가 메모리를 해제하는 과정에서 발생할 수 있는 보안문제를 막을 수 있다. 그 외에도 JVM내 보안 관리자(Java Security Manager)가 있어서 내부적으로 작업을 제한하는게 가능하다.
같이 공부하면 좋은 내용 (관련 내용 작성 예정)
- JVM GC
- JVM 초기화 과정(Loading, Linking, Initialization)
참조
https://docs.oracle.com/javase/specs/
https://steady-snail.tistory.com/67
반응형
'JAVA' 카테고리의 다른 글
JVM 메모리 구조 (0) | 2025.04.19 |
---|---|
JVM GC(Garbage Collection) (0) | 2025.04.19 |
JVM 초기화 과정(Loading, Linking, Initialization) (0) | 2025.03.13 |
String vs StringBuilder vs StringBuffer (0) | 2025.03.12 |
자바 POJO (Plain Old Java Object) (1) | 2025.03.11 |