0 _3. 자바 가상 머신 (JVM:Java Virtual Machine)
by J4BEZ이번 글은 굉장히 알록달록해요! 각각의 색깔과 기능은 서로 비슷하게 연결되어 있으니 대입하며 읽어보세요!
이번 글은 비교적 많은 양의 사진이 포함되어 있습니다. 모바일 환경에서 보실 경우 WI-FI 사용 부탁드릴게요
+자바 가상 기계(JVM: Java Virtual Machine)
자바를 다른 프로그래밍 언어들과 비교했을 때, 특색 있게 만드는 것은
하나의 자바 프로그램이 어떤 컴퓨터 기종에서도 실행파일의 변경 필요 없이, 즉 다시 컴파일할 필요 없이
실행이 가능하다는 점이에요!!
하드웨어나 운영체제의 종류에 관계없이 동일한 모습으로 실행할 수 있다는 것이 자바의 큰 장점이죠.
자, 그럼 자바는 어떻게 다양한 종류의 컴퓨터에서 변경 없이 실행될 수 있을까요?
실행방식을 비교하기 위해
다음과 같은 부탁을 각각 다른 환경에 있는 친구들에게 전달한다고 가정해봅시다.📬
- 1) 자바를 제외한 일반적인 다른 언어들의 실행방식
아래와 같은 부탁 방식의 경우에는 편지의 부탁을 친구들의 언어로 각각 번역한 후에 전달해 주어야
친구들이 이해하고 부탁을 들어줄 수 있을 거예요!
또한 '멀록'을 위해 '네글리쉬'로 번역된 부탁을 '네코'에게 그대로 전달해준다면 네코는 알아들을 수 없겠죠?
'네코'에게 전해주기 위해선 편지의 부탁을 다시 '일본어'로 번역한 이후에 전달해주어야 네코도 이해할 수 있을 거예요
이와 비슷하게 다른 언어들은
[ 소스코드가 컴파일러에 의하여 '특정한 컴퓨터의 기계어'로 변환(컴파일)되어 '특정 컴퓨터(OS)'에서 실행되고,
실행 환경이 달라진다면(ex. Window -> Linux) 그 환경에 맞는 기계어로 다시 컴파일해주어야 해요.]
- 2) 자바의 실행방식
자바의 경우에는 OS로 직접 전해주지 않고, JVM(자바 가상 머신)이라는 중간단계를 거쳐서 하드웨어에 실행돼요.
JVM이라는 친구를 아가 새로 비유해서 설명해 볼게요.
---
부탁이 담긴 편지를 친구들에게 직접 전해주지 않고, 먼저 아가 새를 위한 편지로 번역한 뒤,
친구들이 데리고 있는 아가 새에게 전해주고, 이 아가 새가 편지를 해석하고 친구들이 편지의 부탁을 수행하게끔 만들어줘요.
아가 새를 위한 편지로 번역되고 친구들에게 전달되기 이전 아가 새에게 먼저 전달이 되니,
친구들의 언어가 모두 달라도 아가 새가 있다면 다시 번역할 필요 없이 편지의 부탁을 이해할 수 있는 거죠.
이 와 같이 자바에선
[ 1). 소스코드가 자바 컴파일러(javac)에 의해서 JVM을 위한 코드인 '자바 바이트코드'를 생성하고,
2). 이 '자바 바이트 코드'가 JVM안에서 한 줄씩 해석(인터프리트)되면서
3). JVM을 가지고 있는 특정한 컴퓨터에서 실행되게 됩니다. ]
자바 컴파일러에서 소스코드.java 가 바이트코드.class로 컴파일되고 JVM에서 바이트코드.class가 인터프리트 되어 실행되니
자바는 "인터프리트 기능이 있는 컴파일러 언어"라 할 수 있죠. (0. _2. 자바의 특징 - viii).인터프리트 언어(Interpreter))
JVM이 바이트 코드를 실행하는 가장 기초적인 방법이 인터프리터 방식이고
사실 JVM은 이 방법 외에도 바이트 코드를 실행할 수 있는 방법이 두 가지나 더 있어요!
다른 언어의 방식과 한번 비교해볼까요?
이처럼 한 단계를 더 거치는 자바의 실행방식에선 소스코드. java 가 JVM을 위한 기계어인 '바이트코드. class'로
변환되기 때문에, JVM을 가지고 있다면 OS에 구애받지 않고 바이트코드를 변경할 필요 없이 재사용할 수 있어요!!
뿐만 아니라 JVM은 효율적인 메모리 관리(Garbage Collection)도 수행해주는 기특한 친구라는 것을 기억해줘야 해요.
>> 자, '플랫폼'이란 개념으로 한번 더 자바 언어로 작성된 프로그램과 다른 네이티브 언어로 작성된 프로그램 사이의
컴퓨터 환경 위에서 실행되는 모습을 비교 해볼까요?
+ JVM의 구조
JVM을 조금 더 깊게 분해해보고 각각의 친구들이 어떠한 역할을 수행하는지 알아보고 싶으신가요?!
위 게시글을 방문해주세요!
아아 맞다 주의 사항이 있는데, 글이 꽤 어려워서 자바를 정말로 처음 접하시는 분들껜 매울 수 도 있어요!🌶
지금까지 JVM(자바 가상 기계)가 어떠한 친구인지 알아보았어요
자, 그럼 다음 시간엔 '자바엔 어떠한 종류가 있는지'에 대해 알아보는 시간을 가지도록 해요!
그럼 안녕:D
마지막 수정 19.08.26
도움을 받은 글: 꾸준함의 힘을 믿는 지오니의 건강한 일상 , 꺼라나무위키 , DevLog(데브로그)의 Jbee님 ,
'Computer Language > Java' 카테고리의 다른 글
1 _0. 자바 JDK 설치하기 & JDK 환경변수 설정하기(javaw.exe을(를) 찾을 수 없음)(jvm.dll 오류) (7) | 2019.08.28 |
---|---|
0 _4. 자바의 종류(Java SE, Jakarta EE, Java ME, Java FX) (4) | 2019.08.28 |
0 _2. 자바의 특징 (0) | 2019.01.05 |
0 _1. Java의 역사 (0) | 2018.12.29 |
Java 복습을 시작하며... (0) | 2018.12.29 |
블로그의 정보
작은 고양이의 캣 타워
J4BEZ