InfoQ

新闻

虚拟机接口比较

作者 R.J. Lorimer译者 张龙 发布于 2008年8月11日 下午5时10分

社区
Java
主题
开放源代码,
平台
标签
GNU,
开源Java
Andrew John Hughes最近在其博客 首页上比较了OpenJDK与GNU Classpath两者的差异。Hughes一直从事于OpenJDK虚拟机接口的构建工作,该接口使得OpenJDK通过这个接口与不同的VM实现相结合。这项工作是OpenJDK创新的一部分,而Hughes则是这项创新的八个参与者之一。Hughes今年年初的时候发布了相关的最终提议,而另外一些参与者的提议有:
在开发虚拟机接口的解决方案的同时,Andrew还编写了文档来说明OpenJDK与GNU Classpath采用不同的方式。

JamVMCACAOKaffe等)。另一方面,OpenJDK在过去几年中一直围绕同一个JVM(Hotspot)进行构建。Hughes那样,虚拟机和类库的边界是存在的,但是由于不断的发展,该界限已经变得不那么明显了:
这两个方案都提供了库和VM的分离。尽管HotSpot和JDK被置于同样的地方,但对于OpenJDK来说,这已经与最初的假设截然相反。OpenJDK协议上说,这使得不同版本HotSpot的替换成为可能。也就是说,由于GNU Classpath和任何的VM之间有众多不同的搭配,OpenJDK中的JDK和HotSpot的联系可能会比GNU Classpath和任何的VM之间的联系显得更加紧密些。
Andrew在比较过程中发现了这样一些差异:
  • 预加载的本地库——libjava.so是一个定制Java库,必须由OpenJDK预加载,这与通过类库加载刚好相反。Hughes以CACAO为例,详细分析了CACAO是(一个开源的JVM,已经支持OpenJDK了)如何处理这一切的:
CACAO中,src/native/vm/nativevm.c提供了处理一个特别的OpenJDK用例。这需要在VM初始化过程的早期进行处理,而且要在核心类尚未进行任何本地调用之前进行处理。
  • VM代理类——OpenJDK中的很多核心类库直接由本地接口进行代理(Andrew使用了一个本地声明的方法 Object.wait作为例子)。与此相反,GNU Classpath在大多数情况下会引入一个中间VM类,比如Object.java的中间VM类的则是VMObject.java——这个类处理所有的本地代理,而且可以由其他JVM来替代。
  • 由VM代码引发类库调用——在两个VM中都存在这样一种情况——从VM调用类库。因此,类库的内部结构对于VM的实现有着非常直接的影响。Hughes提到了下面一些区别:JVM启动、NIO字节缓冲区的创建、线程和线程组的处理等。
我们可以根据不同不同的认证来获取Sun JDK的源码已经有很长一段时间了,但出于法律原因,GNU Classpath并没有开放源码;而且Sun JDK的协议与开源并不兼容。但自从Sun将JVM和JDK的协议重新声明为GPL后,开发者就开始比较这两个平台了。

OpenJDK的创新结果将于2008年8月18日正式公布,敬请关注。

查看英文原文:Comparing Virtual Machine Interfaces

没有回复

回复

深度内容

Flex与JSON及XML的互操作

平台需要互操作性。在这篇文章中,作者仔细研究了Flex和JSON及XML的互操作性。文章也包含了使用E4X库来将XML映射到图表和表格组件的内容,还演示了如何使用as3core库来解码JSON消息。

用Qi4j进行面向组合编程

本文将简要介绍面向组合编程(COP,Composite Oriented Programming)的概念,展示它如何规避OOP存在的一些问题,并重新点燃使用可重用部件组装领域模型(Domain Model)的希望。

系统开发——新学科,新教育

一门新的计算机学科——“系统开发”,强调人性化、匠艺、设计、创意、创新和新事物的涌现,并建议用被称为“bottega”的工作室替代乏善可陈的教室。

图书聚焦:Visual Studio 2008 揭秘

Mike Snell和Lars Powers用他们最近由Sams出版的新书《Visual Studio 2008揭秘》,试图帮助大家提高开发人员的生产力。本文包括一个下载样章——第10章调试。

BPEL为何不是BPM的圣杯?

Pierre Vigneras在本文中讨论了作为标准之一的BPEL所存在的问题。Pierre先给我们大致介绍了一个简单的并行流程,接着讨论了从业者在试图以一个结构化模型为基础表达非结构化流程时遇到的一系列问题。

基于范型的多语言编程

你是否仔细思考过,为什么人们总在讨论“要正确的语言做恰当的事情”?在这篇文章中,Sadek Drobi向你解释了为什么应该在系统内部混合使用多种语言。

采访与书摘《Pro Web 2.0 Application Development with GWT》

Jeff Dwyer就关于他的新书(《Pro Web 2.0 Application Development with GWT》)、GWT1.5以及创建可搜索的Ajax应用谈了一些他的见解。

时刻准备着,迎接IT业的春天

我们需要设身处地地为客户及客户的业务本身着想,与客户同舟共济。更多创新的思路、产品和模式也同样将为IT业带来新的出路。IT业并不需要坐以待毙,在春天到来之后,市场将会更加繁荣!