此文主要对 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. jsoncpp代码实例

    最近开始使用 jsoncpp,以前一直在使用cJSON,但是使用cJSON的时候经常会忘记free掉json的内存,结果造成了内存泄露,程序跑着跑着就崩溃了.所以最近把json转移到了jsoncpp上 ...

  2. JBPM4.4与SSH2之整合

    JBPM4.4与SSH2之整合(附完整源码) 这是我来到这世上二十多年来,第二次写博客啊.哈哈  这些天,想着把jbpm4.4与ssh2整合一下,由于之前从来没用过jbpm,也不知道各版本之间会有什么 ...

  3. JAVA图片处理--缩放,切割,类型转换

    import java.io.*; import java.awt.*; import java.awt.image.*; import java.awt.Graphics; import java. ...

  4. QRadioButton 使用方法

    QRadioButton 控件是Qt中实现多选一功能的控件,它的使用方法如下: 声明控件: QRadioButton *rbutton; 然后实现它的响应函数: void YourClass::on_ ...

  5. 仿5173游戏交易平台系统SQL注入(可直接脱裤)+Getshell

    最近没事登登好几年前玩过的游戏看看,发现有人喊高价收号,这一看就是骗子,这等骗子还想骗我?我就来看看这逗逼是怎么骗人的,结果发现这人给了一个说是 5173平台交易的网站,叫我直接把号的信息填上去然后填 ...

  6. XSS挑战第一期Writeup

    0x00 起因 这期 XSS 挑战的起因是在阅读“Modern Web Application Firewalls Fingerprinting and Bypassing XSS Filters”过 ...

  7. 关于如何用php 获取当前脚本的url

    关于用php 获取当前脚本的url很多朋友会说很简单,但是要获取很详细的就要经过多次判断哦. $PHP_TIME = time();$PHP_SELF = isset($_SERVER['PHP_SE ...

  8. linux的信号机制

    软中断信号(signal,又简称为信号)用来通知进程发生了异步事件.进程之间可以互相通过系统调用kill发送软中断信号.内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件.注意,信号只是用 ...

  9. 【iHMI43 4.3寸液晶模块】demo例程(版本1.00)发布

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

  10. Metasploit 笔记

    目录一.名词解释···································································· 3二.msf基础··············· ...