During his talk at the Baruco conference Charles Nutter, one of the lead developers of JRuby, announced the release of version 9000 (9K) in 2014 (Q2 or later). The new release targets the same feature set as Ruby MRI 2.0 and possibly 2.1 as well. Charles also provided insight on the motivation behind the Ruby implementation for the Java Virtual Machine (JVM) and built the case for using JRuby 9K in production.
JRuby 9K will run on Java 7 only and the development team (partially supported by Red Hat) hopes to align its functionality roadmap with Ruby MRI’s. The unusual version name came about as the team realized the next natural JRuby version would be either 1.8 or 2.0 and thus decided to avoid confusion with the Ruby MRI versions by using 9000.
According to Charles, aligning the functionality and taking advantage of the JVM evolution in areas such as garbage collection and performance will make JRuby 9K a strong contender for use in production systems. According to Charles’ benchmark JRuby running on Java 7 slightly outperforms Ruby MRI 1.8 in response time and largely outperforms Ruby MRI 2.0 in garbage collection time when memory usage goes upwards of 200 MB. The following chart shows another of his benchmarks running an implementation of the red/black tree algorithm across multiple Ruby flavors:
Another trending topic where JRuby differentiates from the MRI is support for advanced concurrency using multi-cores. Charles recommended testing real multi-threaded execution using JRuby but also warned that the Ruby ecosystem still needs more mature tools to support them. Nevertheless existing libraries such as thread_safe, Hamster, atomic or jo can already go a long way in preventing unsafe operations such as thread pooling and coordination, concurrent read/write on core structures or common non-atomic updates such as:
@count += 1 @cache ||= MyCache.new
Other advantages of building on top of the JVM mentioned by Charles are its portability and availability (even on organizations with tightly controlled development environments) but also the ecosystem of libraries in Java, Scala or Clojure that can be called from JRuby in a straight forward way.
Other Baruco speakers such as Vicent Martí and Chris Kelly manifested their support for JRuby as an alternative to MRI along with Rubinius, incentivating conference participants to contribute to their development.