1. 研究目的与意义、国内外研究现状(文献综述)
研究背景及课题意义:由于最近10年内虚拟机以及大量建立在虚拟机之上的程序语言大量出现并蓬勃发展,越来越多的程序语言编写的程序可以编译成与操作系统和机器指令集无关的、平台中立的格式。各种不同平台的虚拟机与所有平台都统一使用字节码作为程序存储格式,实现语言无关性。虚拟机从概念上看,是一个想象中的、能运行字节码的操作平台,是由虚拟机规范定义的抽象计算机。每个程序都是运行于某个具体的虚拟机实现的实例上。在java虚拟机规范中,一个虚拟机实例的行为是分别按照子系统、内存区、数据类型以及指令这几个术语来描述的。这些组成部分一起展示了抽象的虚拟机的内部抽象体系结构。从功能模块上看,虚拟机的内部体系结构主要分为五大模块:类装载器子系统、运行时数据区、执行引擎、本地方法接口和垃圾收集模块。类装载器子系统负责把字节码文件载入虚拟机;它是运行程序的第一道流程;执行引擎是虚拟机的核心,它执行虚拟机的指令;本地方法接口是实现方法与宿主机本地方法互相调用的连接点,通过本地方法接口可以实现对宿主机本地方法的调用,加强了程序的平台无关性。 java虚拟机不和包括java在内的任何语言绑定,它只与class字节码文件这种特定的二进制文件格式所关联,字节码文件中包含了java虚拟机指令集和符号表以及若干其他辅助信息。虚拟机的类加载机制需要将描述类的数据从字节码文件加载到内存,并对数据进行校验、转换解析和初始化。对字节码文件的结构分析是java虚拟机第一步类装载的重要步骤,是第二步执行引擎的数据入口,了解class字节码文件的结构对后面进一步了解虚拟机执行引擎有很重要的意义。研究现状及发展: class字节码文件的数据结构是与类装载器子程序对应的,它的具体结构已经在虚拟机规范中的规定明确确定下来。class字节码文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在class文件中,中间没有任何分隔符。根据java虚拟机规范的规定,class字节码文件格式采用一种类似于c语言结构体的伪结构来存储数据,这种结构中只有两种数据类型:无符号数和表。无符号数属于基本的数据结构,有1个字节、2个字节、4个字节和8个字节的无符号数,无符号数可以用来描述数字、索引引用、数量值或者按照utf-8编码构成字符串值。表是由多个无符号数或者其他表作为数据项构成的复合数据类型,表用于描述有层次关系的复合结构的数据,整个class文件本质上就是一张表。 class字节码文件结构自java虚拟机规范第1版订立以来,已有十年历史。这十多年间,java技术体系有了翻天覆地的改变,jdk的版本号已经从1.0提升到1.8。相对于语言、api以及java技术体系中其他方面的变化,class字节码文件结构一直处于比较稳定的状态,class字节码文件的主体结构、字节码指令的语义和数量几乎没有出现任何变动,所有对class字节码文件格式的改进,都集中在访问标志、属性表这些在设计上可扩展的数据结构中添加内容。 class字节码文件格式所具有的平台中立、紧凑、稳定和可扩展的特点,是java技术体系实现平台无关、语言无关两项特性的重要支柱。java技术体系发展至今,许多商业机构和开源机构寂静在java语言之外发展出一大批在java虚拟机上运行的语言,如clojure、groovy、jruby、jython、scala等,这些语言要在java虚拟机上运行,就需要统一编译为class字节码文件。因此,研究class字节码文件的内部结构就具有了更广泛的意义。
参考文献:
[1] billvenners.深入java虚拟机[m].曹晓刚,蒋靖.第1版.北京:机械工业出版社,2005
2. 研究的基本内容和问题
研究目标及内容:设计一个能够分析并详细显示class字节码文件中各个数据项所对应含义的class字节码文件结构分析工具。
该工具主要实现的功能有:读取指定的class字节码文件;分析class字节码文件结构并用树型结构显示class字节码文件的具体结构。
class字节码文件是8位二进制字节流,数据项按顺序存储在class字节码文件中,相邻的项之间没有间隔,从而可以使class文件紧凑。
3. 研究的方法与方案
研究方法及技术路线: 1、通过查阅书籍资料以及网上搜寻相关资料了解class字节码文件的结构 2、运用java程序设计语言实现对class字节码文件结构的类的构造,并根据class文件进行初始化测试。
完成界面设计,并将class字节码文件结构类中的信息重新构成目录树结构,以文件目录的形式显示。
3、进行代码的整合以及整体调试。
4. 研究创新点
特色或创新之处 1.通过对class文件结构分析工具的编写,加深对class文件格式和字节码的理解。
2.虚拟机在装载class文件时都是对用户及开发人员透明的,本研究能够通过开发可视化结构分析工具来详细解析class文件,对了解虚拟机机制提供参考。
结构分析工具需要结构化系统化的编程思想,能够为开发大型软件系统积累经验。
5. 研究计划与进展
研究计划及预期进展 1)2016.01-2016.02 对class文件结构以及虚拟机相关知识的学习,了解class文件的内部结构。
2)2016.02-2016.03 完成设计class文件总类,能够读取分析class文件并初始化class文件总类的具体参数。
3)2016.03-2016.04 界面设计。
课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。