1.자바 가상 머신이란?
자바 가상 머신은 자바 바이트 코드를 실행해주는 프로그램이다. 각각의 다른 컴퓨터 위에서 자바 코드를 올바르게
실행하기 위해서는 자바 가상 머신이 필요하다.
그렇기에 자바 가상 머신은 플랫폼에 독립적인 형태이다.
자바 가상 머신은 자바 가상 머신 규격에서 정의하는 대로 동작을 수행할 뿐이다.
그렇기 때문에 동일한 api 세팅을 하고 동일하게 동작하게 코드를 구성하였다면, 컴퓨터 및 플랫폼 종류와 무관하게
해당 바이트 코드가 동일하게 동작하게 된다.
자바 가상 머신은 일반적으로 32비트로 구성된다.
자바 가상 머신은 리눅스, 유닉스, 마이크로소프트 윈도우를 포함한 대부분의 운영체제에 설치가 가능하며 인터넷 익스플로러
등의 웹 브라우저등의 여러 플랫폼에 설치가 가능하다.
심지어 휴대전화, 스마트폰, 가전기기에도 설치 가능하다.
자바 가상 머신은 따라서 미들웨어로서의 역할과 플랫폼으로서의 역할을 동시에 수행하며, 우리가 자바 코드를 실행하기 위해서는,
즉 자바 프로그램을 실행하기 위해 반드시 필요한 것이라고 할 수 있다.

2. 자바 가상 머신의 특성
a.스택 기반의 가상 머신
피연산자를 레지스터에서 가져와서 계싼하고 다시 결과를 레지스터에 저장하는 레지스터 기반의 vm과 달리 자바 가상머신은
스택 기반의 가상머신이다.
스택 기반의 가상 머신은 연산의 결과값을 스택에 바로 바로 저장하는 형태이다.
이 때문에 간단한 코드를 수행하는데에도 많은 byte 코드가 필요하다.

b.가비지컬렉션 사용
가비지 컬렉션(garbage collection)이란 메모리 관리 기법 중 하나로, 프로그램이 동적으로 할당했던 메모리 영역(힙 영역)에서
필요없게 된 영역을 해제하는 기능이다. c와 같은 예전언어는 malloc 과 free등을 통해 힙 메모리에 직접 할당, 해제를 해주어야 했던
반면, 자바는 가비지 컬렉션 기능을 통해 알아서(?) 해준다.

c.모든기본타입의 정의를 명확히 함으로써 플랫폼 독립성을 보장해준다.
d.단일 상속 형태의 객체 지향 프로그래밍을 가상 머신 수준에서 구현한다.
다른 객체지향 언어는 다중상속을 지원하는 경우가 있다(파이썬등..). 그러나 자바는 다중상속이 불가능하다. 단일 상속형태만을
허용한다.
e.또한 포인터를 지원하되 c와 같이 주소값을 임의로 조작이 가능한 포인터 연산이 불가능하다.
관련 문서
https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_%EA%B0%80%EC%83%81_%EB%A8%B8%EC%8B%A0
자바 가상 머신 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 자바 가상 머신 사양의 자바 SE 7 에디션에 기반을 둔 자바 가상 머신(JVM) 아키텍처의 개요도. 자바 가상 머신(영어: Java Virtual Machine, JVM)은 자바 바이트코드를 실
ko.wikipedia.org
https://www.korecmblog.com/jvm-stack-and-register/
스택 기반 VM과 레지스터 기반 VM
가상 머신(VM) 가상 머신(VM : Virtual Machine)은 물리적인 CPU에 의해 처리되는 동작을 흉내낼 수 있어야 한다. 따라서 일반적으로 VM은 아래의 개념들을 구현(포함)해야 한다. 소스 코드를 VM이 실행할
www.korecmblog.com
'computer science' 카테고리의 다른 글
| cs - 프로세스 메모리 구조: 코드, 데이터, 스택, 힙 영역 (0) | 2023.04.25 |
|---|---|
| cs - pcb와 커널공간 (0) | 2023.04.25 |
| cs - 컴파일러 (0) | 2022.11.07 |
| cs - 32비트 컴퓨터 (0) | 2022.11.02 |
| CS - 이더넷(Ethernet) (0) | 2022.11.01 |