[java] JVM, JDK, JRE 및 OpenJDK의 차이점은 무엇입니까?

JVM , JDK , JREOpenJDK 의 차이점은 무엇입니까 ?

Java로 프로그래밍 중이 었는데 이러한 문구를 접했습니다. 차이점은 무엇입니까?



답변

JVM

자바 가상 머신 (JVM)은 자바 바이트 코드를 실행하는 가상 머신입니다. JVM은 Java 소스 코드를 이해하지 못합니다. 그렇기 때문에 JVM에서 이해하는 바이트 코드를 포함하는 *.java파일을 얻으려면 *.class파일을 컴파일해야 합니다 . 또한 Java가 “이동 가능한 언어”( 한 번 작성하면 어디에서나 실행 ) 가 될 수있는 엔티티이기도합니다 . 실제로 다른 시스템 (Windows, Linux, macOS, Wikipedia 목록 참조) 에 대한 JVM의 특정 구현이 있습니다 . 목표는 동일한 바이트 코드를 사용하여 모두 동일한 결과를 제공하는 것입니다.

JDK 및 JRE

JDK와 JRE의 차이점을 설명하려면 Oracle 설명서 를 읽고 다이어그램을 참조하는 것이 가장 좋습니다 .

자바 런타임 환경 (JRE)

JRE (Java Runtime Environment)는 Java 프로그래밍 언어로 작성된 애플릿 및 응용 프로그램을 실행하기위한 라이브러리, Java Virtual Machine 및 기타 구성 요소를 제공합니다. 또한 두 가지 주요 배포 기술이 JRE의 일부입니다. Java Plug-in은 애플릿이 널리 사용되는 브라우저에서 실행되도록합니다. 네트워크를 통해 독립 실행 형 응용 프로그램을 배포하는 Java Web Start. 또한 엔터프라이즈 소프트웨어 개발 및 배포를위한 J2EE (Java 2 Platform, Enterprise Edition) 기술의 기반이기도합니다. JRE에는 애플릿 및 애플리케이션 개발을위한 컴파일러 또는 디버거와 같은 도구 및 유틸리티가 포함되어 있지 않습니다.

자바 개발 키트 (JDK)

JDK는 JRE의 상위 집합이며 JRE에있는 모든 항목과 애플릿 및 응용 프로그램 개발에 필요한 컴파일러 및 디버거와 같은 도구를 포함합니다.

Oracle만이 JDK를 제공하는 것은 아닙니다.

OpenJDK

OpenJDK JDK 의 오픈 소스 구현이며 Oracle JDK의 기반입니다. Oracle JDK와 OpenJDK 사이에는 거의 차이가 없습니다.

차이점은이 블로그에 설명되어 있습니다 .

Q : OpenJDK 저장소에있는 소스 코드와 Oracle JDK 빌드에 사용하는 코드의 차이점은 무엇입니까?

A : 매우 가깝습니다. Oracle JDK 릴리스의 빌드 프로세스는 Oracle의 Java 플러그인 및 Java WebStart 구현과 일부 폐쇄 된 소스 세 번째를 포함하는 배포 코드와 같은 몇 가지만 추가하여 OpenJDK 7을 기반으로 빌드됩니다. 그래픽 래스터 라이저와 같은 파티 구성 요소, Rhino와 같은 일부 오픈 소스 타사 구성 요소, 추가 문서 또는 타사 글꼴과 같은 몇 가지 비트와 조각. 앞으로 우리의 의도는 JRockit Mission Control (아직 Oracle JDK에서 사용할 수 없음)과 같은 상용 기능을 고려하는 것을 제외하고 Oracle JDK의 모든 부분을 오픈 소스하고, 더 가까운 패리티를 달성하기 위해 방해가되는 타사 구성 요소를 오픈 소스 대안으로 교체하는 것입니다. 코드베이스 사이.

JDK 11 업데이트-Donald Smith의 기사는 Oracle JDK와 Oracle의 OpenJDK 간의 차이점을 명확히하려고합니다. https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11- 그리고 나중에


답변

JVM은 Java 가상 머신입니다. 실제로 Java ByteCode를 실행합니다.

JRE는 Java Runtime Environment입니다. 여기에는 무엇보다도 JVM이 포함되어 있으며 Java 프로그램을 실행하는 데 필요합니다.

JDK는 Java Development Kit입니다. JRE이지만 javac (Java 소스 코드를 컴파일하는 데 필요함) 및 기타 프로그래밍 도구가 추가되었습니다.

OpenJDK는 특정 JDK 구현입니다.


답변

JDK (자바 개발 키트)

Java Developer Kit에는 Java 프로그램을 개발하는 데 필요한 도구와 프로그램을 실행하기위한 JRE가 포함되어 있습니다. 도구에는 컴파일러 (javac.exe), Java 애플리케이션 실행기 (java.exe), Appletviewer 등이 포함됩니다.

컴파일러는 자바 코드를 바이트 코드로 변환합니다. Java 응용 프로그램 시작 관리자는 JRE를 열고 클래스를로드하고 기본 메서드를 호출합니다.

