JRuby and Leyden: Even Better Startup

At the end of my post on JRuby and JDK 25 startup time features, I teased a bit of the unreleased improvements from Project Leyden. It turns out the latest commits improve startup time even more, so it seems worth posting a quick follow-up!
...
Read More
Sep 26, 2025

JRuby and JDK 25: Startup Time with AOTCache

JDK 25 is the newest LTS release since JDK 21, and it ships with a gaggle of amazing VM-level features. This post will cover one of the most important improvements for command-line ecosystems like JRuby’s: the AOTCache (ahead-of-time cache) and its ability to pre-optimize code for future runs.
...
Read More
Sep 24, 2025

3D Charts and More with JRuby and JFreeChart

After playing with JFreeChart and JRuby and writing up a lovely blog post called “Beautiful Charts with JRuby and JFreeChart” it seems that some folks did not agree with my assessment of the charts as “beautiful” and others did not realize the power of what they’d just seen.
...
Read More
May 01, 2025

Creating Beautiful Charts with JRuby and JFreeChart

I recently returned from RubyKaigi where I had the opportunity to sit down with members of the Japanese Ruby community and show them a little bit of JRuby. One of the items that came up a few times was the difficulty of utilizing external libraries from Ruby: if it’s a...
Read More
Apr 30, 2025

JRuby 10, Part 1: What's New

I am very excited to introduce you to JRuby 10, our biggest leap forward since “JRuby 9000” was released almost a decade ago.
...
Read More
Apr 09, 2025

JRuby: Upcoming Projects

Hello friends! I’m re-entering the blogspace with an update on JRuby status and some of the exciting projects we have coming up in the latter half of 2024. Let’s get started!
...
Read More
Sep 04, 2024

Start It Up: Improving JRuby's Startup Time

Hello friends! How long has it been? Too long! This post marks the beginning of a return to blogging about JRuby, the JVM, and everything in between. Today we’ll cover a topic that never gets old: JRuby’s startup performance.
...
Read More
Sep 18, 2019

Running JRuby on the Graal JIT

Hello, friends! Long time no blog!
I'm still here hacking away on JRuby for the benefit of Rubyists everywhere, usually slogging through compatibility fixes and new Ruby features. However with the release of JRuby 9.2, we've caught up to Ruby 2.5 (the current release) and I'm spending a little time...
Read More
Jul 03, 2018

JRubyConf.eu 2014!

I'm thrilled to announce that we'll have another edition of JRubyConf.eu this year!
Last year's event was a great success. We had a two-day conference in Berlin immediately before Eurucamp 2013, with two speakers from the core team (myself and Tom Enebo) and a whopping fifteen non-core speakers. A great event was...
Read More
May 21, 2014

The Pain of Broken Subprocess Management on JDK

I prefer to write happy posts...I really do. But tonight I'm completely defeated by the JDK's implementation of subprocess launching, and I need to tell the world why.
JRuby has always strived to mimic MRI's behavior as much as possible, which in many cases has meant we need to route...
Read More
Jun 07, 2013

On Languages, VMs, Optimization, and the Way of the World

I shouldn't be up this late, but I've been doing lots of thinking and exploring tonight.
In studying various VMs over the past few years, I've come up with a list of do's and don't that make things optimize right. These apply to languages, the structures that back them, and...
Read More
May 11, 2013

Constant and Global Optimization in JRuby 1.7.1 and 1.7.2

With every JRuby release, there's always at least a handful of optimizations. They range from tiny improvements in the compiler to perf-aware rewrites of core class methods, but they're almost always driven by real-world cases.
In JRuby 1.7.1 and 1.7.2, I made several improvements to the performance of Ruby constants...
Read More
Jan 05, 2013

Refining Ruby

What does the following code do?
If you answered "it upcases two strings and adds them together, returning the result" you might be wrong because of a new Ruby feature called "refinements"...
Read More
Nov 19, 2012

So You Want To Optimize Ruby

I was recently asked for a list of "hard problems" a Ruby implementation really needs to solve before reporting benchmark numbers. You know...the sort of problems that might invalidate early perf numbers because they impact how you optimize Ruby. This post is a rework of my response...I hope you find...
Read More
Oct 15, 2012

Explanation of Warnings From MRI's Test Suite

JRuby has, for some time now, run the same test suite as MRI (C Ruby, Matz's Ruby). Because not all tests pass, we use minitest-excludes to mask out the failures, and over time we unmask stuff as we fix it.
However, there's a number of warnings we get from the...
Read More
Sep 26, 2012

An experiment in static compilation of Ruby: FASTRUBY!

While at GoGaRuCo this weekend, I finally made good on an experiment I had been thinking about for a while: a static compiler for Ruby. I thought I'd share it with you good people today.
First we have a simple Ruby script with a class in it:...
Read More
Sep 17, 2012

Avoiding Hash Lookups in a Ruby Implementation

I had an interesting realization tonight: I'm terrified of hash tables. Specifically, my work on JRuby (and even more directly, my work optimizing JRuby) has made me terrified to ever consider using a hash table in the hot path of any program or piece of code if there's any possibility...
Read More
Sep 04, 2012