写点什么

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

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

关注

评论

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

打造次世代分析型数据库(二):这,不只是列存表

腾讯云大数据

数据库

山东布谷科技直播APP源码搭建:核心的服务器系统

山东布谷科技

软件开发 系统架构 直播APP源码 服务器系统

大模型驱动云计算创新变革

Baidu AICLOUD

异构计算 百度百舸 千帆大模型平台 LMops AI 原生

全国高等教育新愿景:《2023 中国人工智能人才学习白皮书》发布!

ModelWhale

人工智能 数据分析 人才培养 白皮书 高等教育

Databend 数据集成方案 | Data Infra 第 15 期

Databend

超全60000多字详解 14 种设计模式 (多图+代码+总结+Demo)

Immerse

【开源三方库】crypto-js加密算法库的使用方法

OpenHarmony开发者

OpenHarmony

制丝系统盘、启动盘

玄兴梦影

windows 系统重装 Liunx

无目标,有目标,多目标

玄兴梦影

目标 前进的路上

专访大连1号/连理卫星总指挥于晓洲:OpenHarmony在航天领域交出创新答卷

最新动态

百度智能云千帆大模型平台率先适配Falcon-180B!

Geek_2d6073

金融行业首批!度小满智算网络中心达到万卡规模

科技热闻

航空航天行业的MES系统解决方案

万界星空科技

MES系统

Apache Commons Daemon 使用教程

玄兴梦影

Linux windows 进程 服务

焱融科技助力智谱AI,打造大模型训练加速之道

焱融科技

AI大模型

欧洲卡车模拟2Euro Truck Simulator 2 for Mac(模拟经营游戏)中文激活版

mac

windows 游戏 苹果mac Euro Truck Simulator 欧洲卡车模拟

Node.js 遍历文件夹技巧:提升代码可读性与可维护性

Liam

node.js 程序员 后端 遍历 Node

WorkPlus AI助理,基于ChatGPT的企业级知识问答机器人

WorkPlus

数据通信网络之IPv6基础

timerring

数据通信网络

犀牛3D建模 Rhino 7 for Mac激活中文版最新

mac大玩家j

三维建模 三维建模软件 3D建模软件 犀牛7

4个视频教你正确使用华为云代码托管服务CodeArts Repo!

华为云PaaS服务小智

云计算 华为云 代码托管

产品路线图如何制定?斯坦福大学产品管理课程为你支招

LigaAI

产品经理 经验总结 产品管理 产品路线图 企业号9月PK榜

从融云数智办公平台,看企业需要什么样的大模型?

融云 RongCloud

人工智能 AI 互联网 AIGC 数智办公

Axios put 请求使用指南:优化开发流程

Apifox

程序员 前端 后端 axios put

Sketch for mac(矢量绘图UI设计软件) 98.1中文激活版

mac

Sketch 苹果mac Windows软件 矢量绘图软件

研发管理平台的比较框架

iSoftBook

软件工程 敏捷精益 研发团队 研发效能管理 研发管理平台

AE 3D粒子系统插件 Trapcode Particular最新激活版

胖墩儿不胖y

视频特效 Mac软件 视频特效插件 特效工具

墨迹天气亮相2023服贸会,以“新方案、新合作”彰显品牌新价值

Geek_2d6073

数字孪生的深海迷航

脑极体

数字孪生

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