JRE와 JDK에 관심을 갖게 된 이유


2023년 6월 1일 기준으로 오라클 공식 홈페이지(https://www.oracle.com/kr/) 내에서 리소스 탭의 Java다운로드 를 클릭하면 확인이 가능하다.

자바를 다운할 경우, JREJVM,JDK라는 단어가 많이 보여진다.
Java 종류의 차이점을 알기 전, JREJVM,JDK에 대하여 짚고 넘어가보자.


💬 들어가기에 앞서 용어 정리

1. 고급언어

인간이 이해할 수 있는 언어. 즉, 일반 Java에서 사용하는 코드

public static void main(String[] args){
	System.out.println("Hello World!");
}

2. 기계어

binary 코드. 즉, 이진수(0과 1) 로만 이루어진 코드

0101010001010
1010100010010
0101010000001

3. Compile(컴파일)

고급 언어를 기계어로 해석하는 일련의 과정

4. Compiler(컴파일러)

고급 언어를 기계어로 해석해주는 프로그램


먼저 JAVA의 Compile 과정을 알아보자

💻 Compiler(컴파일러) 가 고급언어를 기계어로 Compile(컴파일) 해준다?

컴퓨터는 고급언어를 해석하지 못한다.
컴퓨터의 입장에서 보면 고급 언어를 본인이 이해할 수 있는 기계어로 번역을 해야지만 해석이 가능해지는데
이 때, Compiler(컴파일러)Compile(컴파일) 을 해주는 과정을 거치게 된다.


⭐️ JAVA가 등장 전 C언어에서의 Compile은?

0과 1로만 이루어진 기계어의 조합은 C언어에서는 OS(운영체제)별로 해석이 다르게 이루어졌다.

Example

0101010001010
1010100010010
0101010000001...

C언어에서 해당 이진수 코드는 OS별로 출력이 상이하다.

  • Windows : "Hello World!"
  • Mac : 출력 불가
  • Linux : 출력 불가

⭐️ JAVA 등장 이후, JAVA에서의 Compile

하지만 JAVA의 등장으로 OS별로 다양히 적용되었던 컴파일러가 자바 컴파일러 하나로 통합되어, 동일한 출력물을 제공하게 되었다

Example

0101010001010
1010100010010
0101010000001...
  • Windows : "Hello World!"
  • Mac : "Hello World!"
  • Linux : "Hello World!"

❓어떻게 이런 출력을 할 수 있을까?

1. C언어의 컴파일 과정

C언어의 경우 각 운영체제에 맞는 전용 Compiler를 사용하여 번역해준다.

  • Windows

    C언어 -> Compiler -> 010101.. -> OS(Windows)
  • Mac

    C언어 -> Compiler -> 010101.. -> OS(Mac)
  • Linux

    C언어 -> Compiler -> 010101.. -> OS(Linux)

2. JAVA의 컴파일 과정

사용중인 운영체제에 맞는 JAVA를 다운로드 하게 되는데, 이 때 운영체제에 맞는 JVM이 자동으로 설치가 되어진다.

  • JAVA

    JAVA -> Java Compiler -> 010101.. -> OS별 JVM -> OS(Windows, Mac, Linux)

⭐️ 요약

C언어의 경우 OS별로 다른 컴파일러를 가지고 있고, JAVA는 하나의 컴파일러로 다양한 OS에서 사용이 가능하다.


⭐️ JDK, JRE, JVM 구조

  • JDK > JRD > JVM
  • JDK를 설치하면 JRE도 JVM도 설치된다.

1. JDK(Java Development Kit)

정의 : 자바개발도구
구성 : JRE + 개발을 위한 도구(컴파일러, 디버그)

  • 컴파일러, 디버그 도구들이 들어있다.

2. JRE(Java Runtime Environment)

정의 : 자바실행환경
구성 : JVM + Java 라이브러리 파일들

  • JAVA 프로그램을 실행하기에 필요한 여러가지 라이브러리 파일들을 갖고 있다.

3. JVM(Java Virtual Machine)

정의 : 자바가상머신
구성 : OS별로 존재함

  • 0과 1로만 이루어진 바이너리 코드와 다양한 OS를 호환시켜주는 역할을 한다.

JAVA의 버전 = JDK의 버전

흔히 말하는 JAVA의 버전은 곧 JDK의 버전을 일컫는 말이 된다.

자바는 새로운 버전이 나올수록 있던 기능이 없어지기도, 없던 기능이 추가되기도 한다.

위의 이미지에서 버전을 확인해보면 (LTS)라는 개념이 들어있는데, LTS는 Long Time Support의 약자이다. 이 말은 몇 년 사용해서 중단되는 버전이 아니라, 어느정도 계속해서 지원을 보장한다는 의미가 담겨있다.

[기타] JDK 8 _ Oracle의 Java인수

Java라는 언어는 썬 마이크로시스템즈에서 1995년에 개발한 OOP 언어이다. 2010년에 Oracle이 썬 마이크로시스템즈를 인수하게 되면서 Java의 저작권을 소유하게 되었으며 이 때 나오게 된 버전이 JDK 8버전이다
출처 : 나무위키(Java)

profile
지속적인 성장을 추구하는 새싹 개발자입니다🌱

0개의 댓글