dev2dev 首页 > 资源中心 > 专家Blog > 专家Blog文章
炙手可热的JRockit
这些天在 JavaOne 大会上有许多关于 JRockit 的讨论,前几天我在 blog 上谈到了它的辅助 工具 和芯片支持 (AMD 、 SPARC) 。昨天我听到了更多——在 JVM 层上进行 AOP 集成。
我参加了“ Runtime Aspects with JVM Support ”演讲,并观看了随后的演示——都非常有趣。重点似乎是一些在 JVM 层集成 AOP 服务就可以避免的编织方面的问题和低效。低效源于编织所必须完成的一些操作:找出谁在调用什么、谁在引用谁的字段,等等。这其中的许多数据可能都作为动态优化或垃圾收集的一部分保存在 JVM 中(至少保存在 Jrockit 中)了。所以他们现在考虑要在 JVM 中嵌入 AOP 支持。
为此他们定义了一个过滤器(看起来像是换了一种说法的联结点)和一个动作(看起来像是换了一种说法的通知),组合起来称为“订阅”。好处是可以控制 JVM 了。所以他们公开了一个简单的 JVM API ,允许您写一些如下所示的东西:
w = WeaverFactory.createWeaver(); advice = Advice.class.getMethod("foo", int.class); mm = new MethodFilter(Utility.class, null); ms = new MethodSubscription(mm, BEFORE, advice); w.addSubscription(ms);
这实质上是要 JVM 创建一个 weaver ,并使用它来安装一个订阅(在本例中是一个前通知)。因为它被公开为 API ,因此也可以在运行时进行。很不错。您说负载过重?那么就运行动态添加工具的代码,等发现瓶颈时再移除吧。他们在演讲中说的好:“专业编织工”。
还有安全性的问题——订阅只在创建 weaver 的 classloader 及其子类中有用。将代码放在 bootclasspath 中,以获得完全访问。并且只信任或允许特定的编织代理访问特定的东西,如不断变化的工作流。
我不明白过滤器和联结点之间的关系——例如,是否可以为所有常见的联结点创建一个过滤器?尽管如此,我还是很期待使用这个原型。
原文出处: http://dev2dev.bea.com/blog/jonmountjoy/archive/2005/06/jrockit_is_hot.html
作者其它文章
|