深入嵌入式Java虚拟机_深入嵌入式Java虚拟机

第1章 Java与KVM的关系 1

1-1 Java的概念 2

1-2 Java平台结构 2

1-3 Java的特色 4

1-4 Java的世界 5

1-5 企业版J2EE 6

1-6 标准版J2SE 7

1-7 微型版J2ME 9

1-7-1 J2ME的架构 11

1-7-2 J2ME的特性 11

1-7-3 目前的J2ME环境 12

1-8 K Virtual Machine 15

1-8-1 为什么要用KVM 19

1-8-2 KVM移植技术 20

1-9 Java Card 27

第1章 Java与KVM的关系 1

1-1 Java的概念 2

1-2 Java平台结构 2

1-3 Java的特色 4

1-4 Java的世界 5

1-5 企业版J2EE 6

1-6 标准版J2SE 7

1-7 微型版J2ME 9

1-7-1 J2ME的架构 11

1-7-2 J2ME的特性 11

1-7-3 目前的J2ME环境 12

1-8 K Virtual Machine 15

1-8-1 为什么要用KVM 19

1-8-2 KVM移植技术 20

1-9 Java Card 27

1-10 小结 28

第2章 Java类文件格式 29

2-1 magic number 31

2-2 minor_version,major_version 31

2-3 constant_pool_count,constant_pool[ ] 32

2-3-1 CONSTANT_Class 33

2-3-2 CONSTANT_Fieldref 33

2-3-3 CONSTANT_Methodref 34

2-3-4 CONSTANT_InterfaceMethodref 34

2-3-5 CONSTANT_String 35

2-3-6 CONSTANT_Integer 35

2-3-7 CONSTANT_Float 35

2-3-8 CONSTANT_Long 36

2-3-9 CONSTANT_Double 36

2-3-10 CONSTANT_NameAndType 37

2-3-11 CONSTANT_Utf8 39

2-4 access_flags 40

2-5 this_class 41

2-6 super_class 41

2-7 interfaces_count,interfaces[ ] 42

2-8 fields_count,fields[ ] 43

2-9 methods_count,methods[ ] 45

2-10 attributes_count,attributes[ ] 47

2-10-1 SourceFile attribute 48

2-10-2 ConstantValue attribute 49

2-10-3 Code attribute 50

2-10-4 Exceptions attribute 53

2-10-5 InnerClasses attribute 54

2-10-6 Synthetic attribute 56

2-10-7 LineNumberTable attribute 56

2-10-8 LocalVariableTable attribute 58

2-10-9 Deprecated attribute 59

2-11 HelloWorld_simple.class 60

2-12 小结 70

第3章 KVM执行时所用的class与instance结构 71

3-1 执行时期的instance结构 72

3-2 执行时期的class结构 78

3-3 执行时,class与class之间的关系 80

3-4 加载Java类的过程 83

3-4-1 loadClassfileInternal( ) 90

3-4-2 loadClassfileHelper( ) 97

3-5 小结 103

第4章 KVM执行时所用的数据结构 105

4-1 The pc Register 106

4-2 Java heap 106

4-2-1 allocateHeap( ) 111

4-2-2 InitializeHeap( ) 112

4-2-3 callocPermanentObject( ) 115

4-3 Java execution stack 118

4-4 Runtime Constant Pool 120

4-5 Frames 133

4-5-1 Local variable array 139

4-5-2 Operand stacks 140

4-5-3 Dynamic linking 141

4-5-4 Method正常结束执行的情况 142

4-5-5 Method不正常结束执行的情况 142

4-6 小结 142

第5章 KVM内部的Interpreter 145

5-1 KVM运行时间取代byte code的机制 148

5-2 Split infrequent byte codes 156

5-3 在KVM内与interpreter相关的文件 158

5-3-1 bytecodes.c 158

5-3-2 execute.c 163

5-4 更进一步加快interpreter的速度:使用汇编语言 169

5-5 小结 171

第6章 Methods invokation 173

6-1 从Java类文件中加载method属性到内存中 176

6-1-1 loadOneMethod( ) 178

6-1-2 getUTF8String(POINTERLIST_HANDLE, unsigned short) 185

6-1-3 verifyMethodFlags( ) 185

6-1-4 verifyName(const char*, enum verifyName_type, bool_t) 189

6-1-5 skipOverFieldType(const char*, bool_t, unsigned short) 194

6-1-6 skipOverFieldName(const char*, bool_t, unsigned short) 198

6-1-7 change_Name_to_Key( ) 202

6-1-8 verifyMethodType( ) 208

6-1-9 loadMethodAttributes( ) 210

6-1-10 loadCodeAttribute( ) 215

6-1-11 loadExceptionHandlers( ) 219

6-2 调用Method 224

6-2-1 pushFrame( ) 224

