[Java-5] JDK& JRE, 자바 실행

전 글에서는 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 프로그램으로 실행을 시키는 것이다.

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에 전체적인 내용을 다뤄보았다.