码迷,mamicode.com
首页 > 其他好文 > 详细

基础知识——JVM JRE JDK

时间:2015-05-06 12:40:32      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

? ?

引言

? ?

我们如果要用Java编写程序的话就必须安装JDK,那么JDK是什么,另外安装JDK的同时,会提示用户需要安装JRE,一般这两个就像孪生兄弟一样,装了JDK之后,如果我们进入到安装路径下,会发现除了JDK外,还有一个文件夹JRE,那么什么又是JRE,最后都说Java是跨平台语言,因为它的代码是运行在一个叫做Java虚拟机上的,那么什么又是Java虚拟机呢,本文大致说明一下这三者的区别,关于Java虚拟机如果想深入了解,建议阅读《深入理解Java虚拟机》这本书,个人认为这本书写得很棒

? ?

说明

? ?

JDK

? ?

首先JDKJava Development Kit的缩写,也就是Java开发工具箱的意思,它包含了各种库和类,比如如下图所示,当然也包括了JRE

? ?

技术分享

? ?

另外多说一句,经常用到的用来编译Java文件的javac命令就是在JDK中的,利用JDK中的javac.java文件编译成.class文件,然后再装入到Java虚拟机中,由Java运行环境执行,而运行java程序是由其中的java命令执行的

? ?

另外再多说一句,如果类指定了包名,那么编译的时候要加上-d选项,比如在当前目录下生成与包名相对应的目录层次的编译示例如下:

? ?

javac -d . HelloWorld.java

? ?

JRE

? ?

接下来是JREJava Runtime Environment,Java运行环境,既然是Java运行环境,就是说这是Java程序运行必备的环境,由于Java程序是在Java虚拟机上运行的,所以必然JRE是包含JVM的,我们看看JRE文件夹下有些什么,提供了很多bin和lib

? ?

技术分享

? ?

bin中是很多应用程序,包括动态链接库以及window程序

? ?

技术分享

? ?

除此之外JRE还包括了Java API

? ?

JVM

? ?

接下来我们来简单说说JVMJVM包括:JVM解释器,指令系统,寄存器,栈,存储区,碎片回收区

? ?

JVM解释器:相当于CPU,处理字节码

? ?

指令系统:与计算机相似,一条指令由操作码和操作数两部分组成,操作码是8位二进制数,主要是说明一条指令的功能,操作数视情况而定

? ?

寄存器:作用是可以快速的与JVM的解释器进行数据交换,432位寄存器:PC程序计数器,optop寄存器操作数栈顶指针,frame寄存器指向当前执行环境指针和vars寄存器指向当前执行环境中第一局部变量的指针

? ?

栈:指令执行时数据和信息存储的场所和控制中心

? ?

存储区:存储编译后的字节码

? ?

关于Java虚拟机如果想深入了解,强烈建议阅读《深入理解Java虚拟机》这本书

? ?

CLASSPATH

? ?

这个变量很重要,但是很多时候我们都忽视它,尤其是在我们用eclipse等集成开发环境的时候,CLASSPATH环境变量是在编译Java源码和运行程序的时候用到的,它是Java程序所依赖的接口、类等的一个搜索路径,比如以下一个实例指定了是三个搜索路径,一个是当前路径,一个是一个特定的文件,一个是一个文件夹下的所有文件

? ?

.;c:\jar\logj4.jar;d:\work\java

? ?

另外多说一句,Java在编译和运行程序时不仅在CLASSPATH中去搜索,还会去找jre/lib/rt.jar文件,而且是比CLASSPATH更先找,这个在双亲委派模型中说道,是因为要去加载其中的最基础的一些类,具体可以去看深入理解Java虚拟机这本书的相关部分

? ?

另外再编译和运行时指定CLASSPATH的命令如下

? ?

技术分享

? ?

基础知识——JVM JRE JDK

标签:

原文地址:http://www.cnblogs.com/keedor/p/4481352.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!