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. 游戏引擎基于Handle的资源管理

    基于Handle的资源管理方案,第一时间想到的应该是Windows了,但是真正想让我实施这个方案的,是<游戏编程精粹1>里面的游戏资源管理篇章的给出的方案.在<游戏编程精粹1> ...

  2. Zookeeper原理与Curator使用

    近期打算实现一个基于Zookeeper的分布式的集群状态一致性控制, 对Zookeeper的原理不太了解, 正好学习一下, 网上找到了几篇文章, 先贴在这边, 等我熟读官方文档后, 再来补充自己的见解 ...

  3. js正则表达式(2)

    找到以某个字符串开头的字符串 var myReg=/^(abc)/gim; 如果不加m,那么只找一行,而加了m可以找到每行中以该字符串开头的匹配文本. 如: abcsfsdfasd7890hklfah ...

  4. win32com操作word(2):常用用法

    一.对象的位置关系: 1.Range属性位于(部分): Selection__Section__Cell__Paragraph__Table__Bookmark__Comment__Row__List ...

  5. highcharts 图例全选按钮方法

    $('#uncheckAll').click(function(){ var chart = $('#container').highcharts(); var series = chart.seri ...

  6. HDU6118:度度熊的交易计划(入门级最小费用可行流)

    度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题: 喵哈哈村以及周围的村庄可以看做是一共由n个片区,m条公路组成的地区. 由于生产能力的区别,第i个片区能够花费a[i]元生产1个商品,但 ...

  7. POJ-3680:Intervals (费用流)

    You are given N weighted open intervals. The ith interval covers (ai, bi) and weighs wi. Your task i ...

  8. docker镜像管理基础

    [root@node01 ~]# docker pull quay.io/coreos/flannel:v0.10.0-amd64 v0.10.0-amd64: Pulling from coreos ...

  9. mac hosts

    1 在命令行中输入:sudo vim /etc/hosts. 2 输入开机密码,就可打开文件.按下键盘i,对文件进入可编辑状态. 3 修改完,先按esc退出编辑模式,之后,按shift+:,再按wq来 ...

  10. poj2228Naptime——环形DP

    题目:http://poj.org/problem?id=2228 dp[i][j][0/1]表示前i小时中第j小时睡(1)或不睡(0)的最优值: 注意第一个小时,若睡则对最终取结果有要求,即第n个小 ...