JDK JRE 的作用与区别【转】

对于java初学者来说,往往不懂区分jdk和jre的区别,实际上这两个东西差别很大的,有必要了解一下:

简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。
   JDK就是Java Development Kit
JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。

如果安装了JDK,会发同你的电脑有两套JRE,一套位于 \jre 另外一套位于 C:\Program Files\Java\j2re1.4.1_01 目录下,后面这套比前面那套少了Server端的Java虚拟机,不过直接将前面那套的Server端Java虚拟机复制过来就行了。而且在安装JDK可以选择是否安装这个位于 C:\Program Files\Jav a 目录下的JRE。如果你只安装JRE,而不是JDK,那么只会在 C:\Program Files\Java 目录下安装唯一的一套JRE。

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

       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.NoClassDefFoundError: com/sun/tools/javac /Main 这个意思是说,你输入javac.exe与输入 java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main 是一样的,会得到相同的结果。从这里我们可以证明javac.exe只是一个包装器(Wrapper),而制作的目的是为了让开发者免于输入太长的指命。而且可以发现\lib目录下的程序都很小,不大于2 9K,从这里我们可以得出一个结论。就是JDK里的工具几乎是用Java所编写,所以也是Java应用程序,因此要使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位于C:\Program Files\Java目录下的那套JRE就是用来运行一般Java程序用的。

      2、如果一台电脑安装两套以上的JRE,谁来决定呢?这个重大任务就落在java.exe身上。Java.exe的工作就是找到合适的JRE来运行Java程序。 Java.exe依照底下的顺序来查找JRE:自己的目录下有没有JRE;父目录有没有JRE;查询注册表: [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment] 所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。

     3、介绍JVM JRE目录下的Bin目录有两个目录:server与client。这就是真正的jvm.dll所在。 jvm.dll无法单独工作,当jvm.dll启动后,会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(.dll)都必须位于jvm.dll所在目录的父目录之中。因此想使用哪个JVM,只需要设置PATH,指向JRE所在目录底下的jvm.dll。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lgq_0714/archive/2009/09/23/4582631.aspx




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/268008.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java的JDBC事务详解

事务的特性:1) 原子性(atomicity):事务是数据库的逻辑工作单位,而且是必须是原子工作单位,对于其数据修改,要么全部执行,要么全部不执行。2) 一致性(consistency&#xf…

HashMap中最多只允许一条记录的键为Null,允许多条记录的值为Null

Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复会覆盖),但允许值重复。 Hashmap是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。遍历时&#…

nfs文件系統

nfs 配置:使用NFS系统服务,至少需要启动以下3个系统守护进程。 1.rpc.nfsd 2.rpc.mountd 3.portmap NFS系统服务器端文件系统的共享设置有三种方法1.直接修改/etc/exports文件2.用exports命令来增加和删除目录3.使用图形化的配置方法 NFS系统服务客户端配…

ORA-12154: TNS:could not resolve the connect identifier specified. Solved.

进入系统属性页面 rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3 并添加系统环境变量 ORACLE_HOME ${path} TNS_ADMIND ${path}\network\admin NLS_LANG AMERICAN_AMERICA.ZHS16GBK 其中${path} 从http://www.oracle.com/technetwork/topics/winx64soft-089540.…

敏捷个人: 使用必须、应该、可以来确定每天事情的优先级

你的结果:对事情安排有先后意识,当任务列表出来之后,采用【必做、该做、可做】方法来划分事情优先级,这样可以让自己把精力和时间投入到更有价值的事情上;另外还可以让自己有一个取舍临时事件的方法 必须、应该、可以 …

[技术分享]20171130_Kendo UI _ datePicker日期控件如何只选择年,不选择月,日?

datePicker日期控件是很常用的控件,可以使用 start , depth来控制取值的范围。 start ,depth可以选择的参数有month,year,decade ,century 。 如何要只选择年:我们要用参数 decade ,…

LinkedHashMap的使用

LinkedHashMap LinkedHashMap是HashMap的一个子类; LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的; 在遍历的时候会比HashMap慢,不过有种情况例外,当H…

摩托罗拉:未来一切以手机为中心

人类有计算机以来,计算工具曾经是强大的计算机,个人电脑的出现,PC不但是重要计算的工具,同时它是互联网终端,改写了人类工作和生活的格局。未来的计算会是往什么方向发展,移动互联网成为人们关注的焦点&…

JQuery中this指向

如果是元素操作&#xff0c;$(this)就可以指向当前元素 <div id"test">谢小超</div> <script type"text/javascript">$("test").on(click,function(){var x $(this).html();alert(x);}) </script> 如果是方法&#xff0…

