< /p>
간단히 말해 JDK 는 개발자를 위한 SDK 로 Java 개발 및 운영 환경을 제공합니다. SDK 는 소프트웨어 개발 키트 (Software Development Kit) 로 일반적으로 소프트웨어 개발 키트를 가리키며 라이브러리, 컴파일러 등을 포함할 수 있습니다. -응? < /p>
JDK 는 Java 개발 키트? < /p>
JRE 는 Java 런타임 환경을 나타내며 개발자가 아닌 Java 프로그램을 대상으로 하는 사용자입니다. -응? < /p>
JDK 가 설치된 경우 컴퓨터에 두 개의 JRE 가 있습니다. 하나는 \jre 에 있고 다른 하나는 c: \ program files \ Java \ j2re 1.4.1 _ 00 에 있습니다 JDK 를 설치할 때 c: \ program files \ Java 디렉토리에 있는 이 JRE 를 설치할지 여부를 선택할 수 있습니다. JRE 만 설치하고 JDK 는 설치하지 않으면 고유한 JRE 세트만 C: \ Program Files \ Java 디렉토리에 설치됩니다. -응? < /p>
JRE 의 지위는 PC 와 같습니다. 우리가 작성한 Win32 어플리케이션은 운영 체제가 필요합니다. 마찬가지로 우리가 작성한 Java 프로그램도 JRE 가 있어야 실행할 수 있습니다. 따라서 JDK 를 설치한 후 하드 디스크의 두 곳에 두 세트의 JRE 를 설치한 경우, 컴퓨터에 두 개의 가상 Java PC 가 있고 모두 Java 프로그램을 실행할 수 있는 기능을 가지고 있다고 상상할 수 있습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 컴퓨터명언) 따라서 컴퓨터에 JRE 가 설치되어 있는 한 Jav a 응용 프로그램을 올바르게 실행할 수 있다고 말할 수 있습니다. -응? < /p>
1, 왜 Sun 은 JDK 에 동일한 JRE 두 세트를 설치하도록 했습니까? JDK 에는 Java 로 작성된 많은 개발 도구 (예: javac.exe, jar.exe 등) 가 있으며 모두 \lib\tools.jar 에 있기 때문입니다. 다음 예에서 볼 수 있듯이 tools.jar 를 tools1.jar 로 이름을 바꾼 다음 javac.exe 를 실행하여 다음과 같은 결과를 보여줍니다. exception in thread "main" java.lang.noce Javac.exe 를 입력하는 것은 Java-CP c: \ JDK \ lib \ tools.jarcom.sun.tools.javac.main 을 입력하는 것과 같은 결과를 얻을 수 있습니다. 여기에서 우리는 javac.exe 가 단지 래퍼 (Wrapper) 일 뿐, 개발자가 너무 긴 명령을 입력하지 않도록 하기 위해 만들어졌다는 것을 증명할 수 있다. 그리고 \lib 디렉토리에 있는 프로그램이 모두 작아서 2 9K 이하라는 것을 알 수 있습니다. 여기서 결론을 내릴 수 있습니다. JDK 의 도구는 거의 Java 로 작성되었기 때문에 Java 응용 프로그램이므로 JDK 에 포함된 도구를 사용하여 Java 프로그램을 개발하려면 JRE 세트를 직접 첨부해야 하므로 c: \ program files \ Java 디렉토리에 있는 JRE 세트는 일반 Java 프로그램을 실행하는 데 사용됩니다 -응? < /p>
2, 한 컴퓨터에 두 개 이상의 JRE 가 설치되어 있다면 누가 결정할 것인가? 이 중요한 임무는 java.exe 에 있습니다. Java.exe 의 임무는 Java 프로그램을 실행할 적절한 JRE 를 찾는 것입니다.
Java.exe 는 다음 순서로 JRE 를 찾습니다. 자체 디렉토리에 JRE 가 있습니까? 부모 디렉토리에 JRE; 가 있습니까? 레지스트리 쿼리: [HKEY _ local _ machine \ software \ javasoft \ Java runtime environment] 그래서 java.exe 실행 결과와 컴퓨터 내에서 어떤 JRE 가 실행되었습니까 -응? < /p>
3, 소개 JVM JRE 디렉토리 아래의 Bin 디렉토리에는 server 와 client 의 두 가지 디렉토리가 있습니다. 이것이 진짜 jvm.dll 이 있는 곳입니다. Jvm.dll 은 단독으로 작동할 수 없습니다. jvm.dll 이 시작되면 explicit 메서드 (Win32 API 의 LoadLibrary () 및 GetProcAddress () 를 사용하여 보조 동적 링크 라이브러리를 로드) 를 사용합니다 따라서 사용할 JVM 은 JRE 가 있는 디렉토리 아래의 jvm.dll 을 가리키도록 PATH 만 설정하면 됩니다. < /p >