Java 바이트코드는 JVM이 해석하는 명령 형식이다. 일반적인 Java 컴파일 결과는 명령과 타입·메서드 정보를 담은 클래스 파일이다.
Java 실행과 API |
|---|
JVM · javac · Java 바이트코드 · Java 가비지 컬렉션 · Java 제네릭 |
Java 인터페이스 · Java 예외 처리 · Java Stream API · Java Optional · Java 리플렉션 |
원리
피연산자 스택과 지역 변수 슬롯을 사용하는 명령들이 계산과 분기, 호출을 표현한다. 실제 기계어로 실행하는 방법은 JVM 구현이 결정한다.
예시
덧셈과 함수 호출로 작성한 소스는 이에 대응하는 JVM 명령으로 변환된다. 분석 도구로 클래스의 명령과 구조를 살펴볼 수 있다.
주의할 점
클래스 파일 전체를 명령 바이트만의 나열로 보지 않는다. 메타데이터와 검증 조건이 있으며 바이트코드를 직접 바꾸면 형식이나 실행 검증을 통과하지 못할 수 있다.