写点什么

JRuby Roundup:改善的 Java 集成与调试(JSR-45)

  • 2008-08-22
  • 本文字数:956 字

    阅读完需:约 3 分钟

按照计划这个月底将要发布 JRuby 的下一个维护性版本。在众多变化中最令人关注的就是与 Java 的集成——定义了 Ruby 代码与 Java 库交互的方式。Java 集成不仅涉及到一些基本语义,如强制类型或者重载、还精简了 Ruby 与 Java 的交互,这使我们可以将一个 Ruby Block 传到一个 Java 方法中。 Charles Nutter向我们展示了最近在 JRuby 与 Java 集成方面的一些进展

  1. 显然,我们已经完成了很多卓有成效的工作。
  2. 闭包可以传递到任何方法中,前提是该方法的最后一个参数是一个接口类型;该闭包可以转化为目标接口类型。thread = java.lang.Thread.new { puts ‘here’ } 2. 现在可以针对接口中的所有方法使用 Ruby 式(使用下划线)的名称来实现接口。

class Foo<br id="wt.w24"></br> include java.awt.event.ActionListener<br id="wt.w25"></br> def action_performed(event) <br id="wt.w26"></br> ... <br id="wt.w27"></br> end<br id="wt.w28"></br>end3. 可以使用 attr*. […] 实现具有 bean 式方法的接口 4. 如果接口中有 boolean 方法,那么我们可以使用该方法名的问句(question-marked)版本来实现该接口。

另一个改进就是使用了 JSR-45 特性来改善调试(注意:在本文发布之际该链接可能无效)。 JSR-45 可以将源文件及其行号映射到 class 文件中。它还定义了类属性(SourceDebugExtension),该属性包含有 SMAP 格式的元数据,而 SMAP 格式是由 JSR 定义的,用来说明 class 文件来自于哪个源文件。当我们查看编译器代码时我们会看到,行号信息已经被加到了产生的 class 文件中了。用来产生 class 文件的 ASM 允许通过 visitLineNumber方法设置行号。

通过加入 SMAP 文件,常用的 Java 调试器如 jdb 可以单步跟踪已编译成字节码的 Ruby 代码(该示例显示了如何使用jdb 单步跟踪Ruby 文件)。

该新功能是向JRuby 快速调试器迈进的另一步——然而要注意到这种方式只适用于已编译成字节码的代码。_ 解释_ 的代码仍旧需要由现有的基于跟踪或者回调的调试器处理。一个应用中有多少代码能转化成字节码依赖于几个因素。例如,运行超出了PermGen 空间以外会有风险,因为它经常导致JVM 崩溃/ 终止。为了解决该问题, JRuby JIT 限制了编译方法的数量(限制的数量可以配置)。

查看英文原文: JRuby Roundup: Java Integration and Debugging (JSR-45) Improvements

2008-08-22 22:22671
用户头像

发布了 88 篇内容, 共 269.5 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

中心化是人性,去中心化是技术

CECBC

区块链技术 去中心化 超级节点

有益思考一则:概率与格局

石君

思考 思维方式 格局

week3 学习总结

不在调上

极客大学架构师训练营

奈学教育《百万架构师》课程大纲

奈学教育

极客大学架构师训练营

元年云“宽能力”拓宽成长型企业数字化升级之路

人称T客

代码重构--架构师必备技能

极客李

week 3学习总结

Geek_2e7dd7

第三周作业

戴维斯

极客大学架构师训练营

奈学教育《百万架构师》课程大纲

古月木易

极客大学架构师训练营

【week03】作业1

chengjing

架构师训练营第三周课后作业

竹森先生

极客大学架构师训练营

架构师训练营Week03

Frank Zeng

架构师训练营week3学习总结

Frank Zeng

用于可视化软件体系结构的C4模型(转载)

清风徐徐

第三周总结

andy

大白话Java多线程,小白都能看的懂的哦

root

Java 多线程 线程安全 创建线程方式 什么是多线程

代码重构练习三

极客李

当教育遇上区块链,会擦出什么样的火花?

CECBC

区块链技术 去中心化 防篡改 教育资源共享

【week03】总结

chengjing

架构师训练营第 3 周 _ 学习总结

方舟勇士

课程总结

从单机事务到分布式事务

ElvinYang

单例和组合模式

陈皮

【架构师训练营 - 周总结 -3】设计模式、重构

小动物

总结 极客大学架构师训练营 第三周

week3 作业& 手撕单例模式

不在调上

【架构师训练营 - 作业 -3】组合模式

小动物

极客大学架构师训练营 作业 第三周

Tweak原理与越狱防护

冯选刚

瓷都景德镇牵手蚂蚁区块链,重塑非遗陶瓷产业

CECBC

区块链技术 溯源 防篡改 景德镇 非遗

第三周作业

andy

week3

Geek_2e7dd7

万恶的NPE差点让我半个月工资没了

root

Java 程序员 互联网 NPE 空指针

Week 03- 作业一:设计模式

dean

极客大学架构师训练营

JRuby Roundup:改善的Java集成与调试(JSR-45)_Java_Werner Schuster_InfoQ精选文章