此文主要对 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. 《菊与刀》--[美]鲁思·本尼迪克特(Ruth Benedict)

    <菊与刀>这本书实在是好看. 下面是一些书摘: * 由在美国曾经全力以赴与之战斗的敌人中,日本人的脾气是最琢磨不透的. * “菊”本是日本皇家家微,“刀”是武家文化的象征. * 日本人的格 ...

  2. 兼容ie[6-9]、火狐、Chrome、opera、maxthon3、360浏览器的js本地图片预览

    html代码: <div id="divPreview"> <img id="imgHeadPhoto" src="Images/H ...

  3. T-SQL查询进阶--深入浅出视图

    视图可以看作定义在SQL Server上的虚拟表.视图正如其名字的含义一样,是另一种查看数据的入口.常规视图本身并不存储实际的数据,而仅仅存储一个Select语句和所涉及表的metadata. 视图简 ...

  4. MemPool

    腾讯笔试题,设计内存池,alloc和free都是O(1). 和LRUCache类似,这里用了一个list表示可用的空间,用一个map来记录这块内存是否已分配,这样free的时候才可能O(1). cla ...

  5. 【iCore2双核心板视频教程二】iM_LAN 100M 以太网模块TCP通信例程

    ============================== 技术论坛:http://www.eeschool.org 博客地址:http://xiaomagee.cnblogs.com 官方网店:h ...

  6. HttpRequestDeviceUtils

    import javax.servlet.http.HttpServletRequest;public class HttpRequestDeviceUtils { /**Wap网关Via头信息中特有 ...

  7. javaWeb应用部署结构浅析

    要成功部署一个Web应用,则必须遵循以下标准(参考)目录结构. 2.目录说明 1)WEB-INF目录:必须直接放在Web应用上下文之下(即一级目录). 2)class目录:必须直接放在WEB-INF目 ...

  8. POJ 1088 滑雪(记忆化搜索)

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 92384   Accepted: 34948 Description ...

  9. ASP.NET\ASP.NET MVC表单提交遇到的问题结论

    同步提交的两种基本方式 1,用type=“submit”按钮.form没有必要runat=“server” <form method="post" action=" ...

  10. ios_常用关键字

    一.关键字说明 1. @synthesize关键字:  根据@property设置,自动生成成员变量相应的存取方法,从而可以使用点操作符来方便的存取该成员变量 . 2. @implementation ...