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. HDU2457 DNA repair —— AC自动机 + DP

    题目链接:https://vjudge.net/problem/HDU-2457 DNA repair Time Limit: 5000/2000 MS (Java/Others)    Memory ...

  2. Struts2 自定义输入校验 第五弹

    Struts2的校验框架有两种:一种是validate方法,另一种是有效的xml文件. Action中自定义方法的输入校验,对于通过action的method属性所指定的自定义方法myExecute, ...

  3. ubuntu安装 LNMP+redis

    一.更新软件源 1.修改软件源为163的源 sudo vim /etc/apt/sources.list 替换源为163的源: deb http://mirrors.163.com/ubuntu/ i ...

  4. NOIP 2016【蚯蚓】

    好吧,我承认我是个智障-- 这道题一眼看上去就是个堆,然而实际上有单调性. 注意到,如果 \(q = 0\) 的话,将蚯蚓的左右两边分开丢进两个队列中,则两个队列都是单调不增的,因为每次取出的蚯蚓长度 ...

  5. H5内容安全尺寸

    设备独立像素:iPhone5:320 * 568 >> 微信网页可视区高度:504px   iPhone6:375 * 667 >> 微信网页可视区高度:603px 设备独立像 ...

  6. ZigBee自组网地址分配与路由协议概述

    1. ZigBee简介 ZigBee是基于IEEE802.15.4标准的低功耗局域网协议.根据国际标准规定,ZigBee技术是一种短距离.低功耗的无线通信技术. ZigBee协议从下到上分别为物理层( ...

  7. Python3解leetcode Single Number

    问题描述: Given a non-empty array of integers, every element appears twice except for one. Find that sin ...

  8. Python文件运行时报TabError: inconsistent use of tabs and spaces in indentation

    1. 问题描述 Python文件运行时报TabError: inconsistent use of tabs and spaces in indentation 2. 问题原因 tab 和 space ...

  9. POJ-3262

    Protecting the Flowers Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7923   Accepted: ...

  10. 使用BIND安装智能DNS服务器(三)---添加view和acl配置

    智能DNS的配置主要修改named.conf文件,利用view和acl来实现. acl文件内容,这里只列出一部分,具体详细的可以参考这个网址 纯真IP库,给出了十分详细的IP地址,下载安装后,打开软件 ...