此文主要对 JDK、JRE、JVM进行简单的介绍,给各位亲们一个参考。若有不足之处,敬请各位大神指正,不胜感激!

一、基本概念

JDK(Java Development Kit:Java 开发工具包) 是面向开发人员使用的 SDK(Software Development Kit:一般指软件开发包, 可以包含函数库、编译程序等), 它提供了 Java 的开发环境和运行环境。我们一般用 JDK 来代指Java API,Java API 是 Java 的应用程序接口,是前辈们写好的一些 Java Class,包括一些重要的语言结构以及基本图形,网络和文件 I/O 等等 ,我们在自己的程序中,调用前辈们写好的这些 Class,来作为我们自己开发的一个基础。随着 Java 的不断快速发展,现在已经有越来越多的性能更好或者功能更强大的第三方类库供我们使用。

JRE(Java Runtime Environment:Java 运行环境) 是指 Java 的运行环境,也就是我们说的JAVA平台, 是面向 Java 程序的使用者, 而非开发者。所有的Java程序都要在JRE下才能运行。包括JVM和JAVA核心类库和支持文件。与JDK相比,它不包含开发工具——编译器、调试器和其它工具。

JVM(Java Virtual Machine:Java 虚拟机) 是指 Java 虚拟机, JVM 是 JRE 的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM 有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用。Java 语言是跨平台运行的,其实就是不同的操作系统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的类文件(class文件)。类文件的组成包括 JVM 指令集,符号表以及一些补助信息。

二、JDK安装目录JRE

安装 JDK 后,电脑会有两套 JRE,一套位于Java\jdk\jre(代号A),另外一套位于 Java\jre(代号B) 目录下。JDK 的 bin 目录下有各种 Java 程序需要用到的命令,与 jre 下的 bin 目录最明显的区别就是 jdk 下才有 javac。

JRE 的地位类似于 PC 机,Win32/64 应用程序需要操作系统帮我们运行,同样 Java 程序也必须要 JRE 才能运行。所以装完 JDK 后,如果分别在硬盘上不同目录安装了多套 JRE,那么电脑就有多台虚拟的 Java PC 机,均具有运行 Java 程序的功能。在一定程度上,只要亲的电脑安装了 JRE,就可以正确运行 Java 应用程序(JRE 的版本不能低于 Java应用程序 编译的版本,防止程序出错)。

三、Java程序运行时如何选择JRE

若系统中存在多套以上的 JRE,Java 应用程序运行时的 JRE 如何确定呢?这个重大任务就落在 java.exe 身上。java.exe 的工作就是找到合适的JRE来运行 Java应用程序。java.exe 依照以下顺序来查找 JRE:

  1. 当前目录下的 JRE;
  2. 父目录下的 JRE;
  3. 系统变量配置

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

四、三者关系

下图很好的表面了JDK,JRE,JVM三者间的关系:

五、Java应用程序运行概要示意图

利用 JDK(调用Java API)开发了属于的 Java 程序后,通过 JDK 中的编译程序(javac)将我们的文本 Java 文件编译成 .class 文件,在 JRE 上运行这些 .class 文件,JVM 解析这些 .class 文件中的字节码,映射到 CPU 指令集或 OS 的系统中调用。概要示意图如下所示:

Java学习-003-JDK、JRE、JVM简介的更多相关文章

  1. Java学习 1.2——简述JVM,JRE,JDK的关系

    在上一节中,我们了解了JVM相关的知识,有兴趣的话可以先去看一下: Java学习 1.1——(JVM介绍)Java为什么能够跨平台? 这个篇主要分享的是JRE,JDK,JVM三者的区别,简言之: JD ...

  2. Java基础知识 ——JDK,JRE和JVM

    1.开发简单的Java程序过程: 名词解释: JDK:JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行 ...

  3. java的概念了解(jdk,jre,jvm,javase,javaee,javame)

    jvm jvm:java virtual machine,俗称:java虚拟机,只认识xxx.class这类文件 jre jre:java runtime environment,俗称java运行环境 ...

  4. 1、Java语言概述与开发环境——JDK JRE JVM理解

    一.理解概念: 1.JDK(Java Development Kit Java开发工具包) JDK是提供给Java开发人员使用的,其中包含Java的开发工具,也包括JRE,所以安装了JDK,就不用单独 ...

  5. Java的特性和优势以及不同版本的分类,jdk,jre,jvm的联系与区别,javadoc的生成

    Java 1.Java的特性和优势 Write Once,Run Anywhere 简单性 面向对象 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性 2.Java的三大版本 JavaSE:标 ...

  6. Java开发介绍之JDK JRE JVM 和 环境变量配置

    一.JDK>JRE>JVM JDK(Java Development Kit):Java开发工具包 JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和 ...

  7. JDK,JRE,JVM区别与联系(ZZ)

    http://www.cnblogs.com/hencehong/p/3252166.html 我们开发的实际情况是:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JD ...

  8. JDK,JRE,JVM区别与联系-理解与概括

    我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析 ...

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

    JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工 ...

随机推荐

  1. Json 数组拼接

    var str1 = {"name": "apple", "sex": "21"};                 / ...

  2. JS中的闭包的一些理解!

    在日常的开发中,基本上是不会遇到关于闭包的这样,但是,因为在一些特殊的情况下,必须采用闭包,所以这里简单的概述下什么是闭包: OK!简而言之,闭包只是一个名词而已,我们更注重于他所实现的功能,也就是我 ...

  3. 使用freemarker生成word,步骤详解并奉上源代码

    1.   步骤 1.    用word编辑好模板 1. 普通字符串替换为 ${string} 2. 表格循环用标签 <#list userList as user> 姓名:${user.u ...

  4. iOS开发之UITextField的使用详解

    UITextField的使用详解 UITextField控件是开发中,使用频率比较高的控件了,那么有必要总结一下. 一.UITextField手动编写控件 UITextField  *txtAccou ...

  5. Qt Creator Shortcuts 快捷键大全

    编号 快捷键 功能 1 Esc 切换到代码编辑状态 2 F1 查看帮助(选中某一类或函数,按下F1,出现帮助文档) 3 F2 在光标选中对象的声明和定义之间切换(和Ctrl+鼠标左键一样的效果,选中某 ...

  6. Intent学习笔记

    Intent首先字面意思大概是意图.负责activity之间或者,activity与service等(我只知道这么点)之间信息的传递.就跟快递员起的作用差不多(我这这么理解),由一下六部分组成: Co ...

  7. JDBC连接执行 MySQL 存储过程报权限错误:User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted,

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  8. Go学习记录

    操作系统:Windows 一.下载 go官网:https://golang.org/go下载地址:https://golang.org/dl/ 二.安装 安装包有msi安装版本,以及zip压缩包版本. ...

  9. Klayge 引擎的安装

    http://www.klayge.org/wiki/index.php?title=%E4%BE%8B%E5%AD%90%E7%A8%8B%E5%BA%8F&redirect=no& ...

  10. PHP 错误与异常 笔记与总结(9)自定义错误处理器

    自定义错误处理器更加智能. <?php class myErrorHandler{ //$message:错误信息 //$filename:错误文件名 //$line:错误行号 //$vars: ...