欢迎来到天天文库
浏览记录
ID:30858793
大小:627.85 KB
页数:15页
时间:2019-01-04
《理解java虚拟机体系结构-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、理解Java虚拟机体系结构-编程开发技术理解Java虚拟机体系结构丿京文出处:LeoLiang1概述众所周知,Java支持平台无关性、安全性和网络移动性。jfuJava平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么。正是得益TJava虚拟机,它号称的“一次编译,到处运行”才能有所保障。1.1Java程序执行流程Java程序的执行依赖于编译环境和运行环境。源码代码转变成可执行的机器代码,由下面的流程完成:运行时环境编译时环境程序源文件AjavaBjavaCjavaA.classB.classA.classJava编译器B.clas
2、s程序class文件通过本地或网络传递class文件D.classJava虚拟机http://www.cnblogs.cJava技术的核心就是Java虚拟机,因为所冇的Java程序都在虚拟机上运行。Java程序的运彳亍需要Java虚拟机、JavaAPI和JavaClass文件的配合。Java虚拟机实例负责运行一个Java程序。当启动一个Java程序吋,一个虚拟机实例就诞生了。当程序结束,这个虚拟机实例也就消亡。Java程序Java程序Java程序Java程序针对Linux的Java平台针对Win32的Java平台针对电视的拒前平台针对烤箱的拒灯平台Linux机器WindowPC机器电视机烤
3、箱http://www.cnblogs.com/lao-liangJava的跨平台特性,因为它有针对不同平台的虚拟机。1.2Java虚拟机Java虚拟机的主要任务是装载class文件并且执行其中的字节码。由下图可以看出,Java虚拟机包含一个类装载器(classloader),它可以从程序和API小装载class文件,JavaAPI小只有程序执行时需要的类才会被装载,字节码由执行引擎来执行。程序class文件JavaAPI的class文件http://www.cnblogs.com/lao-liang/当扭腹虚拟机由主机操作系统上的软件实现时,Ja眩程序通过调用本地方法和主机进行交互。Ja
4、va方法由Java语言编写,编译成字节码,存储在class文件中。木地方法rtic/c++/汇编语言编写,编译成和处理器相关的机器代码,存储在动态链接库中,格式是各个平台专有。所以本地方法是联系Java程序和底层主机操作系统的连接方式。由于Java虚拟机并不知道某个class文件是如何被创建的,是否被篡改一无所知,所以它实现了一个class文件检测器,确保class文件中定义的类型可以安全地使用。class文件检验器通过四趟独立的扫描来保证程序的健壮性:•class文件的结构检杏•类型数据的语义检查•字节码验证•符号引用验证Java虚拟机在执行字节码吋还进行其它的一些内置的安全机制的操作,
5、他们作为Java编程语言保证Java程序健壮性的特性,同时也是虚拟机的特性:•类型安全的引用转换•结构化的内存访问•自动垃圾收集•数组边界检查•空引用检杏1.3Java虚拟机数据类型Java虚拟机通过某些数据类型来执行计算。数据类型可以分为两种:基本类型和引用类型,如下图:http://www.cnblogs.com/laoJiang/boolean有点特别,当编译器把Java源码编译为字节码时,它会用int或byte表示boolcano在Java虚拟机中,false是由0表示,rfotrue则由所有非零整数表示。和Ja眩语言一样,Java虚拟机的基本类型的值域在任何地方都是一致的,不管主
6、机平台是什么,一个long在任何虚拟机中总是一个64位二进制补码的有符号整数。对于returnAddress,这个基本类型被用来实现Java程序屮的finally子句,Java程序员不能使用这个类型,它的值指向一条虚拟机指令的操作码。2体系结构在Java虚拟机规范中,一个虚拟机实例的行为是分别按照子系统、内存区、数据类型和指令來描述的,这些组成部分一起展示了抽象的虚拟机的内部体系结构。2.1class文件Javaclass文件包含了关于类或接口的所冇信息。class文件的“基本类型”如下:ul1个字节,无符号类型u22个字节,无符号类型u44个字节,无符号类型u88个字节,无符号类型如果想
7、了解更多,Oracle的JVMSE7给出了官方规范:TheJava?VirtualMachineSpecificationclass文件包含的内容:ClassFile{u4magic;用来判断是否是Javaclass文件u2minor_version;u2major_version;u2constant_pool_count;//魔数:OxCAFEBABE,〃次版木号〃主版木号//常量池大小cpinfoconstant_
此文档下载收益归作者所有