JDK,JRE,JVM

MihyunCho·2022년 9월 27일
0

Java

목록 보기
2/2

알아보기 앞서

자바를 배우면서 염두해야할 사항.
컴퓨터는 정직하지만 바보다 :-)
0과 1(a.k.a 바이너리 or 바이트 코드)밖에 모르는 바보면서, 거짓말은 절대 안한다(에러를 뱉는다면 나만 의심하면 된다는..)

어쨌든 0과 1만 아는 컴퓨터에게 우리가 내린 명령을 컴퓨터가 아는 0과 1로 바꿔주는 과정을 컴파일이라고 한다. 그리고 컴파일 하는 프로그램을 컴파일러라고 부른다(+ er)

근데 이 컴파일러가 모든 운영체제에서 똑같이 일하는것은 아니다.
만약 아래와 같은 코드가 있다고 하자

System.out.println("hello world!")

C언어의 경우 window, mac, linux등 컴파일러가 각각 따로 있어야 hello world!를 뱉을 수 있는데 JAVA는 좀 다르다!

JVM(Java Virtual Machine) : 자바 가상 머신

자바는 자바 컴파일러로부터 생성된 바이너리코드가 있고, 이걸 운영체제에 바로 전달하는게 아니라 각 운영체제 위의 JVM이라는 곳에 전달한다.(운영체제마다 각각 존재하고 java설치할때 같이 설치됨) 그래서 이 JVM을 거쳐서 가기때문에 자바에서는 컴파일러가 하나만 있으면 된다.

즉, 애플리케이션을 어느 운영체제에서 실행하던 결과물이 동일하다는 이야기!
앞서 예를 든 아래의 경우,

System.out.println("hello world!")

JVM 덕분에 window, mac, linuxhello world!를 똑같이 확인 할 수 있다. 😋

JVM은 인터프리터(interpreter)방식으로 한 줄 씩 해석한다.
예를들어,

  • 내일까지 100page 읽어오세요! 그걸로 수업할거에요(❌)
  • 1page수업, 2page수업 그때그때 수업합니다(🙆‍♀️)

(보통 컴파일러와 인터프리터가 같이 쓰이는 경우가 없는데 자바는 좀 특이하게 같이 사용한다.)

📌 Note

  • Java 애플리케이션 - JVM - OS(운영체제) - 컴퓨터(하드웨어)
    애플리케이션이 OS와 붙어있는게 아니기때문에 OS에 종속적이지 않다
  • 인기가 상당하여 코틀린 등 다른곳에서도 사용중이다.

JRE(Java Runtime Environment) : 자바 실행 환경

JRE는 JVM + 자바 프로그램 실행에 필요한 라이브러리 파일 등을 말한다. JVM의 실행환경을 구현한다고 알면 된다.
가끔 자바로 만들어진 프로그램 실행 시 유저에게 자바 설치하라는게 뜨기도하는데, 그게 JRE다. (실행하기 위해 필요하기때문에!)

JDK(Java Development Kit) : 자바 개발 도구(모음)

자바 개발도구로 JRE + 개발을 위한 도구가 포함되어있다.
JRE는 실행을 위한 도구, JDK는 개발을 위한 도구(컴파일러, 디버그 도구 등)

순서도로 보면 더 이해가 쉽다!
JDK > JRE > JVM 순이기때문에 JDK를 설치하면 JRE와 JVM도 함께 설치된다는 말씀!

따라서 JAVA의 버전 = JDK의 버전이 된다.

profile
Sic Parvis Magna 🧩

0개의 댓글