第一章,java的开发运行环境

来源:互联网 发布:淘宝网小饰品批发 编辑:程序博客网 时间:2024/05/17 23:38

1.1 java运行原理与java虚拟机

1.1.1 java运行原理简述 

java源程序 (编译)➽java字节码文件[.class]  (解释)➽java虚拟机(JVM) ➽{Linux、Windows、Mac、其他操作系统}
                                        (JAVA运行原理图)
java与其他传统的解释性语言的区别:
       传统的解释性语言如BASIC在解释执行的时候,是直接将源程序一条一条地通过解释器进行词法分析、语法分析等最终翻译为本地的及其指令,并在CPU上执行。而Java的解释过程是先通过Java虚拟机读取Java字节码文件,java字节码是一套用来在java系统下运行时执行的高度优化的指令集,执行该指令集的系统是Java的虚拟机,通过Java虚拟机执行字节码并将其转换成和本地系统硬件相关的本地指令集,并最终在CPU上执行。
这种特殊的编译和解释过程,才使得Java语言具有了与平台无关性,也正是Java的特色所在。

1.1.2 java虚拟机

JVM分6个功能模块:JVM解释器、指令系统、寄存器、栈、存储区和碎片回收区。
JVM解释器:JVM解释器负责将字节码转换成为CPU能执行的机器指令。
指令系统:指令系统同硬件计算机很相似。一条指令分成操作码和操作数两部分。
 操作码为8位二进制数,操作数可以根据需要而定。操作码是为了说明一条指令的功能,所以JVM可以有多达256种不同的操作指令。
寄存器:JVM有自己的虚拟寄存器,这样就可以快速地和JVM的解释器进行数据交换。为了实现必须的功能,JVM设置了4个常用的32位寄存器:pc(程序计数器)、optop(操作数栈顶指针)、frame(当前执行环境指针)和vars(指向当前执行环境中第一个局部变量的指针)。
栈:JVM栈是指令执行时数据和信息存储的场所和控制中心,它提供给JVM解释器运算时所需要的信息。
存储区:JVM存储区用于存储编译后的字节码等信息。
碎片回收区:JVM碎片回收,是指将那些使用后的Java类的具体实例从内存中进行回收。因此,可以避免开发人员自己编程控制内存的麻烦。随着JVM的不断升级,其碎片回收技术和算法也更加合理。比较经典的算法有引用计数、复制、标记-整理。在JVM1.4.1版以后,产生了一种代收集技术。简单的说,就是利用对象在程序中生产的时间划分成代,以这个代为标准进行碎片回收。


原创粉丝点击