第1章 Java与KVM的关系
1-1 Java的概念
1-2 Java平台结构
1-3 Java的特色
1-4 Java的世界
1-5 企业版J2EE
1-6 标准版J2SE
1-7 微型版J2ME
1-7-1 J2ME的架构
1-7-2 J2ME的特性
1-7-3 目前的J2ME环境
1-8 K Virtual Machine
1-8-1 为什么要用 KVM
1-8-2 KVM移植技术
1-9 Java Card
1-10 小结
第2章 Java类文件格式
2-1 maglc number
2-2 minor_version, major_version
2-3 constant_pool_count,constant_pool[]
2-3-1 CONSTANt_Class
2-3-2 CONSTANT_Fieldref
2-3-3 CONSTAN_Methodref
2-3-4 CONSTANT_InterfaceMethodref
2-3-5 CONSTANT_String
2-3-6 CONSTANT_Integer
2-3-7 CONSTANT_Float
2-3-8 CONSTANT_Long
2-3-9 CONSTANT_Double
2-3-10 CONSTANT_NameAndType
2-3-11 CONSTANT_Utf8
2-4 access_flags
2-5 this_class
2-6 super_class
2-7 interfaces_count,iuterfaces[]
2-8 fields_count,fields[]
2-9 methods_count,methods[]
2-10 attributes_count,attributes[]
2-10-1 SourceFile attribute
2-10-2 ConstantValue attrimbute
2-10-3 Code attribute
2-10-4 Exceptions attribute
2-10-5 InnerClasses attribute
2-10-6 Synthetic attribute
2-10-7 LineNumberTable attribute
2-10-8 LocalVariableTable attribute
2-10-9 Deprecated attribute
2-11 HelloWorld_simple.class
2-12 小结
第3章 KVM执行时所用的class与instance结构
3-1 执何时期的instance结构
3-2 执行时期的class结构
3-3 执行时,class与 class之间的关系
3-4 加载Java类的过程
3-4-1 loadClassfilelnternal()
3-4-2 loadClassfileHelper()
3-5 小结
第4章 KVM执行时所用的数据结构
4-1 The pc Register
4-2 Java heap
4-2-1 allocateHeap()
4-2-2 InitializeHeap()
4-2-3 callocPermanentObject()
4-3 Java eXecution StaCk
4-4 Runtime COnstant Pool
4-5 Frames
4-5-1 Local variable array
4-5-2 Operand stacks
4-5-3 Dynamic linking
4-5-4 Method 正常结束执行的情况
4-5-5 Method不正常结束执行的情况
4-6 小结
第5章 KVM内部的Interpreter
5-1 KVM运行时间取代byte code的机制
5-2 Split infrequent byte codes
5-3 在KVM内与interpreter相关的文件
5-3-1 bytecodes.c
5-3-2 execute.c
5-4 更进一步加快interpreter的速度:使用汇编语言
5-5 小结
第6章 Methods invokation
6-1 从Java类文件中加载method属性到内存中
6-1-1 loadOneMethod()
6-1-2 getUTF8string(PO1NTERLIST_HANDLE,unsigned short)
6-1-3 verifyMethodFlags()
6-1-4 verfyName(const char*, enum verifyName_type,bool_t)
6-1-5 skipOverFieldType(const char*,bool_t,unsigned short)
6-1-6 skipOverFieldName(const char*,bool_t,unsigned short)
6-1-7 change_Name_to_Key()
6-1-8 verifyMethodTyPe()
6-1-9 loadMethodAttributes()
6-1-10 loadCodeAttribute()
6-l-11 loadExceptionHandlers()
6-2 调用Method
6-2-l pushFrame()
6-3 小结
第7章 Exceptions
7-1 何时会抛出exceptions
7-2 KVM如何抛出except1ons
7-2-1 raiseException()
7-2-2 raiseExceptlonMsg()
7-2-3 fatalVMError()
7-2-4 fatalError()
7-2-5 throwExceptlon()
7-3 处理一个 exception
7-3-1 findHandler()
7-4 小结
第8章 Garbage Collection
8-1 Tracing garbage collection
8-2 CoPying garbage collection
8-3 KVM1.0版所使用的garbage collection机制
8-4 目前的KVM版本所使用的garbageg COllection机制
8-4-1 Object header
8-4-2 Free list以及 available memory chunk
8-4-3 Compacting
8-4-4 KVM内的garbage collector函数
8-4-5 Temporary root
8-4-6 Global root
8-5 小结
第9章 编写KVM的native methods
9-1 一个简单的范例
9-1-1 Java端的处理
9-1-2 C程序瑞需要作的处理
9-2 在KVM内,对native code的编写有帮助的functions
9-3 Java code与native code之间传递参数的方法
9-3-1 导入primitive data type类型的参数或返回值
9-3-2 导人instance或array类型的参数或返回值
9-3-3 导入instance类型的参数或返回值
9-3-4 导入array类型的参数或返回值
9-4 抓取Java class内某个var1able的方法
9-4-l 在instance method中抓取instance variable的方法
9-4-2 在instance method中抓取static variable的方法
9-4-3 在static method中抓取static variable的方法
9-5 在native code中如何抛出exception
9-5-l 三种主要的native functions用来抛出exceptions
9-5-2 其他能抛出exceptions的native functions
9-5-3 KVM内部已经定义好的exception class字符串
9-6 Synchronized block的改写
9-6-1 Java的synchronization
9-6-2 Monitor的notify队列与等候队列
9-6-3 在native code中如何完成Java的synchronized关键字
9-6-4 KVM提供了如下的函数可供我们来使用
9-6-5 在native code中如何完成Java中的notify()函数
9-7 Garbage collection
9-7-1 handle
9-7-2 Temporary root
9-7-3 Global rOOt
9-8 小结
第10章 The Technology Compatibilitv Kit(TCK)
10-1 JavaTest简介
10-2 利用JavaTest来进行验证工作的架构
10-3 配合JavaTest来执行Java程序之前的准备操作
10-4 告诉JavaTest你的每一个测试用Java程序的详细信息
10-5 执行JavaTest
10-6 小结