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

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

关注

评论

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

在线SQL转Excel(xls/xlsx)工具

入门小站

工具

基于Netty,徒手撸IM(一):IM系统设计篇

JackJiang

网络编程 Netty 即时通讯 im开发

智洋创新与华为签署合作协议,共同推进昇腾AI产业持续发展

极客天地

在线文本行固定长度填充工具

入门小站

工具

赋能数字经济 福昕软件出席金砖国家可持续发展高层论坛

联营汇聚

使用 MyBatis 操作 Nebula Graph 的实践

NebulaGraph

mybatis 图数据库 Nebula Graph

上线首月,这家露营地游客好评率高达99.9%!他是怎么做到的?

天天预约

小程序 SaaS 线上预约 预约工具 露营

多模输入事件分发机制详解

OpenHarmony开发者

Open Harmony

能源势动:电力行业的碳中和该如何实现?

脑极体

整理混乱的头文件,我用include what you use

华为云开发者联盟

c++ 开发 C语言 技能

英特尔集成光电研究最新进展推动共封装光学和光互连技术进步

科技之家

linux实战清理挖矿病毒kthreaddi

入门小站

Linux

python小知识-python泛函数

AIWeker

Python python小知识 7月月更

CANN算子:利用迭代器高效实现Tensor数据切割分块处理

华为云开发者联盟

人工智能 算子 迭代器

DevEco Device Tool 3.0 Release带来5大能力升级,让智能设备开发更高效

HarmonyOS开发者

HarmonyOS

湘江鲲鹏加入昇腾万里伙伴计划,与华为续写合作新篇章

极客天地

Nebula Importer 数据导入实践

NebulaGraph

图数据库 数据导入 Nebula Graph

“只跑一趟”,小区装维任务主动推荐探索

鲸品堂

运维

解密函数计算异步任务能力之「任务的状态及生命周期管理」

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

华为nova 10系列支持应用安全检测功能 筑牢手机安全防火墙

科技汇

广电五舟与华为签署合作协议,共同推进昇腾AI产业持续发展

极客天地

一文掌握数仓中auto analyze的使用

华为云开发者联盟

数据库 sql 后端 analyze

应用实践 | 蜀海供应链基于 Apache Doris 的数据中台建设

SelectDB

数据库 数据中台 Apaache Doris

使用 BlocConsumer 同时构建响应式组件和监听状态

岛上码农

flutter ios 安卓 移动端开发 7月月更

实战模拟│JWT 登录认证

经验分享 JWT 开发语言 7月月更 跨域认证

玩转gRPC—深入概念与原理

闫同学

gRPC 网络协议 后端开发

联想首次详解绿色智城数字孪生平台 破解城市双碳升级难点

科技大数据

扩展你的KUBECTL功能

mengzyou

Kubernetes DevOps kubectl krew

可视化任务编排&拖拉拽 | Scaleph 基于 Apache SeaTunnel的数据集成

Apache SeaTunnel

数据同步 数据集成 可视化开发 数据集成平台 拖拉拽

HUAWEI nova 10系列发布 华为应用市场筑牢应用安全防火墙

最新动态

托管式服务网络:云原生时代的应用体系架构进化

阿里巴巴云原生

阿里云 云原生 服务网格

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