JDK、JRE、JVM和javac的关系-程序员宅基地

技术标签: java基础知识  

    .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)

    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了。 

 

注:

javac是在jdk中还是jre中

是JDK来编译java代码,将其转化成java虚拟机(jre)所能解析的机器码,然后在用jre运行,得出结果

所以编译器是在jdk中 jre仅为运行环境

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36582604/article/details/82664881

智能推荐

springboot打包排除掉resources下的html,css,js,jpg图片等资源文件_springboot 过滤器排除html-程序员宅基地

文章浏览阅读1.9k次。用eclipse做springboot项目时,由于生产上是动静态分离配置,jar文件中不需要html,css,js等静态文件解决办法是:在pom.xml文件中加入配置指定排除的部分 <resources> <resource> <directory>src/main/resources</directory> <excludes> _springboot 过滤器排除html

“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。”的解决办法。_asp中请添加一个名为jquery-程序员宅基地

文章浏览阅读1.1k次。方法一、更改配置文件修改前修改后方法二、设置配置文件在配置文件中添加方法三、1.在网站根目录下新建一scripts文件夹,向里边添加jquery-1.7.2.min.js和jquery-1.7.2.js(可根据自己需要使用不同的版本),2.在根目录下添加全局应用程序类Global.asax文件,在Appli_asp中请添加一个名为jquery

vue前端模拟简单的分页_vue前端本地数据模拟分页-程序员宅基地

文章浏览阅读3.6k次,点赞2次,收藏6次。&lt;Table border :columns="fieldColumns" :data="fieldData2" height='500'&gt;&lt;/Table&gt;&lt;!--表格自己写,这里暂时用iview的表格模拟一下--&gt; &lt;!--分页--&gt; &lt;div class="result-foot"&g_vue前端本地数据模拟分页

自己手撸一个JSON解析器,撸撸更健康-程序员宅基地

文章浏览阅读485次。JSONJSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。采用完全独立于语言的文本..._手撸解释器

rman 异地恢复,备份路径不一样时数据库恢复-程序员宅基地

文章浏览阅读283次。异地恢复rman 需要 盘阵节点不一样,我们需要一下几个方面: 1 . 作软连接 ln -s source target2. 恢复控制文件,到mount 状态3. alter database rename f..._rman两边备份片路径不一样

随便推点

python第六次作业----爬取学校官网_练习: 使用urllib.request模块读取学校网站首页内容,并存储网页 提示:学校网址:ht-程序员宅基地

文章浏览阅读1.9k次,点赞2次,收藏24次。题目描述用到的知识点:正则表达式,爬虫相关的简单知识.python代码import urllib.requestimport re#入口网址url = 'http://www.zzu.edu.cn/'#进入链接地址进行读取data = urllib.request.urlopen(url).read()data = data.decode('UTF-8')s..._练习: 使用urllib.request模块读取学校网站首页内容,并存储网页 提示:学校网址:ht

新来个技术总监:谁再用Redis实现订单超时自动关闭,以后就不用来了!-程序员宅基地

文章浏览阅读855次,点赞2次,收藏11次。点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天 10:33更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2021超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库中间件 Sharding-JDBC 和 MyCAT 源码解析作业调度中间件 E..._redis实现订单超时自动取消

关于浮点运算 ._浮点运算场景-程序员宅基地

文章浏览阅读548次。在大多数嵌入式平台中,都没有硬浮点运算的支持,浮点数的计算比定点运算慢上百倍。所以尽量不要使用1.5*size+minSize 这样的运算,要用size+size>>1+minSize代替。_浮点运算场景

关于RT-Thread的背景和成长_rt thread允许商用吗-程序员宅基地

文章浏览阅读338次。记录下RT-Thread 0.3.x的成长2009-06-17,12:41:53 先解释几个常见问题:1. RT-Thread从哪里而来?RT-Thread RTOS,Kernel部分完成于2006年上半年,创始人源于国内一老牌RTOS:DOOLOO RTOS,甚至是BSP一些结构都源于DOOLOO RTOS。但与DOOLOO RTOS明显不同的是,Ker..._rt thread允许商用吗

element-ui的table前端分页勾选,触发两次handleSelectionChange方法-程序员宅基地

文章浏览阅读6.1k次,点赞4次,收藏3次。1:问题描述在用element-ui的table组件时,表格上的数据是前端分页的,我加上了@selection-change="handleSelectionChange"事件之后每次点击勾选框就会触发两次handleSelectionChange方法,然后导致勾选不了,如果不分页的话不会出现这种情况。2:解决办法使用:row-key 这个属性呢。我用的这个属性绑定了 表格数据的唯一标识数据列,比如id,问题就解决了。记得这个属性绑定的数据列,是不能重复的~..._handleselectionchange

Android学习十九:ContentProvider初步-程序员宅基地

文章浏览阅读903次。ContentProvider-----转http://cache.baiducontent.com/c?m=9d78d513d99056ae28fa950d1a17a771695797144fc0a61068a4e25f92144c30427193b930541513a3b66b6770b83f5dfd813765460137c79ddf893acacae23f5f8f30457..._每个contentprovider都拥有一个公共()用于表示

推荐文章

热门文章

相关标签