on
JAVA(1) - JVM
JAVA(1) - JVM
1. 메모리
컴퓨터과 신입생이거나, 컴퓨터와 관련된 자격증을 공부해 본 경험이 있다면,
한 번쯤 RAM은 휘발성 메모리이고, ROM은 비휘발성 메모리기 때문에,
RAM은 전원을 끄면 저장된 데이터들이 다 날아간다는 내용을 한 번쯤 접했을 것이다.
이 이유에 대한 파악이, PC에서 컴퓨터 프로그램이 동작하는 원리에 대한
이해와 직결될 것이다.
필자의 대학시절, 교수님 중 A4 1장에 본인의 수업 내용을 전부 요약하여
이 A4를 참조해서 시험을 보는 것을 허용하는 합법적 컨닝페이퍼 시험을
허락하셨던 분이 계셨다.
사실 중간고사나, 기말고사의 전 범위를 A4 1장에 모두 담기란 어렵고,
그렇기 떄문에 중요한 내용 위주로 A4지에 적어서 이를 들고 시험을 보게 될 것이다.
그리고 시험이 모두 종료되면, 더 이상 이 A4지가 필요하지 않기 때문에,
이 A4지는 시험 후 복도에 비치된 쓰레기통에 버린다.
이 때, 이 A4지와 유사한 역할을 하는 것이 RAM이다.
컴퓨터의 하드디스크에는 수많은 소프트웨어들이 저장되어 있지만,
이 모든 소프트웨어들을 일일히 뒤지며 정보를 처리하는 것은 너무 비효율적이다.
실제로 컴퓨터로 일을 할 때, 직접적으로 필요한 소프트웨어들은 이 중 일부이므로,
필요한 소프트웨어들만 일시적으로 RAM에 저장시켜서
이 RAM을 참조하여 정보를 처리하는 일을 수행하는 것이 이상적이다.
그리고 일을 다 마치고, 컴퓨터의 전원을 끄면 이제 더이상 업무를 하지 않을 테니
전원이 꺼짐과 동시에 RAM에 일시적으로 저장시킨 소프트웨어들도 더이상 필요가 없기에,
RAM에 저장된 데이터들은 모두 소멸되게 된다.
JAVA에 관한 모든 이야기가 끝나고, C언어와 관련된 컨텐츠를 연재할 때,
내가 메모리라는 단어를 많이 쓰게 될텐데, 이 때 내가 메모리라고 하면 거의 대부분
이 RAM을 이야기 하는 것이라고 간주해도 무방할 것이다.
2. JVM
컴퓨터를 이용하여 일을 할 때, 한 가지의 소프트웨어만 사용하여 일을 하는
사람은 드물다. 보편적으로 어느 일을 하든 여러 소프트웨어를 동시에 구동시키게 되는데,
이 때, 이 소프트웨어들끼리의 교통정리를 해 줄 소프트웨어가 필요하다.
이 소프트웨어를 운영체제라고 한다.
컴퓨터의 전원을 킨 순간, 제일 먼저 RAM 위에 적재되는 것은 운영체제이고,
이 운영체제 위에 필요에 의해 사용자가 호출한 여러 소프트웨어들이
하드디스크에서 인출되어 운영체제 위에 적재되고 운영체제에 의해 제어받게 된다.
보통 프로그램을 개발할 때, 특정 언어를 이용하여 코딩을 하면
이를 그대로 구동하지 않고, 해당 코드를 특정 운영체제가 알아듣는 언어로 번역하는
컴파일의 과정을 거쳐서 프로그램을 실행하게 되는데,
이 운영체제는 윈도우나, 리눅스, 리눅스를 일부 수정하여 특수 목적으로 개발된
다양한 운영체제들 등이 있을 수 있고,
(물론 넓게 보면 운영체제 없이 동작하는 프로그램도 있을 수 있으나,
지금은 논외로 하자.)
프로그램을 구동시킬 때, 윈도우는 해당 프로그램의 언어를 알아들을 수 있으나,
리눅스는 해당 프로그램의 언어를 알아듣지 못하여 구동을 시키지 못하는 일이 있을 수 있다.
그런데, JAVA 언어로 제작된 프로그램은 특이하게도, 운영체제와 상관 없이
한 번 컴파일 된 프로그램은 어떤 운영체제에서도 구동이 된다.
이는 JAVA 언어로 프로그램을 제작하고, 컴파일 과정을 거쳐,
컴퓨터에서 구동이 가능하게 된 프로그램과
운영체제 사이에서 서로의 언어를 번역해 주는 소프트웨어가
중간에 끼어 있기 때문인데, 이를 JVM이라고 한다.
어떤 일을 할 떄, 그 일을 하는 환경을 보통 플랫폼이라고 하고,
그 관점에서 볼 때, 운영체제도 일종의 플랫폼이라고 부를 수 있기 때문에,
이러한 JAVA의 특징으로 인하여 JAVA는 어느 운영체제에서도
정상적으로 실행이 가능하다는 점으로,
JAVA를 흔히 플랫폼에 독립적인 언어라고 칭하게 된다.
첫 포스팅에서는 JAVA 언어를 배우기 앞서, JAVA가 구동되는 원리에 대해 이야기를 했고,
다음 포스팅부터는 이제 본격적으로 JAVA의 문법에 대한 이야기를 시작해보기로 하겠다.
from http://univ-room.tistory.com/12 by ccl(A) rewrite - 2021-12-10 13:28:03