JVM,JRE,JDK之间的区别和联系
JDK包含了JRE,JRE包含了JVM
- JDK:java开发工具包,针对java开发人员,可以编译运行java程序
- JRE:java运行时环境,针对使用java程序的客户,可以运行字节码(.class),但是不能编译Java源码
- JVM:用来解释执行字节码文件(.class),但不能正确的执行
什么是JVM
JVM是JRE的一部分,是虚拟出来的一台计算机.通过实体计算机仿真各种计算功能来实现,JVM有自己完善的硬件架构,如处理器,堆栈,寄存器等,还有相应的指令集.JVM是Java跨平台的核心,Java程序通过JVM的跨平台,从而使Java程序跨平台.Java程序首选会被编译成字节码文件(.class),JVM的核心任务就是解释字节码文件(.class)并映射到真实CPU指令集或者系统调用.JVM不关系上层Java程序,只关系字节码(.class).
什么是JRE
JRE是Java运行环境,所有Java程序必须依赖JRE才能运行.只有JVM是不能运行字节码文件的(.class),因为解释的字节码的时候需要lib库. JRE里面有两个文件夹
bin/
,lib/
。bin/
就是JVM,lib
就是JVM所需要库。JVM+lib
=JRE
什么是JDK
JDK是Java的核心,包含运行Java运行环境(JRE)和一些Java工具及Java基础类库 。
JDK提供的工具
appletviewer.exe* java-rmi.exe* jrunscript.exe* policytool.exe*
extcheck.exe* javaw.exe* jsadebugd.exe* rmic.exe*
idlj.exe* javaws.exe* jstack.exe* rmid.exe*
jabswitch.exe* jcmd.exe* jstat.exe* rmiregistry.exe*
jar.exe* jconsole.exe* jstatd.exe* schemagen.exe*
jarsigner.exe* jdb.exe* jvisualvm.exe* serialver.exe*
java.exe* jdeps.exe* keytool.exe* servertool.exe*
javac.exe* jhat.exe* kinit.exe* tnameserv.exe*
javadoc.exe* jinfo.exe* klist.exe* unpack200.exe*
javafxpackager.exe* jjs.exe* ktab.exe* vcruntime140.dll*
javah.exe* jli.dll* native2ascii.exe* wsgen.exe*
javap.exe* jmap.exe* orbd.exe* wsimport.exe*
javapackager.exe* jps.exe* pack200.exe* xjc.exe*
Java Api是Java的应用程序接口,里面有很多写好的Java Class,包含一些重要的语法结构以及基本图形,网络和文件IO,我们可以直接调用。
总结
- 有JVM和lib库(JRE)就可以执行字节码(.class)文件(Java程序)
- 有JRE可以运行(Java程序)但是还不能开发Java程序,需要JDK(JRE+开发工具)才可以
windows 安装jdk
会发现有两个目录,其实只需要jdk1.8.0_91
就可以,里面包好了jre,jre1.8.0_91
是JDK单独提供一个一个运行环境
两个目录jre的区别
- 相同点:这两个JRE都可以作为Java程序的运行环境
- 不同点:JDK只能使用自己目录自带的JRE,不能使用外面单独安装的JRE
开发到运行
安装JDK环境,调用本地的Java api完成业务代码,通过JDK的编译器(javac)编译成字节码(.class),然后在JRE上运行这些JAVA字节码,JVM解释这些字节码,映射到CPU指令集或者系统调用。
JVM,JRE,JDK之间的区别和联系相关推荐
- JVM JRE JDK,这些东西到底是什么?(转载)
JVM JRE JDK,这些东西到底是什么? JVM JRE JDK,这些东西到底是什么? 我们在安装好JDK后就可以想象成我们已经买了一台安装好软件的新的电脑. JVM : Java Virtual ...
- jvm优化_Java中JVM,JIR,JRE和JDK之间的区别
jvm优化 JRE,JVM和JDK是您经常与Java编程语言结合使用的三个术语,大多数人会混淆它们或认为它们都是相同的. 在本文中,您将了解什么是Java运行时(JRE),什么是Java虚拟机(JVM ...
- java jli.dll_JVM、JRE、JDK之间的区别和联系,你居然还不知道?
JDK包含了JRE,JRE包含了JVMJDK:java开发工具包,针对java开发人员,可以编译运行java程序 JRE:java运行时环境,针对使用java程序的客户,可以运行字节码(.class) ...
- java开发工具(JVM,JRE,JDK)
java开发工具 JVM(Java Virtual Machine):java虚拟机 JRE(Java Runtime Environment):是Java程序的运行环境,包含JVM和运行时所需要的核 ...
- 2.JVM和DVM之间的区别
1.JVM .java----->.class----->.jar 运行在内存的 栈 栈虚拟机 2.DVM .java----->.class------>.dex-----( ...
- Eclipse中自带的编译器和引入的JRE(JDK)的关系
目录 简单介绍: A 为工作空间设置编译器版本 : 无用 B 为工作空间引入JRE: C 为不同项目选择不同的编译器版本 : Project Facets和Java Compiler D 为不 ...
- JDK,JRE和JVM之间的区别
Table of Contents JAVA开发套件 JAVA运行时环境 JAVA虚拟机 JDK,JRE和JVM之间的差异 JRE和JDK如何工作? JRE如何工作? JVM如何工作? 推荐文章: J ...
- jdk和jre和jvm区别_JDK,JRE和JVM之间的区别
jdk和jre和jvm区别 The difference between JDK and JRE and JVM is one of the popular interview questions. ...
- JVM,JDK,JRE和OpenJDK有什么区别?
本文翻译自:What is the difference between JVM, JDK, JRE & OpenJDK? What is the difference between JVM ...
最新文章
- mysql远程连接设置_MySQL远程连接设置
- CentOS系统时间同步(NTP)
- 学好Python能做什么?有哪些从业方向?
- 在sql server2000的查询分析器里查询oracle的数据
- CodeForces 901D Weighting a Tree(结论)
- 管道的应用(pipe)《深入分析Linux内核源码》
- 使用动态数据进行数据分页
- 关于 JavaScript 浮点运算的精度解决方案
- Atitit.java jna 调用c++ dll 的总结
- 诺基亚n1平板电脑刷机教程_诺基亚N1 完整包线刷升级或救砖教程(不分台版;国行)...
- php读取mpp,php解析mpp文件中的前置任务
- Godot官网新闻翻译 - 2015年
- Android 中关于九宫格图片的那些事
- 告别UAC恼人的弹窗
- 用 PHP 来刷leetCode 之 三数之和
- iphone长截图哪个软件好_这应该是目前为止,iPhone上最好的长截图工具
- PnetLab模拟器一键汉化教程
- c语言void返回什么意思,C语言程序返回值是void什么意思?
- 关于DIY电池均衡器--被动均衡---蓄电池--电瓶车电池组电压均衡的经历
- arm-linux平台的挖矿工具cgminer移植
热门文章
- Word 2003快速输入技巧
- 用Layer.search快速查询图元
- linux源码Makefile详解(完整)-转
- 复杂多目录的Makefile模板及示例-转
- 蓝桥杯 ALGO-5 算法训练 最短路
- [Java] 蓝桥杯ADV-176 算法提高 陶陶摘苹果
- [Python] L1-053 电子汪-PAT团体程序设计天梯赛GPLT
- ai电磁组属于什么组_飞思卡尔智能车电磁组分区算法介绍
- 手把手教你用Spring Cloud和Docker构建微服务
- 通过java程序实现mysql 批量一个表的子段更新另一个表的字段