写点什么

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

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

关注

评论

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

云桌面直接当电脑用?云桌面到底是何方神圣

青椒云云电脑

桌面云 云桌面 云桌面解决方案

京东JD商品详情API:实时数据获取的实现

Noah

从工程化角度,详解鹏程·脑海大模型训练过程

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 模型训练优化

软件测试/测试开发/全日制/测试管理丨Playwright测试框架

测试人

软件测试

告别信息差!奇点云SimbaMetric打破协作壁垒,为指标管理提效

奇点云

奇点云 数据指标体系 指标工厂

图像处理 - 自动纠偏 -JAVA

alexgaoyh

Java 图像处理 自动纠偏 傅里叶频谱 霍夫变换

荣耀开发者大会2023 · 一张图读懂开发者服务分论坛

荣耀开发者服务平台

开发者大会 生态共建 honor 分发

【标准解读】物联网安全的系统回顾

不在线第一只蜗牛

软件 物联网 项目开发

如何通过kube-apiserver访问K8s集群中的App

华为云开发者联盟

开发 华为云 k8s集群 华为云开发者联盟

Vue.js轻量级框架:快速搭建可扩展的管理系统

互联网工科生

Vue 表单 管理系统

【Java技术专题】「攻破技术盲区」攻破Java技术盲点之unsafe类的使用指南(打破Java的安全管控— sun.misc.unsafe)

码界西柚

Java 后端 unsafe 原理分析 2024年第八篇文章

云服务器网站搭建全攻略:技巧与窍门

一只扑棱蛾子

云服务器

软件测试/测试开发/全日制/测试管理丨selenium的三种等待方式

测试人

软件测试

软件测试/测试开发全日制|Pytest中yield的用法详解

霍格沃兹测试开发学社

喜讯!云起无垠入选2023年度中国数字安全能力图谱

云起无垠

Postgres 中文周报:Postgres Weekly 537 期

酷克数据HashData

速查!优惠券核销情况(支付宝优惠券)

盐焗代码虾

支付宝 经验分享 券核销

软件测试/测试开发全日制|Pytest测试框架Fixture作用域详解

霍格沃兹测试开发学社

软件测试开发/全日制/测试管理丨Web自动化测试不同场景定位方式

测试人

软件测试

软件测试/测试开发全日制|Pytest conftest.py配置文件如何使用?

霍格沃兹测试开发学社

drainer 异常宕机原因分析

TiDB 社区干货传送门

集群管理 6.x 实践

大模型推理优化实践:KV cache复用与投机采样

阿里技术

大模型 推理优化 KV cache 投机采样 RTP-LLM

软件测试/测试开发/全日制/测试管理丨Cypress测试框架

测试人

软件测试

Postman POST请求教程:从入门到精通

Liam

Java 程序员 前端 后端 Postman

解锁加密经济领域的新篇章:Token Explorer 助您一臂之力

Footprint Analytics

区块链 加密货币 Token 公链

云桌面怎么选?一篇搞懂四大关键指标!

青椒云云电脑

云桌面 云桌面厂家 云桌面方案 云桌面系统

图像边缘检测-去黑边-JAVA

alexgaoyh

Java 图像处理 去黑边 边缘检测 canny

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