JDK、JRE和JVM三者的关系

Java程序执行过程

JVM(java virtual machine)

注:由于各种操作系统(windows、linux等)支持的指令集(二进制可执行代码)不同,程序代码在不同的操作系统上应该编写的也就应该不同。而Java中的.class字节码文件是种特殊的二进制文件,JVM认得它,可以将它翻译成支持JVM的不同操作系统或硬件平台可执行的机器语言。

Java虚拟机,它是实现跨平台运行的核心部分。由它解释给操作系统执行,不同的操作系统,只需安装对应的java虚拟机,开发人员只需要遵循java规范,就可以在所有的操作系统上运行java程序。就好比一个中国人要演讲(java程序),它可以到世界各地去演讲(不同的操作系统),将写的演讲稿讲出来(编译器将.java文件编译成.class字节码文件),【这里假设世界各地的人要通过听的方式获益来对比操作系统里面要用机器指令】,在哪个地方就配那个地方的翻译(不同平台对应的JVM,JVM交给解释器),给当地人一句一句翻译演讲内容(一句一句解释),翻译一句当地人理解一句(解释一句,执行一句),就会获益(得到结果)。而不是演讲完了,翻译人全部翻译(不产生整个的机器代码程序),如果在翻译过程中,当地人能理解就一直翻译到结束,否则停止(如果解释过程不出现错误,就一直进行到完毕,否则将在错误处停止执行)。中国人至始至终都可以只使用汉语演讲就可以(一套java开发规范)。即一次编译,到处运行。但是,会比系统直接执行的要慢。通过翻译来听肯定没有直接听懂来的快。

程序员写的java程序代码(.java),会通过编译器编译成.class的字节码文件(二进制文件),JVM在为操作系统解释.class文件时需要调用类库lib,而lib类库在JRE中。

JRE(Java Runtime Environment)

Java程序运行环境,用户使用程序,需要这个运行环境。JRE中包含了JVM、JVM工作需要的核心类库和支持文件。但它不是开发环境,里面没有包含任何开发工具(如编译器和调试器)。

JDK(Java Development Kit)

JDK是Java开发工具包,是开发人员使用的,它包括JRE、Java开发工具(javac、java、jdb[调试]等)和Java基础的类库(即Java API),在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,bin里的就是jvm,lib中是jvm工作所需要的类库,而jvm和lib合起来就是jre。其中,JDK中两个主要组件:javac——编译器,将源程序转成字节码,java——运行编译后的java程序(.class后缀的)。

小结:用户运行程序需要运行环境,想要在什么操作系统上都能运行,需要JVM在中间解释,所以运行环境JRE里面包括了JVM以及JVM工作需要的类库,开发人员开发程序需要开发工具包,就需要(编译、执行、调试)工具、以及供开发调用的类库(Java API)以及运行环境,就组成了JDK。

JRE=JVM+JavaSE标准类库       JDK=JRE+开发工具集(例如Javac编译工具等)

有了JDK,就可以通过记事本等文本编辑器编写代码,以.java命名,通过命令行javac  xx.java来编译成字节码文件xx.class,再用java xx来执行。(xx指类名)。

为了方便开发人员开发调试,一些公司开发了Java IDE(Java集成开发工具),如:开源的Eclipse、MyEclipse、NetBeans、IntelliJ IDEA等。

Java基础笔记(一)——JDK、JRE、JVM的更多相关文章

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

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

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

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

  3. 《疯狂Java讲义》(三) ---- JDK&JRE&JVM&CLASSPATH

    JDK: Java SE Development Kit, Java标准版开发包.包括Java编译器,JRE,以及常用的Java类库等. JRE: Java Runtime Environment,运 ...

  4. 9.Java三大版本以及JDK,JRE,JVM简单介绍

    Write Once,Run Anywhere. JavaSE:标准版(桌面程序,控制台开发...),是Java的基础和核心. JavaME:嵌入式开发(手机,小家电...),现在基本不用已经过时. ...

  5. 细分java环境中的JDK、JVM、JRE

    细分java环境中的JDK.JVM.JRE 近来小看了下Android,扑面而来一堆概念JDK.JVM.JRE.SDK.NDK.ADT.缕了一下,其中JDK.JVM.JRE是java环境的东西,而SD ...

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. SETEVENT的使用

    来源:https://msdn.microsoft.com/en-us/library/windows/desktop/ms686915(v=vs.85).aspx 昨天看到这个SetEvent的方法 ...

  2. BZOJ3262 陌上花开 —— 三维偏序 CDQ分治

    题目链接:https://vjudge.net/problem/HYSBZ-3262 3262: 陌上花开 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit ...

  3. sublime 相关配置和快捷键

    1.安装package control  点击sublime的菜单栏 view->show console :现在打开了控制台, 这个控制台有上下两栏, 上面一栏会实时显示sublime执行了什 ...

  4. 分享知识-快乐自己:Hibernate 中Criteria Query查询详解

    1):Hibernate 中Criteria Query查询详解 当查询数据时,人们往往需要设置查询条件.在SQL或HQL语句中,查询条件常常放在where子句中. 此外,Hibernate还支持Cr ...

  5. firfox 和 chrome 移动端Web开发页面调试

    Firefox浏览: 1."Alt+t" 选择工具栏中的“工具”>Web开发者工具>查看器>点击红框所指的地方 或者 F12 [当然这个歌前提是你没有安装fire ...

  6. swoole+nginx反向代理

    nginx配置: server { listen 80; server_name www.swoole.com; root /data/wwwroot/www.swoole.com; location ...

  7. jvm file.encoding 属性引起的storm/hbase乱码

    1. 问题 今天为storm程序添加了一个计算bolt,上线后正常,结果发现之前的另一个bolt在将中文插入到hbase中后查询出来乱码.其中字符串是以UTF-8编码的url加密串,然后我使用的URL ...

  8. 文章预告的自我挖坑系列——D3.js 系列之星光闪烁

    D3.js 是个神奇的工具,下面收集了一些与星星相关的可视化的例子,静待慢慢的把坑填上 雷达图http://bl.ocks.org/kevinschaul/8213691      星空 二维(一)h ...

  9. 【Shell】基础正则表示法及grep用法

    ——<鸟哥的私房菜> 正规表示法就是处理字串的方法,他是以行为单位来进行字串的处理行为:正规表示法透过一些特殊符号的辅助,可以让使用者轻易的达到『搜寻/删除/取代』某特定字串的处理程序:只 ...

  10. 【Shell】通配符与特殊符号

    ——来自<鸟哥的Linux私房菜> 在 bash 的操作环境中还有一个非常有用的功能,那就是通配符 (wildcard) ! 我们利用 bash 处理数据就更方便了!底下列出一些常用的通配 ...