技术标签: ——【深入java虚拟机JVM】
首先笔者想阐明的是:JDK和JRE没想象中的那么简单。
相信大家都知道JDK和JRE是什么,但是具体干什么用不妨先试问下自己,如果能说出个所以然来,那么这篇文章大神请自觉忽略,呵呵,或者可以温故一下。
如果有哪里说的不对的地方还望指出,谢谢。
下面来简单说明下
先上张图,宏观的看一下
从图中可以看出JDK包含JRE包含JVM...
JDK:java development kit (java开发工具)
JRE:java runtime environment (java运行时环境)
引申出JVM
JVM:java virtuak machine (java虚拟机)
一、JDK——开发环境(核心)
java development kit 的缩写,意思是JAVA开发工具,我们写文档做PPT需要office 办公软件,开发当然需要开发工具了,说到开发工具大家肯定会想到Eclipse,但是如果直接安装Eclipse你会发现它是运行不起来 是会报错的,只有安装了JDK,配置好了环境变量和path才可以运行成功。这点相信很多人都深有体会。
JDK主要包含三部分,
第一部分就是Java运行时环境,JVM。
第二部分就是Java的基础类库,这个类库的数量还是非常可观的。
第三部分就是Java的开发工具,它们都是辅助你更好的使用Java的利器。
详寻《玩好JDK,面试不用愁》
二、JRE——运行环境
java runtime environment (java运行时环境)的缩写
1,1_JDK中的JRE
如下图:jdk中包含的jre,在jre的bin目录里有个jvm.dll,既然JRE是运行时环境,那么运行在哪?肯定是JVM虚拟机上了。另,jre的lib目录中放的是一些JAVA类库的class文件,已经打包成jar文件。
1.2_第二个JRE(独立出来的运行时环境)
如下图,不管是JDK中的JRE还是JRE既然是运行时环境必须有JVM。所以JVM也是有两个的。
三、JVM——转换环境
java virtuak machine (java虚拟机)的缩写。
大家一提到JAVA的优点就会想到:一次编译,随处运行,说白了就是跨平台性好,这点JVM功不可没。
JAVA的程序也就是我们编译的代码都会编译为Class文件,Class文件就是在JVM上运行的文件,
只有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib,而jre包含lib类库。
JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
JVM也是一门很深的学问,感兴趣的童鞋可以深入研究,只有好处,没有坏处。
其实有时候面试官问JDK和JRE的区别的目的不是想让你解释什么名词的,而是想看看你的基础和研究JAVA的深浅,还有另一方面就是你是不是经常喜欢问为什么。
总结:
如果你面试遇到这个问题了,不用解释太多,一个词(javac)就够了,如果面试官不傻的话,我相信他已经秒懂了。
如果继续追问的话,再一一给他细分。
http://hi.baidu.com/feng20068123/item/ca8952fa661e5342932af2c2写的非常不错,攒一个!!!!我们在进行iOS开发时,经常会在类的声明部分看见类似于@synthesize window=_window; 的语句,那么,这个window是什么,_ window又是什么,两个东西分别怎么用,这是一个比较基本的问题,也关乎我们理解
以这篇文章为起点,我将开始写一系列关于Apache Karaf的文章,Apache Karaf是一个基于Equinox或者Felix框架开发的一个OSGI容器。
MySQL建表时出错:Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT错误原因:MySQL 5.5只能有一个 TimeStamp解决方案:将其中一列 TimeStamp类型改为 datetime类型修改前数据表:修改后数据表:...
在火星上有个魔法商店,提供魔法优惠券。每个优惠劵上印有一个整数面值K,表示若你在购买某商品时使用这张优惠劵,可以得到K倍该商品价值的回报!该商店还免费赠送一些有价值的商品,但是如果你在领取免费赠品的时候使用面值为正的优惠劵,则必须倒贴给商店K倍该商品价值的金额…… 但是不要紧,还有面值为负的优惠劵可以用!(真是神奇的火星)例如,给定一组优惠劵,面值分别为1、2、4、-1;对应一组商品,价值为火星...
二叉树节点定义如下:struct BinaryTreeNode{ BinaryTreeNode(const T& data) : _data(data) , _pLeft(NULL) , _pRight(NULL) {} T _data; BinaryTreeNode<T>* _pLeft; // 左孩子
您多久访问一次Linux桌面? 您使用什么工具来访问远程桌面?Xrdp是一个开源工具,允许用户通过Windows RDP访问Linux远程桌面。 除了Windows RDP之外,xrdp工具还接受来自其他RDP客户端的连接,如FreeRDP,rdesktop和NeutrinoRDP。 Xrdp现在支持TLS安全层。Xrdp要求xrdp和xorgxrdp包监听33...
SQL> set serveroutput on;SQL> declare 2 begin 3 dbms_output.put_line('diy'); 4 end; 5 /diyPL/SQL 过程已成功完成。
拓扑排序是关键路径实现的基础有两种实现方式:1:dfshttps://blog.csdn.net/aiwo1376301646/article/details/933501032:queuehttps://blog.csdn.net/aiwo1376301646/article/details/93353861关键路径代码参考博客,真心推荐,代码既短又清晰https...
1、事务消费介绍我们经常支付宝转账余额宝,这是日常生活的一件普通小事,但是我们思考支付宝扣除转账的钱之后,如果系统挂掉怎么办,这时余额宝账户并没有增加相应的金额,数据就会出现不一致状况了。上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表插入一条记录外,对应商品表的这个商品数量必须减1吧,怎么保证?!在搜索广告系统中,当用户点击某广告后,除了在点击事...
Linux中vi命令的用法
1. 当前系统日期、时间 select getdate()2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 例如:向日期加上2天 select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.0003. datediff 返回跨两个指定日期的...
假如现在创建了一个package的文件夹,在package文件中有三个文件,__init__.py,pk1.py,pk2.py其中__init__.py为空文件pk1.py文件内容为:def pk1(): return 1pk2.py文件内容为:from .pk1 import *def pk2(): return pk1() + 1所以可以...