写点什么

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

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

关注

评论

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

深入解析 Apache BookKeeper 系列:第二篇 — 写操作原理

Apache Pulsar

开源 架构 云原生 中间件 Apache Pulsar

ERNIE-GeoL:“地理位置-语言”预训练模型

百度大脑

聚焦信息抽取前沿难题,CCKS-千言通用信息抽取竞赛报名启动

百度大脑

大咖云集,星环科技春季新品发布周【数字化转型专题】精彩抢先看

星环科技

数据库

2021最新版SpringBoot实战项目教程,美团专家带你深入SpringBoot

爱好编程进阶

Java 面试 后端开发

7步搞懂分布式全内容,我不信面试官还敢“怼

爱好编程进阶

Java 面试 后端开发

读《Software Engineering at Google》(06)

术子米德

架构师成长笔记

[Day16]-[链表]反转链表

方勇(gopher)

LeetCode 数据结构和算法

三问三答,解传统企业敏捷转型担忧

华为云开发者联盟

DevSecOps 华为云 敏捷转型 Scrum团队 敏捷团队

专有云如何精准、及时地实现故障定位?丨智能运维

百度大脑

外包学生管理系统详细架构设计

Geek_bc9c8d

高精度PP-YOLOE、轻量化PP-PicoDet SOTA模型重磅开源

百度大脑

JVM虚拟机,基础原理总结

Java JVM 虚拟机

数据结构之链表中的快慢指针

乌龟哥哥

4月月更

大转盘抽奖

Rubble

4月日更 4月月更

一次简单易懂的多态重构实践,让你理解条件逻辑

华为云开发者联盟

多态 条件逻辑 多态重构 基础逻辑

前端食堂技术周刊第 33 期:IE 退休倒计时:3 个月、TypeScript 4.7 Beta、TypeScript 编译器工作原理、Rust 编码规范

童欧巴

前端 Web 前端工程师

内网渗透(蚁剑+MSF)

喀拉峻

网络安全 WEB安全 内网渗透

mac浏览器密码获取难?教你两种方法,轻松搞定

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

检测、跟踪、行为识别All-In-One!产业级行人分析系统重磅开源!

百度大脑

PPDE迎新 | 欢迎18位AI开发者加入飞桨开发者技术专家计划

百度大脑

百度文心大模型「技术天团」首次亮相!首场技术开放日、AI创意派决赛来啦~

百度大脑

存储成本降低80%,“大智慧”的选择

华为云开发者联盟

数据分析 存储 GaussDB(for Redis) 降本增效

梳理数仓FI manager节点健康检查逻辑

华为云开发者联盟

运维 GaussDB(DWS) Manager 健康检查 FI manager

Docker技术三大要点:cgroup, namespace 和 unionFS, 从理论到实践

汪子熙

Docker 容器 虚拟化 容器镜像 4月月更

数据分析之前知道这 7 件事,少花 80% 时间

龙国富

数据分析 数据采集

利用String.intern 减少相同值的String内存占用

lich0079

内存 intern java MAT String类

Linux驱动开发-编写超声波测距模块的驱动

DS小龙哥

4月月更

ModStart 是基于 Laravel 的模块化开发框架

ModStart开源

自己动手写Docker系列 -- 6.2创建网络

Go Docker 4月月更

5分钟搞懂MySQL - 索引下推优化

爱好编程进阶

Java 面试 后端开发

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