Java Applicaiton의 동작
JDK, JRE, JVM의 개념을 알기에 앞서 우리가 java라는 언어로 만든 프로그램이 어떻게 동작하는 지를 짚고 넘어가면 좋을 것 같습니다.
우리가 코딩을 하면 .java 소스 파일을 만들게 됩니다.
.java 소스 파일은 OS가 이해할 수 있는 코드가 아니기에 이를 .class 파일로 변환해 주는, compile 해주는 과정이 필요합니다.
이렇게 compile 된 .class 파일은 Class Loader에 의해서 JVM으로 불러와지게 되고 JVM에서 일련의 과정을 통해 컴퓨터가 이해할 수 있는 기계어로 번역됩니다.
이렇게 번역 된 기계어를 컴퓨터는 이해하고 실행시킴으로써 .java 프로그램이 동작하게 됩니다.
JDK, JRE, JVM
JDK, JRE, JVM은 위 그림처럼 포함 관계를 가집니다.
JVM은 JRE에 포함되어 있고 JRE는 JDK에 포함되어 있습니다.
JDK(Java Development Kit)
말 그대로 자바로 개발하는 데 사용되는 키트입니다. 코로나가 한창 유행할 때 코로나 검사 키트라는 말을 많이 들어보셨을 텐데요. 키트는 '어떤 목적 달성을 위해 필요한 것들을 모아놓은 것'이라고 생각해도 좋습니다.
즉 JDK, Java Development Kit는 자바 개발에 필요한 것들을 모아놓은 것입니다.
JRE(Java Runtime Environment)
자바 실행 환경으로 JVM과 자바 프로그램을 실행시킬 때 필요한 라이브러리들을 함께 묶어서 배포되는 패키지입니다.
즉 java 프로그램을 실행시키려면 JRE가 있어야하고 java 프로그램을 개발하려면 JDK가 있어야 한다고 이해하면 됩니다.
JVM(Java Virtual Machine)
직역하면 자바 가상 머신인데 간단히 설명하자면 자바로 만든 프로그램을 돌리는 프로그램입니다.
자바로 만든 모든 프로그램은 JVM에서만 실행될 수 있기에 자바 프로그램을 실행시키기 위해서 반드시 필요한 녀석이 JVM입니다.
Java의 큰 장점 중 하나인 WORA(Write Once Run Anywhere)가 가능한 이유는 바로 JVM에 있습니다.
C 언어의 경우 C 언어로 작성한 소스 코드를 컴파일하고 이를 직접 OS로 가서 실행하게 되는데 이 때 각각의 OS에 맞는 컴파일러를 사용해주어야 합니다. 즉 Window 용으로 컴파일된 코드는 Linux에서는 실행할 수 없고 그 반대도 마찬가지인 것입니다.
하지만 java의 경우 컴파일 된 .class 파일이 직접 OS로 가서 실행되는 것이 아니라 JVM을 거치게 되고 JVM이 OS와 상호작용하면서 프로그램을 실행시키는 방식입니다.
따라서 각각의 OS에 맞는 JVM만 설치되어 있다면 컴파일한 .class파일을 Window에서 쓰나 Linux에서 쓰나 아무런 문제 없이 실행이 가능하다는 의미입니다.
'Java' 카테고리의 다른 글
접근제어자와 Getter & Setter (0) | 2023.04.06 |
---|---|
클래스, 객체, 인스턴스 (0) | 2023.04.06 |
얕은 복사 vs 깊은 복사 (0) | 2023.04.04 |
instance of 연산자 (0) | 2023.04.04 |
기본형, 참조형, Wrapper Class (0) | 2023.04.03 |