개발일지

[JAVA] 자바 가상 기계 JVM 본문

JAVA

[JAVA] 자바 가상 기계 JVM

강강강 2021. 12. 14. 09:49

JVM 에 대해 한번 정리해보고 넘어가려고 쓰는 글이다. 

 

운영체제는 자바 프로그램을 바로 실행할 수 없다. 왜냐 자바 프로그램은 완전한 기계어가 아닌 중간 단계인 바이트코드이기 때문에 이것을 해석하고 실행할 수 있는 가상의 운영체제가 필요하다. 

이것이 JVM; Java Virtual Machine 이다!!

 

JVM 은 실 운영체제 대신해서 자바 프로그램을 실행하는 가상의 운영체제 역할을 한다. 

운영체제별로 프로그램을 실행하고 관리하는 방법이 다르기 때문에 운영체제별로 자바 프로그램을 별도로 개발하는 것보다 운영체제와 자바프로그램을 중계하는 JVM 을 두어 자바프로그램이 여러 운영체제에서 동일한 실행 결과가 나오도록 설계한 것이다!!

 

그래서 우리 개발자들은 운영체제와 상관없어 자바 프로그램을 개발할 수 있는 것!!!

 

바이트 코드는 모든 JVM 에서 동일한 실행결과를 보장하지만, JVM 은 운영체제에 종속적이다. 

자바 프로그램을 운영체제가 이해하는 기계어로 번역해 실행해야 하므로 JVM 은 운영체제에 맞게 설치되어야 한다.

 

JVM 은 JDK 또는 JRE 를 설치하면 자동으로 설치되는데, JDK 와 JRE 가 운영체제별로 제공된다!

 

 

 

자바 프로그램은 확장자가 .java 인 파일을 작성하는 것부터 시작한다. 이것을 소스파일이라고 하고 이 소스를 컴파일러 (javac.exe) 로 컴파일하면 확장자가 .class 인 바이트코드 파일이 생성된다.

 

바이트 코드파일은 JVM 구동 명령어(java.exe)에 의해 JVM 에서 해석되고 해당 운영체제에 맞게 기계어로 번역된다. 

즉, 바이트코드는 하나지만 JVM 에 의해서 번역되는 기계어는 운영체제에 따라서 달라지는 것!

 

자바는 바이트코드로 만들어지는 중간 과정이 있기 때문에 C, C++ 보다 속도가 느리다는 단점이 있다.

그러나 요즘 기계어로 빠르게 변환해주는 JVM 내부에 최적호된 JIT 컴파일러를 통해서 속도의 격차는 많이 줄어들고 있다고 한다!! 자바짱!

'JAVA' 카테고리의 다른 글

코틀린[Kotlin], 정말 자바[JAVA]와 100% 호환되나?  (0) 2022.11.04
[JAVA] 참조 타입 reference type  (0) 2022.03.03
[JAVA] StringBuilder  (0) 2021.12.07
JAVA 언어 특징  (0) 2021.11.22
int vs. Integer  (0) 2021.09.13