写点什么

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

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

关注

评论

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

太强了!GitHub大佬白嫖的SpringCloud微服务进阶宝典,啃完感觉能吊锤面试官!

程序知音

Java 微服务 SpringCloud java架构 后端技术

更快更稳更安全!天翼云CDN了解一下

天翼云开发者社区

云服务器好用吗,有哪些特点?

Finovy Cloud

云服务器 云渲染

当ChatGPT火爆全球,中国交互AI平台「聆心智能」获得千万元融资

硬科技星球

消息队列跨区域协同方案的演进

移动云大数据

kafka pulsar

当线下门店遇上AI:华为云ModelBox携手佳华科技客流分析实践

华为云开发者联盟

人工智能 数字化转型 华为云 12 月 PK 榜

iptables 命令和 iptables.service 服务的区别

山河已无恙

12月月更

从一个 issue 出发,带你玩图数据库 NebulaGraph 内核开发

NebulaGraph

图数据库 开源贡献

数字先锋| 农业农村部大数据公共平台基座上线,天翼云擎起乡村振兴新希望!

天翼云开发者社区

糟糕,数据库异常不可用怎么办?

华为云开发者联盟

数据库 后端 华为云 12 月 PK 榜

阿里程序员给我一份Java笔、面试宝典,看目录的那一刻,我傻了!

钟奕礼

Java 程序员 java面试 java编程

TDH 社区版上新宽表数据库 Hyperbase,轻松实现海量数据的毫秒级精确检索

星环科技

数据库

Spring 事务失效的六种情况

江南一点雨

spring 事务

Getaverse - 基于Web3.0数字认证引擎协议的元宇宙生态服务平台

Geek_Web3

Web3 Daily #区块链# did web3

Getaverse测试网即将上线,节点销售火爆,是否成为下一个GALA?

Geek_Web3

区块链 Web3 Daily #区块链# did web3

腾讯云与流媒体服务商BeLive达成合作,助力提升东南亚与周边地区直播水平

科技热闻

聚焦稳定性,Dubbo 发版规划公布

Apache Dubbo

Java 开源 微服务 云原生 dubbo

架构训练营 模块一作业

提姆

网络安全之从原理看懂XSS

网络安全学海

黑客 网络安全 安全 信息安全 渗透测试

SoviChart数据可视化:条形图(Bar chart)

2D3D前端可视化开发

数据分析 数据可视化 可视化图表 sovitchart 条形图

天翼云电脑为医共体建设加buff!

天翼云开发者社区

小游戏的前世今生

FinFish

微信小程序 休闲游戏 小游戏 H5小游戏

Redis事务、pub/sub、PipeLine-管道、benchmark性能测试详解

C++后台开发

redis 中间件 性能测试 后端开发 C++开发

这个算法不一般,控制拥塞有一手!

天翼云开发者社区

【设计指南】避免PCB板翘,合格的工程师选择这样设计!

华秋PCB

生产 PCB PCB设计

带你了解基于Ploto构建自动驾驶平台

华为云开发者联盟

人工智能 自动驾驶 华为云 12 月 PK 榜

StoneDB 首席架构师李浩:如何选择一款 HTAP 产品?

StoneDB

MySQL HTAP 数据库· StoneDB 12 月 PK 榜

HummerRisk V0.6.0:列表高级搜索,对象存储、操作审计扩充支持

HummerCloud

云安全 云原生安全

基于训练和推理场景下的MindStudio高精度对比

华为云开发者联盟

人工智能 华为云 12 月 PK 榜

京东内部流传的MyBatis笔记,短小而精悍,处处是源码细节

小小怪下士

Java 源码 程序员 mybatis

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