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. POJ 1330 Nearest Common Ancestors 【最近公共祖先LCA算法+Tarjan离线算法】

    Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20715   Accept ...

  2. javascript正则(带g符号) 多次调用test 结果交替出现

    链接:https://segmentfault.com/q/1010000000582051 http://stackoverflow.com/questions/2851308/why-does-m ...

  3. 虚拟化技术及ip netns简介

    虚拟化技术: Iass:infrastructure as a server 直接启动一个虚拟机,需要什么程序自己安装 Paas:platform as a servicce 启动一个虚拟机,并安装了 ...

  4. linux应用之apache的源码安装(centos)

    第一部分:前期准备 需要下载的东西 下载 Apache 源码包  下载地址: http://httpd.apache.org/download.cgi                          ...

  5. Apache Flink vs Apache Spark——感觉二者是互相抄袭啊 看谁的好就抄过来 Flink支持在runtime中的有环数据流,这样表示机器学习算法更有效而且更有效率

    Apache Flink是什么 Flink是一款新的大数据处理引擎,目标是统一不同来源的数据处理.这个目标看起来和Spark和类似.没错,Flink也在尝试解决 Spark在解决的问题.这两套系统都在 ...

  6. druid相关的时间序列数据库——也用到了倒排相关的优化技术

    Cattell [6] maintains a great summary about existing Scalable SQL and NoSQL data stores. Hu [18] con ...

  7. 机器学习:朴素贝叶斯--python

    今天介绍机器学习中一种基于概率的常见的分类方法,朴素贝叶斯,之前介绍的KNN, decision tree 等方法是一种 hard decision,因为这些分类器的输出只有0 或者 1,朴素贝叶斯方 ...

  8. 1111 Online Map (30)(30 分)

    Input our current position and a destination, an online map can recommend several paths. Now your jo ...

  9. bzoj1177&p3625 [APIO2009]采油区域p[大力讨论]

    我好菜菜啊. 给定矩形,从中选出三个边长K的正方形互不重叠,使得覆盖到的数总和最大. 想的时候往dp上钻去了..结果一开始想了一个错的dp,像这样 /************************* ...

  10. Cache系列:spring-cache简单三步快速应用ehcache3.x-jcache缓存(spring4.x)

    前言:本项目基于spring4.x构建,使用ehcache3.5.2和JCache(jsr107规范) 一.依赖 除了ehcache和cache-api外,注意引用spring-context-sup ...