`
zhaohaolin
  • 浏览: 1011388 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

安装JDK后JRE与JVM联系浅谈

    博客分类:
  • JVM
阅读更多

安装JDK后JRE、JVM之间的关系是什么呢?那么我们要从安装JDK慢慢说起。

如果安装了JDK,会发同你的电脑有两套JRE:

一套位于 <JDK安装目录>\jre

另外一套位于 C:\Program Files\Java\j2re1.4.1_01 目录下

后面这套比前面那套少了Server端的Java虚拟机,不过直接将前面那套的Server端Java虚拟机复制过来就行了。而且在安装JDK可以选择是否安装这个位于 C:\Program Files\Java 目录下的JRE。

如果你只安装JRE,而不是JDK,那么只会在 C:\Program Files\Java 目录下安装唯一的一套JRE。

JRE的地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。 所以当你装完JDK后,如果分别在硬盘上的两个不同地方安装了两套JRE,那么你可以想象你的电脑有两台虚拟的Java PC机,都具有运行Java程序的功能。所以我们可以说,只要你的电脑安装了JRE,就可以正确运行Java应用程序。

1、为什么Sun要让安装JDK后会出现两套相同的JRE?

这是因为JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在 <JDK安装目录>\lib\tools.jar 里。从下面例子可以看出,先将tools.jar改名为tools1.jar,然后运行javac.exe,显示如下结果:

  1. Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac/Main 

这个意思是说,你输入javac.exe与输入

  1. java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main 

是一样的,会得到相同的结果。

从这里我们可以证明javac.exe只是一个包装器(Wrapper),而制作的目的是为了让开发者免于输入太长的指命。而且可以发 现<JDK安装目录>\lib目录下的程序都很小,不大于29K,从这里我们可以得出一个结论。就是JDK里的工具几乎是用Java所编写, 所以也是Java应用程序,因此要使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位于C:\Program Files\Java目录下的那套JRE就是用来运行一般Java程序用的。

2、如果一台电脑在安装JDK后安装两套以上的JRE,谁来决定呢?

这个重大任务就落在java.exe身上。Java.exe的工作就是找到合适的JRE来运行Java程序。

Java.exe依照底下的顺序来查找JRE:

自己的目录下有没有JRE;

父目录有没有JRE;

查询注册表:

  1. [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment] 

所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。

3、安装JDK后我们要认识下JVM

JRE目录下的Bin目录有两个目录:server与client。这就是真正的jvm.dll所在。

jvm.dll无法单独工作,当jvm.dll启动后,会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(.dll)都必须位 于jvm.dll所在目录的父目录之中。

因此想使用哪个JVM,只需要设置PATH,指向JRE所在目录底下的jvm.dll。

安装JDK后JRE、JVM之间的关系呢,需要我们在实际程序的执行中慢慢体会。这里只是简单做个引子,希望对你有所帮助。

分享到:
评论

相关推荐

    jdk、jre、jvm的区别

    ### JDK、JRE与JVM的区别详解 #### 一、引言 在深入探讨JDK、JRE与JVM之间的区别之前,我们首先需要明确这三个概念的基本定义及其各自的作用。对于初学者而言,理解这些核心组件是学习Java编程的基础。 #### 二、...

    【Java面试题】JDK、JRE与JVM的区别

    【Java面试题】JDK、JRE与JVM的区别

    详解JDK,JRE,JVM.md

    详解JDK,JRE,JVM.md

    JDK,JRE,JVM区别与联系.pdf

    Java开发中的JDK、JRE和JVM是三个至关重要的概念,它们构成了Java技术的基础框架。下面将详细阐述这三个术语的区别与联系。 首先,JDK(Java Development Kit)是Java开发工具包,它是整个Java开发的核心。JDK包含...

    大数据必学Java基础(九):JDK,JRE,JVM的区别

    本文主要讲解JDK、JRE和JVM之间的区别。 一、JDK、JRE、JVM的关系 1. JDK(Java Development Kit):Java开发工具包,是Java开发人员必备的软件,包含了编译器(javac)、JRE、调试器、文档生成工具、打包工具等。...

    详解Java中的JDK、JRE、JVM

    Java开发中的JDK、JRE和JVM是三个至关重要的概念,它们构成了Java应用程序的运行基础。理解这三个术语以及它们之间的关系是每个Java开发者必备的知识。 JDK(Java Development Kit)是Java开发工具包,它是Java开发...

    我们必须明白JDK,JRE和JVM之间的差异.mp4

    我们必须明白JDK,JRE和JVM之间的差异.mp4

    jdk与jre的区别

    JDK 与 JRE 的区别 JDK(Java Development Kit)和 JRE(Java Runtime Environment)是 Java 语言的两个核心组件,它们之间存在着一定的关系和区别。下面我们将详细介绍 JDK 和 JRE 的概念、区别和关系。 JDK JDK...

    JDK_JRE_JVM关系简示图.png

    简示JDK_JRE_JVM的大小关系

    JDK JRE与JVM1

    Java 技术体系的核心组成部分包括 JDK (Java Development Kit),JRE (Java Runtime Environment) 和 JVM (Java Virtual Machine)。理解这三个概念对于Java开发者至关重要。 首先,JDK是Java开发工具包,它是Java...

    Java中JDKJRE和JVM解析.doc

    ### Java中的JDK、JRE与JVM解析 #### 一、引言 在Java编程领域,JDK、JRE和JVM这三个概念是至关重要的基础知识点。虽然它们经常被提及,但很多人仍然对它们之间的关系和各自的功能感到困惑。这篇文章将深入探讨这...

    AIX JDK1.8 JRE1.8 32位

    标题中的"AIX JDK1.8 JRE1.8 32位"指的是IBM的Java开发工具包(JDK)和Java运行环境(JRE)的32位版本,这两个组件都是针对AIX操作系统设计的。AIX,全称Advanced Interactive eXecutive,是IBM推出的一种基于UNIX的...

    29.027.JAVA基础教程_Java语言概述-JDK、JRE、JVM的关系(29).rar

    了解Java的核心组件,如JDK、JRE和JVM之间的关系对于任何Java开发者来说至关重要。在这个基础教程中,我们将深入探讨这些概念。 首先,我们来解析标题中的关键术语: 1. **JDK(Java Development Kit)**:它是...

    【Java基础】JDK、JRE、JVM之间的关系

    3.JDK、JRE、JVM的区别 3.1 Java为什么能跨平台,实现一次编写,多处运行? 1.编译器、调试器 JAVA编译器(javac.exe) JAVA编译器的作用是将(.java文件)编译成字节码文件,是最基本的开发工具。编译时首先读入java...

    Java中的数据类型及JDK, JRE, 和 JVM解释及关系.zip

    Java的数据类型与JDK、JRE、JVM的关系并不直接,但它们共同构成了Java编程的基础。理解数据类型可以帮助我们更好地编写代码,而理解JDK、JRE和JVM的工作原理则有助于我们优化程序性能,解决运行时问题。 总之,Java...

    jdk与jre的不同

    ### JDK与JRE的不同 #### 一、JDK(Java Development Kit)简介 JDK,全称为Java Development Kit,是Sun Microsystems(后被Oracle收购)为Java开发者提供的一套全面的开发工具集。它包含了编写、编译、调试、...

    JDK、JRE、JVM是什么?

    JDK(java Development Kit):java 的开发和运行环境,包括java 的开发工具和 jre,在程序员的电脑上当然要安装JDK; JRE(Java Runtime Environment):它是Java运行环境,包括,java 运行的所需的类库+JVM(java ...

    jdk和jre的区别

    ### JDK与JRE的区别 #### 一、概念解析 **JDK**(Java Development Kit):作为Java开发工具包,它是面向开发人员的核心组件。它不仅包含必要的运行环境(即JRE),还提供了完整的Java软件开发环境,包括编译器...

Global site tag (gtag.js) - Google Analytics