Java는 Linux, Window의 운영체제와 상관없이 돌아갑니다. 운영체제가 쓰는 언어의 차이는 한국어와 미국어의 차이라고 보셔도 됩니다. Linux에서 만든 파일이나 문서는 Window의 파일의 문서로 읽힐 수가 없습니다. 그런데 웹브라우저에서는 운영체제와 상관없이 문서를 읽는데 이것은 바로 JVM덕분입니다. 이 JVM은 가상머신으로 동작하는데, 가상머신은 컴퓨터에 기생충처럼 동작합니다. 이 과정을 이해하기 위해 소스코드가 컴파일되서 실행되는 동작을 먼저 살펴보겠습니다.
먼저 Java로 소스코드를 작성하면, 이것은 컴파일러를 통해 컴퓨터가 이해할 수 있는, Obj로 변환됩니다. 그런데 이 컴퓨터의 언어로 window, linux, mac마다 다릅니다. 비유를 해드리면, 윈도우는 미국인이고, 리눅스는 한국인, 맥은 일본인으로 보시면 됩니다. 소스코드를 컴파일러로 번역한다는 것은, 사과라는 물체를 윈도우한테는 apple, 리눅스에게는 “사과“, 맥에게는 リンゴ 라고 번역해주는 것입니다.
그렇기 때문에 윈도우 컴퓨터는, 리눅스와 통신이 어렵습니다. 서로 다른 언어를 쓰기 때문이죠. 여기서 apple == “사과”라고 번역해주는 번역 프로그램을 쓸 수도 있지만, Java는 매우 획기적인 방법으로 컴퓨터 기종과 상관없이 통신하는 방법을 선택했습니다.
그것은 바로 컴퓨터에 기생충을 심어두고 기생충끼리 통신하게 하는 것입니다. 이 JVM에서 VM은 가상머신을 의미합니다. 가상머신이라는 것은 호스트라는 집에서 호스트 자원을 따로 떼서 빼먹는 기생충 같은 존재라고 이해하시면 쉽습니다. 즉, JVM나름대로 컴퓨터의 모니터, 마우스, 소켓등의 자원을 따로 떼서 사용하고 있는 것입니다. (해당 내용은 제가 쓴 VM관련 포스팅을 보시면 이해가 조금 더 수월하실 것입니다.)그렇기 때문에 JVM자체를 설치할 때는 어떤 OS에서 기생시킬지가 중요하게 됩니다.
그래서 java홈페이지에서 SE Development를 다운 받을 때 운영체제의 종류를 확인하게 됩니다. Window용 기생충, Linux용 기생충을 심어둔 다음에 기생충끼리 통신하는 방법을 쓰게 된 것입니다.
요약해드리면 JVM은 가상머신이라는 호스트에 기생하는 새로운 운영체제이고, 이 공통된 가상머신의 언어로 통신하기 때문에 웹브라우저가 통신을 쉽게 할 수 있게 되는 것입니다.
'프로그래밍 일반 > JAVA' 카테고리의 다른 글
[C++/JAVA] 변수부터 배열, 구조체까지 발전 과정 (0) | 2019.11.03 |
---|---|
[C++/JAVA] 클래스패스와 패키지 (0) | 2019.10.22 |
[C++/JAVA] .src와 .bin폴더의 역할 (0) | 2019.10.22 |
[C++] #import <헤더파일>시에 일어나는 일들 (0) | 2019.10.21 |
UI와 API의 차이란? (0) | 2019.08.31 |