在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

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

关注

评论

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

Unity 发布《2023 移动游戏增长与变现报告》,聚焦游戏行业高效增长策略

极客天地

新兴技术对中药学的革命|社区征文

爱技术的药学生

AI AIGC 年中技术盘点

C语言 typedef的用法示例讲解

芯动大师

Docker 镜像的导出与导入

陈皮

Docker save load

Spring高手之路1——深入理解与实现IOC依赖查找与依赖注入

砖业洋__

ioc 依赖注入 spring框架 依赖查找 IOC面试题

Filter for GO

数由科技

英特尔携钉钉及新华三以创新解决方案变革未来远程协作体验

E科讯

叮!你有一份夏日福利待签收

KaiwuDB

时序数据库 大促 KaiwuDB

PaddleSlim +​OpenVINO助力开发者实现Al模型量化与部署

飞桨PaddlePaddle

人工智能 百度 paddle 百度飞桨

工具产业推广级!腾讯云 CODING 度量平台获得业内权威机构高度认可

CODING DevOps

2023-07-20:假设一共有M个车库,编号1~M,时间点从早到晚是从1~T, 一共有N个记录,每一条记录如下{a, b, c}, 表示一辆车在b时间点进入a车库,在c时间点从a车库出去, 一共有K

福大大架构师每日一题

福大大架构师每日一题

[Huggingface]系列文章(1)-认识Transformers

alexgaoyh

文本分类 文本生成 huggingface sentiment-analysis text-generation

掌控MySQL并发:深度解析锁机制与并发控制

砖业洋__

表锁 MySQL并发控制 隐式锁 插入意向锁 行锁

AI 改变我们的工作方式 | 社区征文

宇宙之一粟

年中技术盘点

AI绘图:艺术与科技的交融 | 社区征文

IT蜗壳-Tango

年中技术盘点

AITO问界,先经沧海而后造船

脑极体

智能汽车

HTTP接口性能压力测试

javalover123

性能测试 压测 API 压力测试 HTTP API

AI与HPC融合,未来会朝什么方向发展 | 社区征文

瓜瓜猪

年中技术盘点

Spring高手之路2——深入理解注解驱动配置与XML配置的融合与区别

砖业洋__

XML配置 spring框架 注解驱动配置 组件注册 组件扫描

敏捷产品经理企业培训内容要点

顿顿顿

Scrum 敏捷 Scrum Master 敏捷开发管理工具

单线程 Redis 如此快的 4 个原因

越长大越悲伤

redis redis为什么如此快

6位字节跳动资深技术人,给校招生的10个成长建议

字节跳动技术范儿

字节跳动 校园招聘

喜报| 无限极入选信通院 2023 XOps“领新杯”业技融合攻坚先锋案例

CODING DevOps

前、后端通用的可视化逻辑编排

悠闲的水

低代码 逻辑编排 低代码平台 可视化编排 可视化开发

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