发布在即!企业 AIGC 应用程度测评,3 步定制专属评估报告。抢首批测评权益>>> 了解详情
写点什么

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

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

关注

评论

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

聊一聊责任链模式

设计模式 责任链模式

拳头产品|海泰虎讯,新一代安全即时通讯系统

电子信息发烧客

6种容器接入方式

阿泽🧸

10月月更 容器接入

网络安全CTF之最新网鼎杯解题思路

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

React-Hooks怎样封装防抖和节流-面试真题

beifeng1996

React

React源码分析(一)Fiber

goClient1992

React

看透react源码之感受react的进化

goClient1992

React

“程”风破浪的开发者|浅谈初学者应该如何正确打开一个技术或一门语言

迷彩

学习方法 10月月更 “程”风破浪的开发者

面试官:说说Event Loop事件循环、微任务、宏任务

loveX001

JavaScript

20道高级前端面试题解析

loveX001

JavaScript

字节前端面试被问到的react问题

beifeng1996

React

Zepoch节点已售出500+,Zebec Chain市场反响激烈

股市老人

React-hooks面试考察知识点汇总

beifeng1996

React

Vue.$nextTick的原理是什么-vue面试进阶

bb_xiaxia1998

Vue

倒计时3天!云栖大会龙蜥操作系统峰会最新议程一览

OpenAnolis小助手

开源 操作系统 倒计时 云栖大会 龙蜥社区

这可能是你需要的vue考点梳理

bb_xiaxia1998

Vue

精品方案|基于医疗机构的突发公共卫生多点触发监测预警系统 实现疫情精准防控

电子信息发烧客

DataFrame 的拼接

攻城狮Wayne

Python ApplicationContext 10月月更

Zepoch节点已售出500+,Zebec Chain生态扩张迅速

EOSdreamer111

React-Hooks源码深度解读

goClient1992

React

怎样刷vue面试题

bb_xiaxia1998

Vue

2022-10-31:以下go语言代码输出什么?A:map[];B:nil;C:Panic;D:编译错误。 package main import “fmt“ func main() {

福大大架构师每日一题

golang 福大大 选择题

如何用 JavaScript 编写你的第一个单元测试

茶无味的一天

JavaScript 单元测试 mocha

这些js原型及原型链面试题你能做对几道

loveX001

JavaScript

前端八股文总结

loveX001

JavaScript

前端食堂技术周刊第 57 期:Turbopack、Next.js13、Chrome107、Vite3.2、图解 TLS 1.3

童欧巴

chrome 前端 vite

安装和体验hive

程序员欣宸

hadoop hive 11月月更

Vue是怎样监听数组的变化的?

bb_xiaxia1998

Vue

产品建议

乌龟哥哥

react高频知识点梳理

beifeng1996

React

华为云从入门到实战 | 负载均衡服务原理

TiAmo

华为 华为云 10月月更

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