ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java-5] JDK& JRE, 자바 실행
    Java 2020. 11. 11. 14:12

    전 글에서는 JVM에 구조에 대해서 알아 보았다. 이제 JRE와 JDK 에 대해서 알아보도록 하자. 

     

     

    JDK와 JRE는 무엇인가?

     

    꽤나 길게 , JVM에 대한 두가지 포스팅을 올렸다. 이렇게 길게 설명하는게 좋을지 안좋을지 확신이 서지는 않지만 계속 이어나가도록 하겠다. 글을 쭉 읽어왔으면 java가 어떻게 실행되는지 이해 갔을거라고 확신한다. 

     

    자 그럼 JVM 이외에 JRE와 JDK에 대해서 알아보도록 하자. 

     

    1. JDK 를 왜 사용해야 할까?

     

    • JDK는 자바 프로그램을 작성하고, JRE를 실행하는데 필요한 툴들을 가지고 있다. 

    • 그리고 컴파일러 (javaC) 와 자바 어플리케이션 런처, Appletiviewer 등을 포함하고 있다.

    • 컴파이러는 자바 코드르를 바이트 코드로 변경을 해주는데 이는 JVM이 읽을 수 있는 언어로 변경해주는 것이다. 

    • 자바 어플리케이션 런처는 JRE를 실행시키는데, 필요한 클래스나, 메인 메서드를 로딩한다. 

     

    그럼 JRE를 포함한것인가? 그렇다. JDK > JRE > JVM 이런식으로 가지고 있는 것이다. 그래서JRE와 개발에 필요한 툴을 JDK가 제공해 주는 것이다. 

     

    2. JRE 를 왜 사용해야 할까?

     

    • JRE는 클래스 라이브러리, JVM, 여러 Supporting 파일들을 가지고 있다. Debuger와 Compiler과 같은 개발 도구는 포함되어있지 않는다. 즉, JRE는 소스코드를 읽기 위해, JDK는 소스코드를 작성하기 위한 것들이 포함되어있다고 생각 하면 된다. 

    • JRE match, swingetc, util, lang, awt 그리고 런타임 라이브러리 같은 패키지를 가지고 있다. 

    • 그리고 만약 Java applets를 돌려야 한다면, JRE가 꼭 설치 되어야 한다. 

     

    이제 대충 JRE와 JDK의 차이점을 알것 같기도 하다. 즉 우리가 터미널에서 javac 로 java파일을 컴파일 하는건 jdk에 포함되어있는거다.

     

    그리고 그 컴파일된 코드를 읽는건 jre 의 java 명령어이다. 그래서 우리가 실행을 하려고 .class 파일을 jre의 java 프로그램으로 실행을 시키는 것이다. 

     

    class 파일 java프로그램 실행 예시

     

     

    3. JDK, JRE, JVM 간단 정리

     

    마지막으로 JRE, JDK, JVM에 대해서 정리해보자

    JDK

    JRE

    JVM

    jdk는 개발자 키트로, 개발에 필요한 어플리케이션 소프트웨어이다. 

    소프트웨어 번들로, jre는 자바 클래스와 라이브러리, 필수적인 컴포넌트들을 제공한다.

    jvm은 바이트코드를 실행하고, 실행에 필요한 환경을 제공한다.

    jdk는 플랫폼에 독립적이다.

    jre는 플랫폼에 독립적이다.

    jvm은 플랫폼에 종속적이다.

     

    여담 이지만, 이 전에는 JDK11 이전에서는 JRE만 따로 설치가 가능해 왔었다.

      

     

    하지만 11 이후 부터는 따로 JRE만 제공하지는 않는다. 무조건 JRE는 JDK에 동봉되어 있다. 

    왜 이렇게 JRE를 따로 배포하는지, 그리고 11 이후에는 따로 배포하지 않았는지 궁금하긴 하다. 아무리 찾아봐도 자세하게 알 수 있는 부분이 없어서 좀더 고민해야겠다. 

     

     

    여기서 Java SE 11(LTS)라고 적혀있는데 LTS란 Long Time Service라는 뜻으로 장기 지원을  받을 수 있다는 뜻이다. 

     

    여기까지 JDK에 전체적인 내용을 다뤄보았다. 

     

    > [Java-6] 자바에서의 기본타입

     

    'Java' 카테고리의 다른 글

    [Java-7] 자바 타입의 종류 & 리터럴  (0) 2020.11.17
    [Java-6] Java 기본 타입 (primitive)  (0) 2020.11.16
    [Java-4] JVM의 구조  (1) 2020.11.11
    [Java-3] JVM과 JIT 컴파일러란?  (2) 2020.11.10
    [Java-2] 바이트 코드란  (1) 2020.11.09

    댓글

Designed by Tistory.