자체 프로그램을 작성하고 컴파일하려면 JDK가 필요합니다. Java 프로그램을 실행하려면 JRE로 충분합니다.

JRE는 Java 파일 실행을 대상으로합니다.

즉, JRE = JVM + Java 패키지 클래스 (예 : util, math, lang, awt, swing 등) + 런타임 라이브러리.

JDK는 주로 Java 개발을 대상으로합니다. 즉, Java 파일을 만들고 (Java 패키지의 도움으로) Java 파일을 컴파일하고 Java 파일을 실행할 수 있습니다.

JRE (Java Runtime Environment)

Java Runtime Environment에는 JVM, 클래스 라이브러리 및 기타 지원 파일이 포함되어 있습니다. 컴파일러, 디버거 등과 같은 개발 도구는 포함되어 있지 않습니다. 실제로 JVM은 프로그램을 실행하며 JRE에서 제공하는 클래스 라이브러리 및 기타 지원 파일을 사용합니다. Java 프로그램을 실행하려면 시스템에 JRE가 설치되어 있어야합니다.

Java Virtual Machine은 플랫폼에 독립적 인 코드 실행 방법을 제공합니다. 즉, 모든 시스템에서 한 번 컴파일하고 어디서나 실행합니다 (모든 시스템).

JVM (Java Virtual Machine)

Java 파일을 컴파일 할 때 우리 모두 알고 있듯이 출력은 ‘exe’가 아니라 ‘.class’파일입니다. ‘.class’파일은 JVM이 이해할 수있는 Java 바이트 코드로 구성됩니다. Java Virtual Machine은 기본 운영 체제 및 하드웨어 조합에 따라 바이트 코드를 기계 코드로 해석합니다. 가비지 수집, 배열 경계 검사 등과 같은 모든 일을 담당합니다. JVM은 플랫폼에 따라 다릅니다.

JVM은 기본 운영 체제 및 시스템 하드웨어 아키텍처에 의존하지 않는 시스템 인터페이스를 제공하기 때문에 “가상”이라고합니다. 하드웨어 및 운영 체제로부터의 이러한 독립성은 Java 프로그램의 write-once run-anywhere 가치의 초석입니다.

다른 JVM 구현이 있습니다. 성능, 안정성, 속도 등이 다를 수 있습니다. 이러한 구현은 가비지 수집 프로세스의 작동 방식이 JVM에 따라 다르지만 Java 사양은 그렇지 않은 것과 같이 Java 사양에서 기능 구현 방법을 언급하지 않는 영역에서 다를 수 있습니다. 이를 수행하는 특정 방법을 정의하십시오.


답변

자바 가상 머신 (JVM)은 자바 바이트 코드를 실행할 수있는 가상 머신이다. Java 소프트웨어 플랫폼의 코드 실행 구성 요소입니다.

자바 개발 키트 (JDK)는 자바 개발자를위한 오라클 사 제품입니다. Java가 도입 된 이래 가장 널리 사용되는 Java SDK (Software Development Kit)입니다.

Java Runtime Environment 는 Java Runtime, Runtime Environment라고도합니다.

OpenJDK (Open Java Development Kit) 는 Java 프로그래밍 언어의 무료 오픈 소스 구현입니다. 이는 Sun Microsystems가 2006 년에 시작한 노력의 결과입니다. 구현은 링크 예외를 제외하고 GNU GPL (General Public License)에 따라 라이센스가 부여되었습니다.


답변

JVM 은 Java 코드가 실행되는 가상 머신입니다.

JRE 는 Java 애플리케이션을 실행하는 데 필요한 환경 (표준 라이브러리 및 JVM)입니다.

JDK 는 개발자 도구 및 문서가있는 JRE입니다.

OpenJDK 는 Oracle이 소유 한 일반적인 JDK와 달리 JDK의 오픈 소스 버전입니다.


답변

JDK (Java Development Kit) :

  • Java 프로그램을 개발하는 데 필요한 도구가 포함되어 있습니다.
  • 자체 프로그램을 작성하고 컴파일하려면 JDK가 필요합니다.
  • JDK는 주로 Java 개발을 대상으로합니다.

JRE (Java Runtime Environment)

Java Runtime Environment에는 JVM, 클래스 라이브러리 및 기타 지원 파일이 포함되어 있습니다. JRE는 Java 파일 실행을 대상으로합니다.

JVM (Java Virtual Machine)

JVM 은 기본 운영 체제 및 하드웨어 조합에 따라 바이트 코드를 기계 코드로 해석합니다 . 가비지 수집, 배열 경계 검사 등과 같은 모든 작업을 담당합니다. Java Virtual Machine은 플랫폼 독립적 인 코드 실행 방법을 제공합니다.


답변

JDK -Java를 ByteCode로 컴파일합니다. 디버거, 컴파일러 등으로 구성됩니다.

javac file.java // Is executed using JDK

JVM- 바이트 코드를 실행합니다. JVM은 자바 플랫폼을 독립적으로 만드는 것입니다. 그러나 JVM은 플랫폼에 따라 다릅니다.

JRE- 자바 프로그램을 실행하기위한 자바 런타임 라이브러리와 함께 JVM.