>Java >Java시작하기 >jdk와 jre의 차이점

jdk와 jre의 차이점

藏色散人
藏色散人원래의
2020-05-25 14:59:4333580검색

jdk와 jre의 차이점

jdk와 jre의 차이점

1. 정의

JRE(Java Runtime Enviroment)는 Java의 실행 환경입니다. 개발자가 아닌 Java 프로그램 사용자를 위한 것입니다. JRE만 다운로드하여 설치하는 경우 시스템에서는 Java 프로그램만 실행할 수 있습니다. JRE는 JVM 표준 구현, Java Core 클래스 라이브러리 등 Java 프로그램을 실행하는 데 필요한 환경 모음입니다. 여기에는 Java 가상 머신, Java 플랫폼 핵심 클래스 및 지원 파일이 포함됩니다. 개발 도구(컴파일러, 디버거 등)는 포함되어 있지 않습니다.

J2SDK(Java2 Software Development Kit)라고도 알려진 JDK(Java Development Kit)는 Java 개발 환경(Java 파일을 클래스 파일로 컴파일하기 위한 컴파일러 javac와 같은 도구 제공)을 제공하는 Java 개발 도구 키트입니다. 실행 환경(클래스 파일을 구문 분석하여 실행하기 위한 JVM 및 런타임 보조 패키지 제공) JDK를 다운로드 받아 설치하면 자바 프로그램을 개발할 수 있을 뿐만 아니라, 자바 프로그램을 실행할 수 있는 플랫폼도 갖추게 된다. JDK는 JRE(Java Runtime Environment), 다양한 Java 도구 tools.jar 및 Java 표준 클래스 라이브러리(rt.jar)를 포함한 전체 Java의 핵심입니다.

추천: "java learning"

2. Difference

JRE에는 주로 Java 클래스 라이브러리의 클래스 파일(모두 lib 디렉터리의 jar로 패키지됨)과 가상 머신(jvm.dll)이 포함됩니다. ; JDK 여기에는 주로 Java 클래스 라이브러리의 클래스 파일(모두 lib 디렉토리의 jar로 패키지됨)이 포함되어 있으며 JRE와 함께 제공됩니다. 그렇다면 JDK에 JRE가 함께 제공되는 이유는 무엇입니까? 또한 jdk/jre/bin 아래의 클라이언트 및 서버 폴더에는 모두 jvm.dll이 포함되어 있습니다(JDK와 함께 제공되는 JRE에 두 개의 가상 머신이 있음을 나타냄).

환경 변수 경로에 jdk/bin 경로를 설정하는 것을 기억하시나요? 교사는 javac와 java가 설정되지 않으면 사용할 수 없다고 모든 사람에게 알려줄 것입니다. jdk/bin 디렉토리에 모든 명령이 포함되어 있다는 것은 사실입니다. 하지만 우리가 사용하는 java 명령이 jdk/bin 디렉토리가 아니라 jre/bin 디렉토리에 있다고 생각한 사람이 있습니까? 제 말을 믿을 수 없다면, jdk/bin 디렉토리에 있는 java.exe를 다른 곳으로 잘라낸 다음, 무엇을 찾았나요? 모든 것이 괜찮습니다! (JRE에는 javac 명령이 없습니다. 이유는 간단합니다. 개발 환경이 아닙니다.) 그럼 누군가가 묻겠죠? 분명히 jre/bin 디렉토리를 환경 변수로 설정하지 않았습니까? 대부분의 사람들이 Java를 사용한다면 개발을 위해 jdk가 필요하지 않고 Java 프로그램을 실행하기 위해 jre만 필요하다면 각 고객이 수동으로 환경 변수를 설정하는 것이 얼마나 번거로울까요? 따라서 jre를 설치하면 설치 프로그램이 자동으로 jre의 java.exe를 시스템 변수에 추가합니다. 확인 방법은 매우 간단합니다. Windows/system32로 이동하여 무엇을 찾았습니까? java.exe가 있습니다.

3. 난이도

JDK가 설치된 경우 컴퓨터에는 두 개의 JRE 세트(JRE 자체와 JDK의 JRE)가 있습니다. 전자 세트에는 후자 세트보다 서버측 Java 가상 머신이 적습니다.

(1)Sun에서 동일한 JRE의 두 세트를 설치하기 위해 JDK를 요구하는 이유는 무엇입니까? 이는 JDK에 Java로 작성된 많은 개발 도구(예: javac.exe, jar.exe 등)가 있고 모두 /lib/tools.jar에 저장되어 있기 때문입니다. tools.jar의 이름을 tools1.jar로 바꾼 다음 javac.exe를 실행하면 다음 결과가 표시됩니다. "main" 스레드 java.lang.NoClassDefFoundError: com/sun/tools/javac/Main에서 예외가 발생했습니다. 즉, javac.exe를 입력하고 java -cp c:/jdk/lib/tools.jar com.sun.tools.javac.Main을 입력하면 동일한 결과를 얻게 됩니다. 여기에서 우리는 javac.exe가 단지 래퍼(Wrapper)일 뿐이며 이를 만드는 목적은 개발자가 너무 긴 명령을 입력하는 것을 방지하기 위한 것임을 증명할 수 있습니다. 그리고 우리는 /lib 디렉토리에 있는 프로그램이 29K보다 크지 않을 정도로 매우 작다는 것을 알 수 있습니다. 여기에서 우리는 결론을 내릴 수 있습니다. 즉, JDK에 있는 거의 모든 도구가 Java로 작성되어 있기 때문에 Java 애플리케이션이기도 합니다. 따라서 JDK에 첨부된 도구를 사용하여 Java 프로그램을 개발하려면 JRE 세트도 직접 첨부해야 합니다. 따라서 JDK 디렉토리 JRE에 있는 세트는 일반 Java 프로그램을 실행하는 데 사용됩니다.

(2) 컴퓨터에 두 세트 이상의 JRE가 설치된 경우 누가 결정합니까? 이 중요한 작업은 java.exe에 해당됩니다. java.exe의 임무는 Java 프로그램을 실행하는 데 적합한 JRE를 찾는 것입니다. java.exe는 다음 순서로 JRE를 검색합니다. 1) 자체 디렉터리에 JRE가 있습니까? 2) 상위 디렉터리에 JRE가 있습니까? 3) 레지스트리를 쿼리합니다. [HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment] . 따라서 java.exe의 실행 결과는 컴퓨터에서 JRE가 실행되는 것과 밀접한 관계가 있습니다.

(3) JDK-->JRE-->Bin 디렉토리에는 서버와 클라이언트라는 두 개의 폴더가 있습니다. 여기에는 실제 jvm.dll이 있습니다. jvm.dll은 단독으로 작동할 수 없습니다. jvm.dll이 시작되면 명시적 방법(즉, Win32 API의 LoadLibrary() 및 GetProcAddress()를 사용하여 보조 동적 링크 라이브러리를 로드함)과 이러한 보조 동적 링크를 사용합니다. 라이브러리 동적 링크 라이브러리(.dll)는 jvm.dll이 있는 디렉터리의 상위 디렉터리에 있어야 합니다. 따라서 어떤 JVM을 사용하려는지 JRE가 있는 디렉터리의 jvm.dll을 가리키도록 PATH를 설정하기만 하면 됩니다.

4. 가장 주류를 이루는 JDK는 Sun에서 출시한 JDK입니다. Sun 외에도 IBM에서 개발한 JDK, BEA에서 개발한 JDK, JDK에서 개발한 JDK가 많이 있습니다. 등.

위 내용은 jdk와 jre의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.