Jikes研究虚拟机

Jikes研究虚拟机（Jikes Research Virtual Machine,简称Jikes RVM)是一种成熟的用于执行Java程序的虚拟机，其早期版本与当前版本分别在（CPL）与Eclipse公共许可证（EPL）下开放代码。与其他以Java编写的虚拟机不同的是，Jikes RVM采用了元循环技术。

历史

1997年11月，Jalapeño项目作为IBM沃森研究中心的一个内部项目启动。

1999至2000年间，IBM研究人员发布了关于Jikes RVM的新特性的研究资料，一些大学也获得阅览Jikes RVM源代码的权利。

2001年10月，Jikes RVM 2发布，并以通用公共许可证（CPL）开放源代码。2.0版支持PowerPC与Intel架构，而且也支持许多不同的垃圾回收算法。

2002年，2.2版发布，该版的垃圾精确回收器用流行的内存管理工具包重构。

2004年，2.4版发布，这一版本的设计尤其注重于用以运行Eclipse，而稳定性与性能也较之前有一定程度的提高。

2007年，2.9版开始开发，此版重写大量代码来利用Java5.0的新特性并使用了蚂蚁系统。

2008年，3.0版发布，这标志了2.9版开发的完结，Jikes RVM的代码基底也再次趋于稳定。

2009年，3.1版以Eclipse公共许可证（EPL）发布，此版相对于3.0.1版性能大幅提升，并且提供了对原生线程的切换支持。

特性

引导

Jikes RVM采用了元循环技术，因而其需要运行在一个引导Java虚拟机（JVM）上来创建启动镜像。启动镜像在运行时由一个小型的C装入程序载入，其本质是Jikes RVM启动必须的对象的集合，这些对象则是利用引导JVM的反馈所创建。

VM Magic

编译器在VM Magic里为一个類別生成不同的代码（而非字节码）。VM Magic類別允许对内存的直接访问，是影响内存管理工具包的性能的关键所在。VM Magic類別被包含于org.vmmagic包内，同时也为其他的Java项目所使用。

内存管理工具包

内存管理工具包（MMTk）是在Jikes RVM与其他项目（如Singularity系统和Rotor软件项目）都有使用的垃圾精确回收器的一个集合。正如Jikes RVM其他部件一样,MMTk是用Java实现的，但主要还是依赖于VM Magic。

类库

Jikes RVM已经可以使用Apache Harmony与GNU Classpath类库，对OpenJDK类库的实验性支持也已加入。

编译器

Jikes RVM使用基线编译器来快速地为特定的架构生成代码，而后的动态自适应编译利用带有如栈替换等特性的优化编译器重编译代码，其中动态自适应编译系统使用。

运行时

Jikes RVM的运行时有着许多新颖的特性，例如快速锁定机构，协作调度机构以及对异常的快速收集与调度的支持。

处理器支持

Jikes RVM可以支持使用Power PC（即ppc）与IA-32（即x86）指令集的处理器。

研究

正如其名所示，Jikes RVM是个研究项目，因而功能侧重于用于研究新技术。

Jikes RVM也出现在了07、08、10、11年的Google编程之夏比赛中。

参考

外部链接

Jikes RVM在SourceForge的项目  
DaCapo Benchmarks  
WALA  
PearColator 
IBM DevelopWorks中Jikes RVM的介绍  

Category:虚拟化软体