*자바 가상 머신, 바이트코드
1. 자바 가상 머신 ( JVM : JAVA Virtual Machine )
- 시스템 메모리를 관리하면서 자바 실행 환경을 제공하며, 다른 프로그램을 실행 시키기 위한 목적으로 사용된다. 자바 가상 머신은 자바 프로그램이 어떠한 기기, 운영체제 상에서도 실행될 수 잇는 환경을 제공하고, 프로그램 메모리를 관리하고 최적화 한다.
- 자바 가상 머신의 특성
- 스택 기반의 가상 머신
- 단일 상속 형태의 객체 지향 프로그래밍을 가상 머신 수준에서 구현
- 포인터를 지원하되 C와 같이 주소 값을 임의로 조작이 가능한 포인터 연산이 불가능
- 가비지 컬렉션 사용
- 모든 기본 타입의 정의를 명확히 함으로써 플랫폼 독립성 보장
- 데이터 흐름 분석에 기반한 자바 바이트코드 검증기를 통해 스택의 넘침, 명령어 피연산자의 타입 규칙 위반, 필드 접근 규칙 위반, 지역 변수 초기화 전 사용 등 문제를 실행 전 검증하여 실행 시 안전을 보장하고 부담을 줄여준다.
- 명령어에서 스택에서 가져올 피연산자의 타입을 명령어에 지정
2. 바이트 코드 (Bytecode, portable code, p-code)
- 바이트 코드는 특정 하드웨어가 아닌 가상 컴퓨터에서 돌아가는 실행 프로그램을 위한 이진 표현법이다. 하드웨어가 아닌 소프트웨어에 의해 처리되기 때문에, 보통 기계어보다 더 추상적이다.
- 바이트코드는 대부분의 명령 집합이 0개 이상의 매개 변수를 갖는 1바이트 크기의 동작 코드였기 때문에 바이트코드라 불리게 되었다.
- 바이트코드는 특정 하드웨어에 대한 의존성을 줄이고, 인터프리팅도 쉬운 결과물을 생성하고자 하는 프로그래밍 언어에 의해, 출력 코드의 한 형태로 사용된다.
- 컴파일되어 만들어진 바이트코드는 특정 하드웨어의 기계 코드를 만드는 컴파일러의 입력으로 사용되거나, 가상 컴퓨터에서 바로 실행된다.
3. 자바 바이트 코드 (Java bytecode)
- 자바 바이트코드는 자바 가상 머신이 실행하는 명령어의 형태이다.
- 각각의 바이트코드는 1바이트로 구성되지만 몇 개의 파라미터가 사용되는 경우가 있어 총 몇 바이트로 구성되는 경우가 있다.
- 256개의 명령코드 모두가 사용되지는 않는다.
- 자바 프로그래머가 자바 바이트코드를 꼭 인지하거나 이해할 필요는 없다. 하지만, 바이트코드를 이해하고 자바 컴파일러에 의해 바이트코드가 어떻게 생성될 것인지를 이해하는 것은 C, C++ 프로그래머가 어셈블리어를 이해하는 것과 같다고 볼 수 있다.
'기타' 카테고리의 다른 글
지역 변수와 인스턴스 변수란? (0) | 2020.04.24 |
---|---|
클래스와 객체란? (0) | 2020.04.24 |
컴파일(Compile) 이란? (0) | 2020.04.23 |
컴퓨터의 저장 단위(비트, 바이트) (0) | 2020.04.23 |
자바 문자열 공백제거(replaceAll, trim) (0) | 2020.04.22 |