2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

Charles Nutter:JRuby 性能再获提升,使用 JRuby 实现 RESTful 服务

  • 2010-06-06
  • 本文字数:830 字

    阅读完需:约 3 分钟

JRuby 核心开发人员 Charles Nutter(headius)近日在其博客中连续发表了两篇文章,介绍了最近他所做的一些有意思的事情:让 JRuby 更快地运行,以及如何用 JRuby 实现 RESTful 服务。

得益于 JVM 自身的性能优化能力,JRuby 的性能能够满足大多数用户的需要,但人们对性能的渴望是无止尽的,自 JRuby 1.1.6 发布之后的 18 个月来,整个 JRuby 开发团队并没有将精力投入在提升性能,现在是时候着手让 JRuby 的性能更上一层楼了。

文章中,Charles 首先对 JRuby 中的 Call Site 做了简单说明,随后给出了优化方法,他所做的工作主要是针对编译器的,具体如下:

  • 将动态转为静态,让编译器识别动态调用,并将其转为静态调用。
  • 减少 Fixnum 的使用,在一些调用路径中使用原子类型值而非封装过的 RubyFixnum 对象。
  • 检测自我递归,直接进行递归调用,而非将其放入动态管道中。

Charles 表示,这样的优化对 JRuby 的兼容性有一些影响,例如会损坏 Ruby 的函数调用堆栈等。

在传统的 Ruby 中要实现 REST,Rails 自然是首选,而在 Java 的世界中情况还不明朗,不过 JSR-311(JAX-RS)正试图统一标准,Charles 在他的另一篇博客中演示了如何在JRuby 中通过 Jersey 来实现 RESTful 服务。

在这个演示中,他用 JRuby 重写了 Jersey 入门文档中的范例,其中还使用了一些 JRuby 1.5 的新特性。只需几条语句就能实现一个 RESTful 服务:

require ‘java’
java_import ‘javax.ws.rs.Path’
java_import ‘javax.ws.rs.GET’
java_import ‘javax.ws.rs.Produces’ java_package ‘com.headius.demo.jersey’

java_annotation ‘Path("/helloworld")’
class HelloWorld
java_annotation ‘GET’
java_annotation ‘Produces(“text/plain”)’
def cliched_message
“Hello World”
end
end

经过 jrubyc 的编译,这段代码就能成为一个“真正”的 Java 类。随后再通过一个简单的服务器程序和一些 CLASSPATH 设置,就能看到亲切的“Hello World”了。

JRuby 为我们带来了一个又一个的惊喜,它还能做什么?让我们拭目以待吧。

2010-06-06 09:332146
用户头像

发布了 135 篇内容, 共 66.5 次阅读, 收获喜欢 43 次。

关注

评论

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

【C语言深度剖析】你真的懂C语言中的位操作符吗?

Albert Edison

C语言 9月月更 位移操作符 按位与 按位或

Nacos 和 Apollo中的 长轮询 定时机制,太好用了

Java快了!

Nacos 和 Apollo中的

Java进阶(十八)Java实现定时器(Timer)

No Silver Bullet

Java 定时器 9月月更

Java 8 的异步利器:CompletableFuture源码解析(建议精读)

Java快了!

java;

三个案例,带你体验SQL的神奇特性

华为云开发者联盟

数据库 后端 sql 企业号九月金秋榜

政务服务平台建设的难点怎样解决

Geek_99967b

小程序 小程序容器

研发效能之环境管理

laofo

DevOps cicd 研发效能 持续集成 持续交付

编排流程/规则,编排本身也需要很深的逻辑思考!

waitmoon

规则引擎使用 规则引擎 流程引擎 可视化开发

低代码探索:Java模板引擎技术

程序员架构进阶

低代码 9月日更 模板引擎 技术探索

Elasticsearch聚合学习之二:区间聚合

程序员欣宸

elasticsearch 9月月更

[Go WebSocket] 多房间的聊天室(五)用多个小锁代替大锁,提高效率

HullQin

Go golang 后端 websocket 9月月更

Java虚拟机之垃圾收集算法

派大星

9月月更

Qt|图片旋转缩放操作

中国好公民st

c++ qt 9月月更

JavaScript 这几个“神(qi)奇(pa)“设计也是醉了......

掘金安东尼

JavaScript 前端 9月月更

数据治理(十六):Ranger管理HDFS安全

Lansonli

数据治理 9月月更

ABAP Netweaver 和 ABAP Platform 这两个名词的辨析

汪子熙

SAP abap Netweaver 思爱普 9月月更

数据脱敏前沿实践分享,筑造数据安全边界 | 极客星球

MobTech袤博科技

加密 数据安全

【计算机网络原理】第三章 传输层

前端小刘不怕牛牛

TCP 计算机网络 HTTP 9月月更

聚簇索引与覆盖索引

急需上岸的小谢

9月月更

基于 iframe 的微前端框架 —— 擎天

vivo互联网技术

前端框架 微前端 项目管理工具 iframe

一站式数字藏品收款系统开发解决方案

开源直播系统源码

NFT 元宇宙 数字藏品 数字藏品系统

双“简”合璧:极简 Kubernetes 上使用极简服务网格

Flomesh

Service Mesh 服务网格

活动回顾 | 基于英特尔技术的端到端音视频优化

网易云信

音视频技术

不止于《幻塔》,云底座护航完美世界迎接行业新时代

阿里云弹性计算

游戏 ECS

【云原生】Kubernetes编排工具精讲

陈橘又青

云原生 9月月更

单链表头插法,尾插法,循环链表,(线性表单链表)

IC00

c 链表 数据结构, 9月月更

Ansible如何使用Filter插件转换数据

山河已无恙

9月月更

Charles Nutter:JRuby性能再获提升,使用JRuby实现RESTful服务_Java_丁雪丰_InfoQ精选文章