QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

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

关注

评论

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

Grafana汇总报表

TiDB 社区干货传送门

监控

raft:分布式一致性算法笔记

TiDB 社区干货传送门

TiDB 底层架构

当数据库遇上 Kuberbetes丨「能量钛」圆桌论坛回顾

TiDB 社区干货传送门

实践案例 数据库架构选型

DM filter 实践整理

TiDB 社区干货传送门

实践案例

TiDB 升级——ansible与tiup使用小结

TiDB 社区干货传送门

TiDB 底层架构

Flink on TiDB —— 便捷可靠的实时数据业务支撑

TiDB 社区干货传送门

实践案例

一篇文章带你玩转 TiDB 灾难恢复

TiDB 社区干货传送门

故障排查/诊断

2 年成本节省 73%,京东物流在云数据库上的选择和实战

TiDB 社区干货传送门

实践案例

在 minikube 上使用 TiDB Operator 构建 TiDB 集群(持续更新中)

TiDB 社区干货传送门

安装 & 部署

TiDB 在汽车之家818台网互动项目中的应用

TiDB 社区干货传送门

实践案例 管理与运维 数据库架构选型

【精选实践】一体化无边界的大数据基础平台

TiDB 社区干货传送门

TiDB 集群可用性增强 —— TiDB 5.0 的 Joint Consensus 机制介绍

TiDB 社区干货传送门

TiDB 底层架构

TiDB Parser模块的简单解读与改造方法

TiDB 社区干货传送门

TiDB 底层架构

TiDB 热点问题定位

TiDB 社区干货传送门

故障排查/诊断

TiDB 数据一致性校验实现:Sync-diff-inspector 优化方案

TiDB 社区干货传送门

性能调优

从 MySQL 大量数据清洗到 TiDB 说起

TiDB 社区干货传送门

实践案例

还在用变量去实现多维度分组排序吗?你 out 了!

TiDB 社区干货传送门

实践案例

接触TiDB4.0时,一些部署方式实践尝试

TiDB 社区干货传送门

安装 & 部署

PD 调度器模块

TiDB 社区干货传送门

TiDB 底层架构

Weir:原生 TiDB 支持的数据库中间件

TiDB 社区干货传送门

实践案例

DM多库合并至TiDB

TiDB 社区干货传送门

迁移 实践案例

PD 启动主流程分析

TiDB 社区干货传送门

TiDB 底层架构

事务前沿研究丨确定性事务

TiDB 社区干货传送门

TiDB 底层架构

一张脑图让你快速了解 TiDB 5.0版本新特性

TiDB 社区干货传送门

TiDB 底层架构

TiDB 慢日志在伴鱼的实践

TiDB 社区干货传送门

实践案例

TiDB升级5.x连接问题

TiDB 社区干货传送门

故障排查/诊断

大教堂终将倒下,但集市永存

TiDB 社区干货传送门

实践案例 数据库架构选型

使用 TiDB 构建实时应用

TiDB 社区干货传送门

实践案例

038-拯救大兵瑞恩之 TiDB 如何在 TiKV 损坏的情况下恢复

TiDB 社区干货传送门

TiDB实例间数据同步之TiCDC实践

TiDB 社区干货传送门

实践案例

MySQL 与 TiDB 不同的 DDL 发展历程

TiDB 社区干货传送门

TiDB 底层架构

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