JVM, JRE, JDK

이순재·2024년 3월 3일

Java

목록 보기
2/5

컴퓨터는 2진수만 읽을 수 있다.

기계어 즉, 2진수로 된 바이너리로 작성된언어만 읽을 수 있다.


  • 사람이 읽고 작성 할 수 있는 프로그래밍 언어를 C, JAVA같은 컴파일 언어에서는 컴파일러가 기계어로 변환해준다. (Python 같은 인터프리터 언어는 논외)
    • 컴파일러 : 사람이 코딩 한 결과가 미리, 기계어나 그에 가까운 언어로 컴파일 즉, 번역해주는 역할을 한다.

바이트코드

사람이 쓰는 자바 코드에서 컴퓨터가 읽는 기계어로의 중간단계에 있는 코드

  • JAVA로 Hello.java를 작성 후 파워쉘이나 터미널에 javac Hello.java 명령을 내리면 같은 위치에 Hello.class가 만들어짐. 이 같은 .class 파일이 바이트코드 임.
  • 이 바이트코드를 실행할 컴퓨터에 깔린 JVM에 넘겨주면 해당 컴퓨터가 프로그램을 실행 할 때 JVM이 바이트코드를 그때그때 기계어로 번역을 해줌.
    • 추가적인 장점 : Groovy, Scala, Clojure, Kotlin 같은 언어들도 JVM 전용 바이트코드로 컴파일이 가능

JVM

JVM은 JAVA로 코드를 짜서 컴파일 한 소프트웨어들이 JVM이 깔린 어떤 컴퓨터에서든 실행 할 수 있도록 해주는 것

컴퓨터 환경마다 기계어가 다름 (운영체제가 다를시 같은 컴파일 언어로 짠 기계어도 각각 운영체제에 맞게 컴파일 해야함)
위와 같은 문제를 해결하기 위해 만들어 진것이 JAVA*JVM 이다.

쉽게 풀이 하자면, 각 컴퓨터(운영체제) 마다 JVM 이라는 전담 통역센터가 있는 것.


  • 한번 작성하면 모든 곳에서 실행한다. W-O-R-A (write one run anywhere)가 JAVA의 원칙
  • JVM 같이 실행 시점마다 기계어로 번역해주는 '통번역' 방식을 Just In Time 컴파일 즉 JIT 컴파일 이라고 한다.
  • 쉽게 풀이 하자면, 각 컴퓨터(운영체제) 마다 JVM 이라는 전담 통역센터가 있는 것.


JRE

JAVA 런타임 환경

즉, 자바로 짠 소프트웨어가 컴파일 및 빌드까지 다 된 다음, 이를 사용할 곳에 주어져서 실행이 될 때, 그 환경 요소들로서 필요한 것들.

JDK

JAVA Development Kit (자바 개발 도구)

  • 개발에 필요한 것들 (javac, jdb, jar 등등 JRE도 JDK에 포함되어있다.)

0개의 댓글