com 对象与其基础 rcw 分开后就不能再使用_如何使用 Kubeflow 机器学习流水线

作者&#xff1a;George Novack翻译&#xff1a;Bach&#xff08;才云&#xff09;校对&#xff1a;星空下的文仔&#xff08;才云&#xff09;、bot&#xff08;才云&#xff09;为什么要使用机器学习流水线现在&#xff0c;机器学习流水线&#xff08;Machine Learning Pipel…

在XenApp如何发布SAP的客户端(上)

随着越来越多的企业使用SAP&#xff0c;如何让让外地办事处以及供应商使用SAP已经不再IT经理的烦恼&#xff1f;作为应用虚拟化的王者&#xff0c;Citrix XenApp当之无愧。 首先我们需要了解SAP的基本信息&#xff0c; 1、 SAP的配置文件存储以下四个文件中 SAPlogon.ini …

《Sibelius 脚本程序设计》连载(四十二) - 4.12 Selection

《Sibelius 脚本程序设计》连载(Flash 格式) 转载于:https://www.cnblogs.com/Sibelius/archive/2011/01/08/1930896.html

markdown一边写一边预览_markdown文章编辑利器-基础篇

John Gruber(约翰-格鲁伯)创造了一个简单的语法&#xff0c;却是文章笔记的编辑利器&#xff0c;看看他是怎么做的吧。约翰君一天躺在床上正在思考着给烦人的老总提交会议笔记&#xff0c;一边写一边碎碎念&#xff0c;让我写会议笔记还不如让我写代码。约翰君越想越气&#xf…

【C#】解析C#中JSON.NET的使用

目录结构&#xff1a; contents structure [-]JSON.NET简介Serializing and Deserializing JSONJson ConvertJson SerializerLINQ TO JSONConverting XMLConvert JSON to XMLConvert XML to JSON原文链接JSON.NET对于.NET来说是一个非常高效的JSON框架。 1. JSON.NET的简介 使用…

用手动和自动分别实现使用其DVD安装盘作为本地yum源

一、手动配置使用dvd作为yum源1、mkdir /media/cdrom #创建挂载点2、mount /dev/cdrom /media/cdrom #挂载光盘3、rpm -qa |grep yum #查看有没有yum4、…

android闹钟唤醒不准的原因_俄罗斯睡眠专家:闹钟铃声选错了,可能扰乱你的内分泌...

对不少人来说&#xff0c;起床是件和天性对抗的事。而“自然醒”和“被闹钟吵醒”&#xff0c;完全是两种不同的睡眠体验。近日&#xff0c;俄罗斯一项新研究指出&#xff0c;错误的闹铃声可能给健康带来负面影响。《生命时报》结合研究采访专家&#xff0c;解读闹铃声对身体的…

软件工程个人作业01

|小学生四则运算| 设计思想&#xff1a; 1 程序生成数据&#xff0c;并存到数据库Mysql; 2用户输入数据 3程序接收数据&#xff0c;并判断数据 4返回信息。 源程序代码&#xff1a; java文件 package pers.sun.operateion;//产生一个算式&#xff0c;及相应的结果public class …

db设计专用excel_工程师必备:硬件EMC设计规范

一引言广义的电磁兼容控制技术包括抑制干扰源的发射和提高干扰接收器的敏感度&#xff0c;我们都知道干扰源、干扰传输途径和干扰接收器是电磁干扰的三要素&#xff0c;同时EMC也是围绕这些问题进行研究&#xff0c;而运用最为广泛的抑制方法是屏蔽、滤波和接地&#xff0c;用它…

快速手动替换 Windows 7 系统字体

自从发现 GDI 这个能把 Windows 字体显示效果变得更平滑的软件之后&#xff0c;就欲罢不能了。借用网上的一张图片&#xff08;来源未知&#xff09;&#xff0c;对比了 Windows 标准、Windows Cleartype、GDI 和 Mac OS 四种情况下的字体效果&#xff0c;很明显 GDI 的效果非常…

使用说明 思迅收银系统_便利店收银使用的收银系统应该取决于什么?

生活中&#xff0c;我们常见的便利店规模可大可小&#xff0c;比如最小就十平米&#xff0c;大的话也有可能会好几百平米&#xff0c;有些人疑惑&#xff0c;到底便利店该不该使用收银系统&#xff0c;又或者该如何选择合适的收银系统。其实&#xff0c;不管如何&#xff0c;只…