Developing Myself Everyday
article thumbnail
Published 2023. 5. 29. 11:05
JVM & JRE & JDK Android/Java

 자바를 공부해본 사람이라면 자바는 플랫폼에 독립적이고, WORA("Write Once Run Anywhere" - 한 번 작성하면 모든 곳에서 돌릴 수 있다)는 말을 들어봤을 것이다.

 

public class Main {
    public static void main(String[] args) {
        for (int i = 1; i < 10; i++) {
            System.out.println("%d ", i);
        }
    }
}

 

 우리가 위와 같이 자바로 코드를 작성하면 컴퓨터는 이 내용을 바로 이해하지 못한다. 그래서 우리는 우리가 작성한 코드를 컴퓨터가 이해할 수 있게 바꿔주는 과정이 필요하다. 이걸 코드를 번역(Compile) 한다고 한다.

 

 작성한 언어를 번역하느냐, 혹은 통역(Interpret) 하느냐에 따라 나뉠 수 있는데 자바는 바로 컴파일 되는 언어이다.

 그럼 이제 작성한 언어를 컴파일 시킨 후 컴퓨터를 이해시켜야 한다. 그런데 여기서 문제가 발생한다. 컴파일러는 같은 형식의 기계어를 만들어내지만, 각 OS 환경에 맞춰진 독자적인 컴파일러기 때문에 다른 환경에서는 이해하지 못하게 된다.

 

C언어를 컴파일하는 과정

 

 

 그래서 개발자들은 각 OS에 맞춰서 따로 따로 컴파일을 해야만 했다. 여기서 자바는 획기적인 방식을 도입하게 된다. 각 OS에 JVM(Java Virtual Machine)을 설치하는 것이다. JVM은 가상 CPU로 각 OS에 언어를 할 줄 알며, 자바 바이트 코드를 읽고 각 OS의 언어로 번역해주는 역할을 한다.

 

자바를 컴파일하는 과정

 

 다만 이렇게 좋은 방식에도 단점이 있기 마련이다. 자바 프로그램은 일반 프로그램보다 JVM 단계를 거쳐야 함으로 실행 속도가 느리다는 단점이 존재한다.

 

 

JRE (Java Runtime Environment) & JDK (Java Development Kit)


 JRE는 자바 실행환경의 약자로서, JVM과 자바 프로그램을 실행 시킬 때 필요한 라이브러리 API를 함께 묶어서 배포되는 패키지이다. 

 

JDK는 자바 개발키트의 약자로 개발자들이 자바로 개발하는 데 사용되는 SDK 키트이다. JVM이 받아들이는 자바 바이트 코드를 컴파일하는 컴파일러, 인터프리터 등등이 바로 개발 도구에 존재한다.

 

이렇게 해서 JVM, JRE 그리고 JDK에 대해 간략하게 알아보았다.

 

JVM의 내부 구조와 동작에 관해 더 자세히 알고싶다면 아래의 게시글을 참고하길 바란다.

 

JVM의 내부 구조와 작동

자바의 프로세스는 JVM에서 실행되는 독립적인 실행 프로그램이다. 자바 프로세스는 운영 체제에서 실행되기 위해 자원을 할당받고, 메모리 공간을 사용하며, 시스템 자원을 활용하여 작업을 수

everyday-develop-myself.tistory.com

 

'Android > Java' 카테고리의 다른 글

JVM과 커널의 동작  (0) 2023.06.26
Reflection (리플렉션)  (0) 2023.06.11
JVM의 내부 구조와 작동  (0) 2023.06.10
profile

Developing Myself Everyday

@배준형

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!