JVM,JDK,JRE
JVM,JDK,JRE
什么是JVM
Java 虚拟机。
这个名词由Java和虚拟机前后两部分组成。
它有和其他虚拟机共性:JVM是通过软件模拟的计算机系统。
它也有自己的特性:JVM使用软件模拟的指令集是Java字节码,通过字节码这个中间层做到屏蔽对系统的依赖。
追问:什么是字节码?字节码的好处?
字节码是Java虚拟机的指令,是具有一个字节长度的数字。
好处:和解释性语言相比解决了传统解释性语言执行效率低的问题,同时保留了语言可移植性的特点。所以Java程序高效且无需重新编译便可在多种不同操作系统上运行。
原因是:对于一般的代码,JVM将字节码解释执行,屏蔽对系统的依赖;对于热点的代码,会通过JIT动态编译为机器码,提高执行效率。
再追问:什么是JIT?
JIT是Just In Time的意思,也就是即时编译
再追问:即时编译那么快,为什么不全部都进行即时编译呢?
引用博客园ddzz1991
空间开销的角度看:
对一般的Java方法而言,编译后代码的大小相对于字节码的大小,膨胀比达到10x,如果把所有代码都编译则会显著增加代码所占空间,导致“代码爆炸”。
时间开销的角度看:
对比解释执行和动态编译
解释器的执行,抽象的看:字节码 -> [ 解释器 解释执行 ] -> 执行结果
JIT编译然后再执行的话,抽象的看:字节码 -> [ 编译器 编译 ] -> 机器码 -> [ 执行 ] -> 执行结果
快在哪里呢? 不是“编译”或者“编译+执行”这个动作比“解释”这个动作快,而是 “执行机器码”比“解释执行”要快。 因为,仅仅JIT编译本身就比解释执行一次略慢一些。
对于只执行一次的代码,解释执行比JIT编译更快。 如果JIT编译所有代码,反而会变慢。
JDK和JRE
The JRE allows you to run applications written in the Java programming language. Like the JDK, it contains the Java Virtual Machine (JVM), classes comprising the Java platform API, and supporting files. Unlike the JDK, it does not contain development tools such as compilers and debuggers.
翻译: JRE能运行Java语言编写的程序,和JDK一样包含了JVM,包含Java平台API的类等等。和JDK不同之处: 不包含编译器调试器等开发工具。
从Java9开始,就没有单独的JRE了
JVM,JDK,JRE的更多相关文章
- jvm jdk jre 关系
JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工 ...
- JVM/JDK/JRE/IDE—区别(很经典)
转载于 http://blog.csdn.net/jojo52013145/article/details/5801916 只是为了学习,转载没有别的目地,就是爱copy,copy一点点,进步一点点 ...
- jdk,jre.jvm三者的关系
jdk>jre>jvm jdk=jre+java的开发工具(包括java.exe,javac.exe.javadoc.exe) jre=jvm+java核心类库
- 细分java环境中的JDK、JVM、JRE
细分java环境中的JDK.JVM.JRE 近来小看了下Android,扑面而来一堆概念JDK.JVM.JRE.SDK.NDK.ADT.缕了一下,其中JDK.JVM.JRE是java环境的东西,而SD ...
- jvm、jre、jdk
JVM和JRE浅谈 Java运行时环境JRE包含:Java虚拟机.库函数.运行Java应用程序和Applet所必须的文件,JDK(又称SDK)包含:JRE的超集.编译器.调试器等开发工具. java平 ...
- JDK,JRE,JVM区别与联系(ZZ)
http://www.cnblogs.com/hencehong/p/3252166.html 我们开发的实际情况是:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JD ...
- JDK,JRE,JVM区别与联系-理解与概括
我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析 ...
- JDK,JRE,JVM区别与联系
JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工 ...
- 对JDK,JRE,JVM的理解
JAVA用到现在还是分不太清楚JDK,JRE,JVM这三者的区别与联系,一直都是模模糊糊的.所以今天整理下此中的关系. 简单说明:我们编写的.java文件经过JDK(JDK的bin目录下javac.e ...
随机推荐
- Redis 3.0中文版学习(一)
网址:http://wiki.jikexueyuan.com/project/redis-guide/entry-to-master-a.html http://www.yiibai.com/redi ...
- 除法分块 luogu2261 (坑)
除法分块 除法分块 是指使用分块计算的方法求S=∑i=1n⌊ki⌋S=\sum^{n}_{i=1}{\lfloor{\frac{k}{i}}\rfloor}S=i=1∑n⌊ik⌋的值. 举个例子. ...
- [BZOJ1202] [NZOI2005]狡猾的商人
Description 刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪造的.账本上记录了n个月以来的收入情况,其中第i 个月的收入额为Ai(i=1,2,3...n-1,n), .当 ...
- 《Java并发编程实战》读书笔记-第1章 简介
并发简史 在早期的计算机中不包含操作系统,从头至尾都只执行一个程序,并且这个程序能访问计算机所有资源.操作系统的出现使得计算机每次能运行多个程序,并且不同的程序都在单独的进程中运行:操作系统为各个独立 ...
- ESP8266开发之旅 网络篇⑯ 无线更新——OTA固件更新
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- 图像配准SIFT
(一)图像特征匹配--SIFT 1.1 SIFT背景简介 SIFT算法是David Lowe在1999年提出的局部特征描述子,并在2004年深入发展和完善. SIFT算法是在尺度空间进行特征检测并确定 ...
- ExtJs 扩展类CheckColumn修改源码,支持按条件禁用启用下拉框功能
长话短说,具体的请看图 需求如图: 修改CheckColumn.js源码,添加鼠标点击改变事件 完整JS脚本 Ext.ns('Ext.ux.grid'); Ext.ux.grid.CheckColum ...
- 02 Python学习笔记-基本数据类型(二)
一.基本知识 1.缩进: 2.一行多条语句: 3.断行: 4.注释 # 单行注释 '''这是一段 多行注释''' 5. 变量 1. 变量类型(局部变量.全局变量.系统变量) 2. 变量赋值 多重赋值x ...
- 关于到美国学习cs的亲身感受,希望对你们有所帮助
1.能否向各位寄托天下的朋友们简单介绍一下你自己?比如你国内的学校(或者什么档次),哪年申请出国的,什么专业,硕士还是博士,在美国的学校(或者什么档次),以及留学经历(毕业时间),现在状态(学生?博后 ...
- Python语法入门02
引子 上一篇我们主要了解到了python这门编程语言,今天来说一下关于用户交互,数据类型和运算符方面的学习内容 用户交互 什么是用户交互? 用户交互就是人往计算机里输入数据(input),计算机输出结 ...