`
litf
  • 浏览: 11794 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

private JRE与public JRE

    博客分类:
  • Java
阅读更多

 

l           private JRE

jdk1.6.0_18目录下面有一个子目录jre,这就是private JRE所在的目录。所谓私有JRE,即JDK中的工具包需要用到的JRE。这个jre目录名称是固定的,不能更改。为什么JDK中的工具包需要用到JRE呢?比如javac.exe,这是JDK工具包中的编译器,用来将JAVA源文件编译为.class文件,这个编译器实际上是用Java语言编写的,它的主要执行类位于Program Files\Java\jdk1.6.0_18\lib\tools.jar下面,这时候javac.exe就会使用私有JRE来运行tools.jar这个包里面编译器类,来对JAVA源文件进行编译。实际上,在JDK安装目录下面的bin目录中的大部分.exe文件,都仅仅只是一个外壳(包装器)而已。

l           public JRE

公共JRE在安装过程中可以选择为别的位置。它包括各种浏览器的插件,以便于能够在浏览器中执行JAVA小应用程序(Applet)。公共JRE在安装过程中,会把一部分动态链接库(DLL文件)和java.exe拷贝到c:/windows/system32目录下面。此目的是为了方便客户在安装完JRE之后,无需改动PATH环境变量(搜索路径)即可运行JAVA程序。那么,如果我们在安装完JRE之后(无论是单独安装JRE,还是在安装JDK的同时选择安装公共JRE都是一样的),不作任何环境变量的配置,直接打开控制台,运行java命令,会如何呢?控制台将会执行在c:/windows/system32目录下的java.exe外壳程序,它将会找到公共JRE中的jvm.dll(这才是真正的JAVA虚拟机)以及其它需要的动态链接库,运行Java虚拟机,Java虚拟机会自动加载公共JRE下面的一个rt.jar包,它是Java核心类库所在。

c:/windows/system32/目录下的java.exe程序是如何得知公共JRE所在的位置的呢?这主要通过注册表。

 

注册表信息:

 

 

点开Java Development Kit下面的1.6,可以看到有JavaHome的定义(指向jdk1.6.0_18目录):



 

 

点开Java Runtim Environment下面的1.6可以看到JavaHome(指向了jre6目录)



 

 

由上可知,java.exe通过注册表(通过CurrentVersion得到当前版本号,通过版本号找到JavaHome)找到了公共JRE所在,也就找到了JAVA虚拟机的所在。

 

所以,我们首先要搞清楚哪个java.exe被执行了,其次要搞清楚java.exe找到了哪个JRE!这两件事情弄清楚了,很多其它的问题,也就有答案了。

 

  • 大小: 5.6 KB
  • 大小: 7.2 KB
  • 大小: 11.4 KB
分享到:
评论
4 楼 sam_kee 2010-11-29  
我是用公共jre的,装上去也没啥问题
3 楼 zht110227 2010-11-27  
我安装jdk的时候,环境变量都设置好了,直接复制的,不是安装版本,但是安装基于java软件的时候,提示找不到jdk,不知道这些软件是怎么找jdk的,注册表吗?我的系统环境变量已经配置好了也没有用。
2 楼 wangxinpier 2010-11-17  
如果一台机器上没有安装JRE,可以把我本机上的JRE复制到目录机器上,并通过BAT文件写一下环境变量,是否可以设置好JRE,这样在windows/system32是否就不需要那些*java*文件了呢?
1 楼 mercyblitz 2010-03-22  
JDK和JRE?

相关推荐

    2023年java学习笔记课后选择答案整理.doc

    在Java的下载页面中,你可以找到不同的JRE(Java Runtime Environment)版本,如Web JRE、Private JRE、Server JRE和Public JRE。其中,JRE提供了运行Java应用程序所需的环境,但不包含用于编译源代码的工具。如果你...

    java学习笔记课后选择答案整理.doc

    - B、Private JRE - C、Server JRE - D、Public JRE **答案解析:** 此题考查 JRE 的类型。通常情况下,JRE 指的是 Java 运行时环境,包含了 Java 虚拟机和 Java 核心类库。题目中的描述不够明确,但根据常规理解,...

    java RSA 加密签名工具包(开发)

    该工具在jre7以及以上的环境能够更好的运行。 使用范例: public class Demo { public static void main(String[] args) { String msg = "天气阴了,我犯困了"; RSAPrivateKey privateKey = RSAUtils.private...

    JavaPGP及PKI加密

    1. 这个例子包含了两种流行的Public Key/Private Key加密方式的例子; 2,使用Public Key加密后,然后使用Private Key来解密; 3,PGP可针对文本及文件加密解密,而PKI暂时只针对文本,日后再补充针对文件的; 4...

    java面试题集锦 java基础、集合、多线程等

    private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } Cat c1 = new Cat("王磊"); Cat c2 = new Cat("王磊"); System.out.println(c1....

    2023年Java面试题集锦.docx

    } private String name; public String getName() { return name; } public void setName(String name) { this.name = name; }}Cat c1 = new Cat("王磊"); Cat c2 = new Cat("王磊"); System.out.println(c1.equals...

    java应用教程

    - 类属性:可以是 public、private、protected 或 friendly(默认),分别对应不同的访问权限。final 修饰的属性是不可变的。 - 方法:定义了对象的行为,可以有返回值或无返回值,可以抛出异常。方法的访问权限、...

    SpringBoot整合Mybatis连接SQL Server 双数据源配置

    至此,我们已经完成了Spring Boot、Mybatis与SQL Server的双数据源配置。在实际应用中,你可以根据业务需求扩展到更多的数据源。确保在每次切换数据源后都正确设置和清除`DataSourceContextHolder`,以防止数据源...

    java笔试面试试题附带答案

    **1.3 JRE与JDK的区别?** - **JRE (Java Runtime Environment)**:Java运行环境,包含了Java虚拟机(JVM)以及运行Java程序所需的类库。它是面向用户的,用户安装JRE就可以运行Java程序。 - **JDK (Java ...

    java语言基础

    #### 三、JDK、JRE与JVM的区别 - **JDK**: 包含了JRE以及开发工具,是开发Java应用程序的基础。 - **JRE**: 包含了运行Java应用程序所需的所有组件,但不含开发工具。 - **JVM**: Java Virtual Machine,是Java程序...

    Java连sqlserver2005

    #### 一、数据库设置与配置 在探讨如何利用Java连接SQL Server 2005之前,首先需要确保数据库服务器端已经做好了相应的配置。这包括在SQL Server Management Studio中进行安全性和登录设置。 1. **创建登录名**:...

    200道java面试题资料.pdf

    JRE(Java Runtime Environment)是运行Java应用程序所必需的环境,它包含了JVM(Java Virtual Machine)和其他运行时库。JVM是Java程序的执行引擎,负责解释和执行字节码。 5. `==`与`equals()`的区别:`==`用于...

    后端-Java基础.pdf

    以上就是Java基础的一些核心概念,涵盖了语言特性、面向对象编程、字节序、JDK与JRE的区别、访问修饰符、初始化顺序、接口与抽象类的比较,以及Java的多态机制。掌握这些知识将为Java编程打下坚实的基础。

    Spring Boot 整合Mybatis连接SQL Server(1)

    <version>8.4.1.jre11 ``` 接下来,我们需要在`application.properties`中配置数据库连接信息: ```properties spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=test spring.datasource....

    alipay公钥密钥build.rar

    在"alipay公钥密钥build.rar"压缩包中,可能包含了生成的公钥和私钥文件,这些文件通常是.pem或.der格式,可以被Java的`KeyFactory`类解析并转化为`PublicKey`和`PrivateKey`对象。文件名可能为`public_key.pem`和`...

    java面经八股文整理

    本文总结了 Java 语言的基础知识,涵盖了 JDK、JRE、JVM 等概念,类和对象的区别、构造方法和普通方法的区别、作用域的四种类型、Integer 与 int 的区别、&和&&的区别、类变量与实例变量的区别、=="和equals的区别等...

    2021年java面试题集锦.docx

    private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } Cat c1 = new Cat("王磊"); Cat c2 = new Cat("王磊"); System.out.println(c1....

    AES加密无限强度策略JAR文件

    在Java中,默认情况下,对于AES的加密操作,JRE(Java Runtime Environment)有限制,特别是对于256位密钥的使用,存在所谓的“无限强度加密策略”限制。这是因为出于出口管制和法规遵从性的考虑,Oracle JDK默认不...

    JAVA面试题集锦2023

    private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } Cat c1 = new Cat("王磊"); Cat c2 = new Cat("王磊"); System.out.println(c1...

Global site tag (gtag.js) - Google Analytics