写点什么

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:22657
用户头像

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

关注

评论

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

代码注释的艺术,优秀代码真的不需要注释吗?

阿里巴巴中间件

阿里云 代码 技术分享

软件定义汽车时代下的云原生转型实战方法论

York

容器 云原生 车联网 软件架构 6月月更

IET技能调研首次落地亚洲国家 为阿联酋工程技术发展提供洞察

E科讯

Seata 企业版正式开放公测

阿里巴巴中间件

阿里云 云原生 seata

最全!即学即会 Serverless Devs 基础入门(下)

Serverless Devs

5G发牌三周年 云网融合加速 如何解决企业网络之忧?

郑州埃文科技

IP地址 网络空间安全 5G 企业上云 云网融合

最全!即学即会 Serverless Devs 基础入门(上)

Serverless Devs

web前端培训 SCSS 使用技巧总结分享

@零度

前端开发 scss

分布式数据库下子查询和 Join 等复杂 SQL 如何实现?

TDengine

数据库 tdengine 时序数据库

java培训 @Autowired 的实现原理

@零度

JAVA开发

中兴新支点加入龙蜥社区,共建操作系统开源新生态

OpenAnolis小助手

开源 龙蜥社区 合作 CLA 中兴新支点

技术分享| 浅谈调度平台设计

anyRTC开发者

Web 音视频 指挥调度 调度 快对讲

直播回顾:隐私计算的关键技术以及行业应用技巧 | 龙蜥技术

OpenAnolis小助手

开源 直播 隐私计算 龙蜥社区 密码技术

GraphX 图计算实践之模式匹配抽取特定子图

NebulaGraph

图数据库 知识图谱 Nebula Graph

如何正确的评测视频画质

百度Geek说

视屏质量

淘金家园NFT链游系统开发逻辑分析

开发微hkkf5566

趣步运动挖矿系统开发模式详情

开发微hkkf5566

函数计算异步任务能力介绍 - 任务触发去重

阿里巴巴中间件

阿里云 云原生 函数计算 FC

5G、AI、云计算,什么是云渲染?

Finovy Cloud

人工智能 云服务器 GPU服务器

Websocket 10分钟快速入门

领创集团Advance Intelligence Group

websocket

淘金家园NFT链游系统开发模式详解

开发微hkkf5566

大数据培训Linux常用命令总结分享

@零度

大数据 Linux

spring-cloud-k8s 跨 NS 的坑

Damon

微服务架构 云原生 6月月更

Apache Kyuubi 高可用的云原生实现

移动云大数据

高可用 云原生 Kyuubi

阿里超大规模 Flink 集群运维实践

阿里云大数据AI技术

大数据 flink 运维

Hoo研究院|5月下半月区块链行业投资机构动向

区块链前沿News

Hoo

WEB3:什么是去中心化数据库

devpoint

分布式 去中心化 Web3.0 6月月更 InfoQ极客传媒15周年庆

企业竞争利器——知识管理

小炮

知名巧克力全球召回,区块链帮你摆脱“甜蜜陷阱”

旺链科技

区块链 产业区块链 食品安全 食品溯源

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