티스토리 뷰

IT/Java

JVM(Java Virtual Machine)

오예봉봉 2020. 4. 7. 00:36


JVM의 필요성

자바 언어로 작성된 프로그램은 완전한 기계어가 아니다. 따라서 , 운영체제는 자바 프로그램을 곧바로 실행할 수 없다. 즉 자바로 작성한 소스 코드(.java)가 컴파일 과정을 거치면 컴퓨터가 이해할 수 있는 기계어가 아닌 중간 단계인 바이트 코드(.class)의 형태로 바뀌기 때문에 이것을 해석하고 실행할 수 있는 가상 운영체제가 요구된다. 이것을 자바 가상머신이라고 한다. 즉 JVM은 진짜 운영체제를 대신하여 자바 프로그램을 실행하는 가상 운영체제 역할을 한다. 
프로그램을 실행시키고 관리하는 절차와 방법이 운영체제에 따라 각각 상이하기 때문에 다양한 운영체제에 맞추어 자바 프로그램을 독립적으로 각각 설계하는 것은 비효율적이다. 그래서 자바 언어는 여러가지의 운영체제와 자바 프로그램이 연결되도록 가상머신(JVM)이 내재되 있어서 동일한 자바 프로그램이 다양한 운영체제에서 동일한 실행 결과가 나오도록 설계 되었다. 개발자는 운영체제의 종류를 신경 쓸 필요 없이 프로그램 개발에만 집중하면 된다.

JVM의 종속성

중간 단계인 바이트 코드는 JVM의 존재로 인하여 서로 다른 운영체제에서도 동일한 실행 결과를 낼 수 있다. 따라서. JVM은 운영체제에 종속적일 수 밖에 없다. 즉 자바 프로그램을 운영체제가 이해할 수 있는 기계어로 번역해서 실행해야 하므로 JVM은 운영체제에 적합하게 설치되어야 한다. 즉, 윈도우 운영체제에는 window용 JVM , 맥 운영체제에는 Mac용 JVM 이 설치되어야 한다.

JDK(Java Development Kit)  또는 JRE(Java Runtime Environement)를 설치하면 JVM은 그에 따라서 자동으로 설치되기 때문에 JDK와 JRE는 운영체체별로 제공된다.


JVM의 단점

자바 프로그램은 소스 파일(확장자가 .java인 파일)을 만드는 것부터 시작한다. 이 소스 파일을 자바 컴파일러(javac.exe)로 컴파일하면 바이트 코드(확장자가 .class 인 파일)가 생성된다. 이 바이트 코드 파일은 JVM 명령어(java.exe)에 의해 JVM에서 해석되어 각각의 운영체제에 적합한 기계어로 만들어 진다. 즉, 하나의 바이트 코드 파일이 JVM을 통하여 다양한 운영체제에 맞는 기계어로 변한다.
그러나 , 일단 작성된 자바 프로그램이 어디에서나 실행가능하다는 것은 자바 언어의 장점이지만 이로 인하여 실행 속도가 느려진다는 단점도 있다. 
C 또는 C++ 같은 언어들은 한 번의 컴파일로 컴퓨터 시스템에서 실행이 가능한 기계어가 생성된다.
그러나 자바는 컴파일 후에 다시 한번 JVM에 의해 번역이 되어야 비로서 완전한 기계어가 만들어질수 있기 때문이다. 물론 JVM 내부에 최적화를 위한 JIT 컴파일러를 적재하여 느린 속도를 보완하여 주고 있다. 그러나 JVM 의 존재로 인하여 이식성은 우수하지만 그만큼 실행 속도가 떨어지는 것도 사실이다.












'IT > Java' 카테고리의 다른 글

타입 변환(형 변환)  (0) 2020.04.08
데이터 타입(data type)  (0) 2020.04.08
자바의 변수  (0) 2020.04.07
자바의 특징  (0) 2020.04.06
프로그래밍 언어의 개념  (0) 2020.04.04