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 提供的工具
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 指令集或者系统调用。
版权声明: 本文为 InfoQ 作者【入门小站】的原创文章。
原文链接:【http://xie.infoq.cn/article/eb5b93ddc1c0d5cdd910aee2e】。文章转载请联系作者。
评论