생각없는 코딩습관을 들이면 본질적인 것에 접근을 못한다. 나 또한 그래왔고 지금도 그런거 같다. 이번 주제에 관련해서 여러 자료도 보았고 따로 글도 작성해봤는데, 나름 중요도를 생각해서 한번 더 여기다 작성하려고 한다.


JDK & JRE & JVM 들은 무엇이고 각각의 차이점은 ?


자바 언어를 내가 공부하고 있지만 누군가 이렇게 묻는다면 나름의 어설픈 대답은 할 수 있겠지. 하지만 스스로 만족스럽다고 생각하지 않는다. 


해당 글은 기존의 블로그에서 들고왔고, 기존 내용에서 수정 및 추가를 하려고 한다. 참고는 내가 애용하는 GeeksforGeeks 이다.


JDK (Java Development Kit)

JDK is a software development environment used for developing Java application and applets. It includes the Java Runtime Environment(JRE), an interpreter/loader(java), a compiler(javac), an archiver(jar), a documentation generator(javadoc) and other tools needed in Java development.


자바 애플리케이션과 애플릿 개발에 필요한 소프트웨어 개발 환경을 제공한다. 그리고 JDK 내부에는 JRE, 자바, 컴파일러, jar, javadoc 와 자바 개발에 필요한 여러 툴들이 제공되고 있다. 


SDK라는 표현도 들어봤을텐데 SDK(Software Development Kit)으로 자바에만 국한된 개발 키트를 JDK라고 부른다. 단순한 표현의 차이일 뿐이며 다른 의미를 지니고 있지 않다.


JRE (Java Runtime Environment)

JRE stands for "Java Runtime Environment" and may also be written as "Java RTE". The Java Runtime Environment provides the minimum requirements for executing a Java application; it consists of the Java Virtual Machine(JVM), core classes, and supporting files.


자바 애플리케이션을 실행시키기 위한 최소 환경을 제공하며 JRE는 JVM, 코어 클래스 등을 포함하고 있다.


JVM (Java Virtual Machine)

(1) A specification ​where working of Java Virtual Machine is specified. But implementation provider is independent to choose the algorithm. Its implementation has been provides by Sun and other companies.

JVM 은 플랫폼에 의존적이다. 자바의 바이트 코드 혹은 바이너리 코드는 플랫폼에 독립적이지만 해당 코드를 실행하는 JVM 은 각각의 운영체제에 맞는 규격이 존재한다.

(2) An implementaion ​is a computer program that meets the requirements of the JVM specification.

프로그램이 실행되기 위해서는 JVM 은 해당 요구조건에 맞는 규격이어야 한다. 결과적으로 플랫폼에 종속적이기 때문에 해당 플랫폼에 맞는 JVM 이 설치되어 있어야 함을 말한다.

(3) Runtime Instance Whenever you write java command on the command prompt to run the java class, an instance of JVM is created.

런타임 인스턴스는 .class 파일을 실행할 때 생성되는 JVM의 인스턴스이다.


위의 세가지 JDK, JRE, JVM 을 다이어그램으로 표시하면 아래와 같다.



JDK = JRE + Development Tools

JRE = JVM + Library Classes


위의 그림을 간략하게 설명하면,


Development Tools - to provide an environment to develop your java program
자바 프로그램을 개발하기 위해 존재한다.


JRE - to execute your java program

자바 프로그램을 실행하기 위해 존재한다. (오직 실행하는 환경만을 제공)


JDK - only used by java developers

개발자만 이용


JVM

JDK와 JRE에 내장되어 있기에 매우 중요하다. 모든 자바 프로그램들은 JVM 위에서 돌아가고, JVM은 프로그램을 라인 단위로 실행하므로 인터프리터라고 부르기도 함


Posted by doubler
,