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

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

关注

评论

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

疫情下的人生百态

6979阿强

图计算 GraphScope 新冠

跨越AI天堑时:行动代号“盘古大模型”

脑极体

netty系列之:自建客户端和HTTP服务器交互

程序那些事

Java Netty 程序那些事

算法毕业总结

Geek_Gu

细思极恐!Alibaba新产SpringBoot深度历险(嵩山版)开源

Java 编程 架构 面试 架构师

数字化时代商业银行客户触达策略研究 从数据到服务 由场景到生态

CECBC

Google官方bazel构建工具的安装

Changing Lin

8月日更

程序员应该专注技术还是转管理?

石云升

职业规划 职场经验 8月日更

架构设计-模块一

逝水流

架构

AlphaFold2“登陆”北鲲云平台,云计算助力科研大放异彩

北鲲云

GitHub获120w+star的JDK源码剖析手册,竟出自Alibaba高管之手?

Java 架构 面试 程序人生 Alibaba

模块1-作业

笑看风雨情

SharingSphere 源码解析 -- 真实SQL生成探索

数据库 源码

分享 10 个高星的创意项目!

程序员鱼皮

Java Python 数据库 大前端 Go 语言

区块链盲盒游戏app软件开发|盲盒游戏软件介绍

量化系统19942438797

区块链 智能合约 盲盒

ipfs矿机是什么?ipfs矿机挖出的币能交易吗?

区块链 分布式存储 ipfs挖矿 ipfs矿机 filecoin挖矿

融云 X-Live 系列直播启动,遇见通信的无限可能

融云 RongCloud

开发者 音视频 通信 融云 即时通信

百分点感知智能实验室:语音识别技术发展阶段探究

百分点科技技术团队

语音识别 百分点科技 感知智能

我遇到的那些工长

escray

生活记录 8月日更

快手平台严管售卖“仿黄金类饰品”,直播带货在收割消费者

石头IT视角

新时代大视频产业的底座,视频云创变了什么?

阿里云CloudImagine

阿里云 直播技术 视频制作 视频流 视频云

webrtc 即时带宽评估器(BitrateEstimator)

webrtc developer

WebRTC

百分点大数据技术团队:BI嵌入式分析实践

百分点科技技术团队

BI 百分点科技 嵌入式分析

读书笔记 -《数据密集型应用系统设计》- 数据编码

KayTin

区块链技术发展趋势与银行业探索实践

CECBC

Tapdata Cloud 版本上新!率先支持数据校验、类型映射等6大新功能

tapdata

MySQL nosql schema

不用手机,如何让猫给你打视频电话丨日常小技

声网

物联网 目标检测 目标跟踪

网络攻防学习笔记 Day122

穿过生命散发芬芳

网络安全 8月日更

中证协组织专题座谈会,加快推进区块链技术在证券行业应用

CECBC

Linux之last命令

入门小站

Linux

07. 图灵测试与第一次AI浪潮

Databri_AI

人工智能

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