JDK、JRE、javac和JVM的关系
.java为Java的源文件后缀,编写的代码需要写在.java文件中。
Javac编译器,用于读取Java源代码,并将其编译成字节代码。经过javac编译后形成.class,是字节码文件。
Java虚拟机(JVM)运行.class文件从而实现程序的运行。
1、JVM——java virtual machine,就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
2、JRE——java runtime environment,是指java运行环境。光有JVM还不能完成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。所以,在你写完java程序编译成.class之后,你可以把这个.class文件和jre一起打包发给朋友,这样你的朋友就可以运行你写程序了。(jre里有运行.class的java.exe)
3、JDK——java development kit,是java开发工具包,基本上每个学java的人都会先在机器上装一个JDK,那他都包含哪几部分呢?让我们看一下JDK的安装目录。在目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的是以下四个文件夹:bin、include、lib、 jre。
bin:最主要的是编译器(javac.exe),但IDE并不使用它,因为有自己的编译器
include:java和JVM交互用的头文件
lib:类库
jre:java运行环境(注意:这里的bin、lib文件夹和jre里的bin、lib是不同的)
现在我们可以看出这样一个关系,JDK包含JRE,而JRE包含JVM。总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。
Eclipse、ide、NetBeans等其他IDE有自己的编译器而不是用JDK bin目录中自带的,所以在安装时你会发现他们只要求你选中JRE路径就ok了。
JDK、JRE、javac和JVM的关系的更多相关文章
- JVM,JDK,JRE
JVM,JDK,JRE 什么是JVM Java 虚拟机. 这个名词由Java和虚拟机前后两部分组成. 它有和其他虚拟机共性:JVM是通过软件模拟的计算机系统. 它也有自己的特性:JVM使用软件模拟的指 ...
- jdk、jre、jvm的关系
JDK里面的工具也是用JAVA编写的,它们本身运行的时候也需要一套JRE,如C:\Program Files\Java\jdk1.5.x\目录下的JRE.而C:\Program Files\Java\ ...
- jdk jre jvm 关系
很多朋友可能跟我一样,已经使用JAVA开发很久了,可是对JDK,JRE,JVM这三者的联系与区别,一直都是模模糊糊的. 今天特写此文,来整理下三者的关系. JDK : Java Development ...
- 【java】JDK、JRE、JVM的关系
目录结构: contents structure [-] 什么是JDK,JRE,JVM 安装JDK的时候为什么有两个jre 专用JRE 共用JRE 共用JRE和专用JRE的对比 java的跨平台特性 ...
- java-01 JAVA三大版本比较&JDK、JRE、JVM 的关系
1. java三大版本比较 1.1 java SE javaSE 是java标准版的简称,其定位是个人计算机应用(应用原生界面比较ugly) 全称:Java Platform Standard Edi ...
- JDK、JRE、JVM三者关系
一.JDK.JRE.JVM三者的关系 JDK包含了JRE和JVM,JRE包含了JVM,其中JRE中没有javac 附一张官网的详细图: 二.RIA RIA(富客户端):能完成浏览器无法完成的功能,它是 ...
- jvm jdk jre 关系
JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工 ...
- JVM学习笔记之JDK、JRE、JVM的关系(二)
JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE.Java工具和Java基础类库.Java Runtime Enviro ...
- 浅谈 JVM 结构体系、类加载、JDK JRE JVM 三者的关系
一.java类,创建.编译.到运行的工程: 1.随便建一个Java类,保存后就是一个.java文件, 2.然后我们使用 javac命令编译 .java文件,生产 .class文件. 3.再然后使用 j ...
随机推荐
- spring boot app
一个demo 可以参考一下 AppConfig @Configuration @ComponentScan(basePackages = { "org.whm.test" }) ...
- sharepoint_study_9
描述:sharepoint2013 网站修改导航条标题 SuiteBartext 图示: 解决: 管理员身份进sharepoint powershell ,依次敲入搞定1. $app = Get-SP ...
- hau1021 Fibonacci Again(递归)
Fibonacci Again Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- 阿里云ECS服务器FileZilla'被动模式失败'的处理办法
现象:FileZilla客户端连接服务器报错:“状态: 服务器发回了不可路由的地址.被动模式失败.” 解决办法:1.在[FileZilla Server]-Edit-Settings-Passi ...
- oracle wm_concat函数 列转行 分组函数
(1)select mark, wm_concat(status) from DISSENT_INFO t GROUP BY mark; 查出来的数据 mark status 222 ...
- spring boot 启动时运行代码(2)ApplicationListener
项目概览: StepExecutor: @Component @Slf4j public class StepExecutor implements Runnable { @Autowired pri ...
- 时间戳date 命令
时间戳date 命令 [chenxiaohao@iZbp1c0q444r0hp2gq8lhmZ server]$ echo $(date +%Y%m%d) ——————>今天 2018032 ...
- 转 关于bootstrap--表格(table的各种样式)
https://www.cnblogs.com/shark1100913/p/5627233.html 关于bootstrap--表格(table的各种样式) 1.table-striped:斑马 ...
- Robot Framework自动化测试(一)
=============所需要环境========== Python: https://www.python.org/ RF框架是基于python 的,所以一定要有python环境. Robot f ...
- 性能测试工具LoadRunner17-LR之Controller windows系统资源性能常用计数器
1.System %Total Processor Time 该计数值用于体现服务器整体的处理器利用率,对多处理器而言,该计数值体现的是所有CPU的平均利用率.如果该值的数值持续超过90%,则可以说明 ...