如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

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

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

关注

评论

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

ETL工具与数据处理的关系

谷云科技RestCloud

数据处理 ETL

架构训练营 模块三作业

Chong Liu

Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队

京东科技开发者

Java centos cron 企业号10月PK榜

构建一个PWA应用的核心技术有哪些

Onegun

小程序 PWA

KubeBlocks完成阿里云PolarDB数据库产品生态集成认证

阿里云数据库开源

polarDB PolarDB-X KubeBlocks

LLM在text2sql上的应用 | 京东云技术团队

京东科技开发者

人工智能 LLM 企业号10月PK榜 text2sql

零代码开发、可视化界面!飞桨AI Studio星河社区带你玩转Prompt应用

飞桨PaddlePaddle

程序员 开发者 插件开发 Prompt

携程商旅伙伴大会:构筑全球影响力计划,建立全球TMC赋能战略

携程商旅

生成式 AI 如何释放开发者的生产力?

LigaAI

人工智能 程序员 技术管理 AIGC 研发效能管理

实测亚马逊 AI 编程助手 Amazon CodeWhisperer

全栈若城

万能音视频转换器Permute 3最新中文版

胖墩儿不胖y

Mac软件 音频处理工具 音频格式转换器

用友BIP智能分析资产包正式发布,助力企业智能化决策!

用友BIP

智能分析

介绍SDK(C++版)使用方法

矩视智能

深度学习 机器视觉

开放原子开源基金会理事长孙文龙一行赴拓维信息参观交流

开放原子开源基金会

开源

利用观测云的 RUM 追踪和分析一个 VIP 用户的旅程

观测云

可观测性 用户体验分析

第10期 | GPTSecurity周报

云起无垠

SpringBoot自动配置原理解析 | 京东物流技术团队

京东科技开发者

spring-boot 自动配置 企业号10月PK榜

1024 特别企划|揭秘 StarRocks 社区背后的神秘力量(内涵福利)

StarRocks

开源社区 StarRocks

语音识别技术在医疗健康领域的应用与挑战

数据堂

用友全球司库十问(五)| 企业如何主动管理资金流动性?

用友BIP

全球司库 流动性管理

MySQL常用函数:从字符串处理到日期时间操作一应俱全

小齐写代码

重读 Effective JAVA(二)- 精进自己的 JAVA 技术

xfgg

Java

Java类加载机制详解 | 京东云技术团队

京东科技开发者

Java spi 类加载机制 企业号10月PK榜

开放原子开源基金会联合主办的2023 CCF中国开源大会正式开幕

开放原子开源基金会

开源 CCF

英特尔以创新边缘AI技术赋能未来智慧城市建设

E科讯

实况窗功能上线,即时掌握活动最新进展

HarmonyOS SDK

HarmonyOS

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