2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

小间距LED显示屏:未来市场的百亿级潜力

Dylan

技术 发展 LED LED显示屏 市场

2024-07-13:用go语言,给定一个从0开始的长度为n的整数数组nums和一个从0开始的长度为m的整数数组pattern,其中pattern数组仅包含整数-1、0和1。 一个子数组nums[i.

福大大架构师每日一题

福大大架构师每日一题

上班摸鱼全靠AI办公助手-小浣熊

不叫猫先生

AI 办公小浣熊 办公助手

小浣熊家族:自媒体新手的快速成长指南

程序员海军

AI 办公小浣熊 小浣熊家族 小浣熊

给 「大模型初学者」 的 LLaMA 3 核心技术剖析

Baihai IDP

AI 白海科技 LLMs 企业号 7 月 PK 榜 Llama3

Solana Blink和SEND的崛起:技术与市场效应的结合

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

暑假肯吃苦,秋招猛如虎

王中阳Go

Go 数据库 redis 面试 面经

信创里程碑:TapData 与 OceanBase 产品完成兼容互认证,加速推进金融等传统行业自主创新与数字化革新

tapdata

oceanbase 信创国产化 TapData 实时数据平台 国产信创数据库

ToB活动营销先要区分战略级活动、常规级活动和与我无关的活动

客户在哪儿AI

ToB营销 活动营销 ToB获客 ToB销售

如何彻底解决ToB企业市场和销售脱节的问题

客户在哪儿AI

ToB营销 ToB获客 ToB销售

供配电学习笔记 day4

万里无云万里天

自动化 电力 工厂运维

客户在哪儿AI分享全方位锁定客户“追着打”的有效方法

客户在哪儿AI

ToB营销 ToB增长 ToB销售

万字长文—带你深度体验小浣熊办公助手,全方位提升工作效率

数字扫地僧

办公小浣熊 代码小浣熊 小浣熊家族

一个老程序员对小浣熊 AI 办公助手的使用体验

汪子熙

Python 人工智能 办公小浣熊 小浣熊家族 小浣熊

我的数据清洗能手小浣熊

轻口味

征文活动 办公小浣熊 小浣熊家族

我的数据分析大师-办公小浣熊

黑白相间

数据分析 办公小浣熊

ToB市场部如何选择最优的合作平台

客户在哪儿AI

ToB营销 ToB获客 ToB增长 ToB销售

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