AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

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

关注

评论

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

一张图厘清各大操作系统的发展脉络

巫山老妖

微众银行 TiDB HTAP 和自动化运维实践

TiDB 社区干货传送门

实践案例

同城双机房公网环境下搭建TIDB集群

TiDB 社区干货传送门

数据库架构设计

为何选择独立服务器?稳定、高效、安全等优势一览

一只扑棱蛾子

独立服务器

更快更省更好用!天翼云云原生一体机iStack打通物云最后一公里!

极客天地

TiDB x 云盛海宏丨加速精细化运营,云海零售系统的架构演进

TiDB 社区干货传送门

实践案例

TiDB 在安信证券资产中心与极速交易场景的实践

TiDB 社区干货传送门

实践案例

CodeWhisperer--手把手教你使用一个十分强大的工具

亚马逊云科技 (Amazon Web Services)

Python 人工智能 云上探索实验室 Amazon CodeWhisperer Amazon Cloud9

LED显示屏防护等级知识讲解

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家 等级

APM建设踩了哪些坑?去哪儿旅行分布式链路追踪系统实践

TakinTalks稳定性社区

提升提测质量之研测共建 | 京东云技术团队

京东科技开发者

测试 研发 企业号11月PK榜

故障发现、定位提效超70%,去哪儿可观测体系做了哪些优化?

TakinTalks稳定性社区

微信团队分享:详解iOS版微信视频号直播中因帧率异常导致的功耗问题

JackJiang

网络编程 即时通讯 IM

欢迎提报 | 2023年龙蜥社区优秀贡献者评选正式启动

OpenAnolis小助手

开源 操作系统 龙蜥社区 最佳案例 突出贡献

体验函数计算 FC 3.0,写测评赢取索尼头戴式耳机

Serverless Devs

云计算 Serverless AIGC

任福继院士:基于交叉学科的研究将成主流,算力平台和计算人才是自主创新关键

极客天地

Gitlab配置mirrorRepository 镜像仓库

javaNice

Java gitlab

21 天技术人写作行动营招募中

InfoQ写作社区官方

AI 写作 写作技巧 热门活动 活动预告

OpenCL任务调度基础介绍 | 京东物流技术团队

京东科技开发者

gpu 编程语言 企业号11月PK榜 OpenCL

从商业增长到自然增长,OPPO广告联盟为开发者开辟增长新路径

极客天地

如何搞砸一场面试?

王磊

Java 面试

外包的鄙视链,背后原因是什么

老张

外包 竞争力 核心竞争力

TiDB x CAPCOM丨为在线游戏提供灵活、可靠、可扩展的数据库服务

TiDB 社区干货传送门

实践案例

同城双机房公网+阿里云ECS搭建混合云TIDB集群

TiDB 社区干货传送门

数据库架构设计

来文心中国行厦门站,感受大模型落地生花的进展!

飞桨PaddlePaddle

文心一言 文心中国行

精彩回顾|从架构到实践,AntDB融合型数据库揭秘

亚信AntDB数据库

数据库 AntDB AntDB数据库

StoneDB顺利通过中科院软件所 2023 开源之夏 结项审核

StoneDB

MySQL 数据库 HTAP StoneDB

TiDB Cloud 上 Tiflash 列存功能初体验

TiDB 社区干货传送门

版本测评 性能测评 新版本/特性解读

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