6-3 小结 238

第7章 Exceptions 239

7-1 何时会抛出exceptions 240

7-2 KVM如何抛出exceptions 241

7-2-1 raiseException( ) 241

7-2-2 raiseExceptionMsg( ) 243

7-2-3 fatalVMError( ) 244

7-2-4 fatalError( ) 244

7-2-5 throwException( ) 248

7-3 处理一个exception 253

7-3-1 findHandler( ) 254

7-4 小结 256

第8章 Garbage Collection 257

8-1 Tracing garbage collection 259

8-2 Copying garbage collection 260

8-3 KVM1.0版所使用的garbage collection机制 261

8-4 目前的KVM版本所使用的garbage collection机制 262

8-4-1 Object header 262

8-4-2 Free list以及available memory chunk 265

8-4-3 Compacting 270

8-4-4 KVM内的garbage collector函数 275

8-4-5 Temporary root 278

8-4-6 Global root 280

8-5 小结 281

第9章 编写KVM的native methods 283

9-1 一个简单的范例 286

9-1-1 Java端的处理 287

9-1-2 C程序端需要作的处理 291

9-2 在KVM内,对native code的编写有帮助的functions 293

9-3 Java code与native code之间传递参数的方法 294

9-3-1 导入primitive data type类型的参数或返回值 295

9-3-2 导入instance或array类型的参数或返回值 300

9-3-3 导入instance类型的参数或返回值 300

9-3-4 导入array类型的参数或返回值 303

9-4 抓取Java class内某个variable的方法 311

9-4-1 在instance method中抓取instance variable的方法 311

9-4-2 在instance method中抓取static variable的方法 313

9-4-3 在static method中抓取static variable的方法 313

9-5 在native code中如何抛出exception 315

9-5-1 三种主要的native functions用来抛出exceptions 315

9-5-2 其他能抛出exceptions的native functions 316

9-5-3 KVM内部已经定义好的exception class字符串 317

9-6 Synchronized block的改写 318

9-6-1 Java的synchronization 318

9-6-2 Monitor的notify队列与等候队列 320

9-6-3 在native code中如何完成Java的synchronized关键字 321

9-6-4 KVM提供了如下的函数可供我们来使用 323

9-6-5 在native code中如何完成Java中的notify( ) 函数 323

9-7 Garbage collection 324

9-7-1 handle 326

9-7-2 Temporary root 327

9-7-3 Global root 329

9-8 小结 329

第10章 The Technology Compatibility Kit(TCK) 331

10-1 JavaTest简介 334

10-2 利用JavaTest来进行验证工作的架构 338

10-3 配合JavaTest来执行Java程序之前的准备操作 339

10-4 告诉JavaTest你的每一个测试用Java程序的详细信息 340

10-5 执行JavaTest 342

10-6 小结 345

嵌入式系统通常对于资源和执行效率有严格的约束,导致了应用于嵌入式系统中的操作系统通常都提供非常有限的编程接口和系统支持。因此对于传统的嵌入式系统开发人员来说,开发难度相对较大,开发效率也相对较低。Java的出现缓解了这一情况。由于Java的跨平台特性,大批应用程序开发人员可以脱离硬件平台,在桌面的虚拟环境中开发嵌入式应用程序。 与传统的Java虚拟机不同,YJVM(Yet another JVM)是运行在嵌入式Linux内核中的Java虚拟机。实现了解释执行Java字节码、线程管理、执行环境管理、集成Classpath核心类库等基本功能。它可以使Linux在内核层次上支持Java的字节码,从而减少了软件层次、为提高效率留下空间。另外,YJVM中还构造了Java的进程管理,为在嵌入式环境中运行Java程序提供了更安全的环境。不同于纯粹用Java来实现的操作系统的尝试,这个方案更充分利用了现有的操作系统的实践成果,在不牺牲Java跨平台特性的前提下,更有实用价值。 本文从对嵌入式操作系统的讨论入手,结合Java虚拟机的原理和研究状况阐述了YJVM的设计和实现要点,体现了YJVM相比现有的嵌入式Java解决方案和Java操作系统的优势。本文的主要研究内容及成果包括: 1、作为一种嵌入式操作系统,嵌入式Linux的基本结构和与传统嵌入式操作系统相比的特点和优势。 2、嵌入式Java的传统解决方案和Java操作系统的基本结构。以及他们对于YJVM设计的影响和异同。 3、Java虚拟机的工作原理和结构。在YJVM中Java虚拟机的结构和实现方案之间的具体映射。 4、YJVM中程序装载、解释器、进程管理、垃圾收集和对Classpath核心类库集成的具体实现要点. 5、测试方案的制定的依据和结果;测试例程的构造和选择;测试结果的分析和在此基础上提出的改进和发展方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值