JVM, JDE, JDK

seanical·2022년 1월 21일
0

java

목록 보기
1/3

컴파일


언어가 바뀌는 과정

이 과정도 언어가 변하는 것이기 때문에 컴파일이라 할 수있다.
ex) python -> java

컴파일러


컴파일을 돌리는 주체

실제 컴파일을 돌려주는 주체이다.
버튼을 누르면 실제 동작을 수행하는 것

바이트코드


0,1 로 이루어진 코드

컴파일러에게 변환된 인간이 알아볼 수 없는 0,1 코드


JVM


운영체제마다 바이트코드를 읽는게 다릅니다.

c언어 같은 경우 운영체제마다 각각 맞는 컴파일러가 필요합니다.

하지만 java는 다릅니다.

운영체제 들어가기전 한 단계 더 거치게 설게되었습니다.

java는 컴파일러 단에서 os에 맞춘 컴파일을 해주는것이 아닌
모든 os의 공동된 컴파일 과정을 거친후 jvm이 각 운영체제가 해석할 수 있는 양식으로 번역해줍니다.

사진에서 볼 수 있듯 각 os 별 jvm이 따로 구성되어 있는것을 확인 할 수 있습니다.

따라서 windows jvm , mac jvm , linux jvm 을 거치며각 운영체제에 맞게 번역 및 실행 합니다.

지금까지 java를 실행시 jvm을 다운 받지 않았는데 어떻게 실행되지?
라고 의문점이 있을 수 있습니다.

jvm은 따로 다운로드 받는것 이 아닌 java(jdk) 를 다운받을때 같이 다운됩니다.

따라서 코드 실행시 바이트코드를 jvm이 알아서 mac, windows, linux에 맞게 돌릴 수 있어 저희는 os에 상관없이 컴파일 된 바이트 코드만 들고 다니면 os에 자유로워 질 수 있는 것입니다.

이런 편리함 때문에 jvm은 그루비, 스칼라, 코틀린에도 많이 사용됩니다.

정리

사람이 작성하는 코드 -> 컴파일 -> jvm -> 각 os에 맞게 해석된 바이트코드 작동이라고 할 수 있습니다.

컴파일을 진행하며 바이트코드로 변환시키지만 jvm은 한번 더 운영체제에 맞는 바이트코드를 해석 하여 실행한다고 이해하면 편합니다.


jdk를 설치하면 jre, jvm이 설치되는 구조입니다.

jvm

  • os 별로 존재한다.
  • 바이너리 코드를 읽고 검증하고 실행한다.

jre

  • 자바 실행환경의 약자
  • jvm + 자바프로그램(라이브러리 파일들) System.out.println 을 작성해놓은 파일 이 jre 안에 존재

jdk

  • jdk = jre + 개발을 위한 도구
  • 컴파일러 , 디버그 도구들이 여기에 존재한다.

jdk 버젼

각 버전별로 새로운 기능이 추가되거나 기존 기능이 사라진다

  • jdk 5 genereic 추가
  • jdk 8 lambda 추가

jdk 종류

기능 자체는 모두 동일하나 성능과 비용에 약간의 차이가 있을 수 있다.

  • oracle jdk 개인에게 무료, 기업용 유로
  • open jdk 언제나 무료

0개의 댓글