Soeben hat das JRuby-Team mit JRuby 1.6.0.RC3 den dritten und letzten Releasekandidaten von JRuby 1.6.0 veröffentlicht. Das Entwicklerteam spricht von dem "größten JRuby-Release aller Zeiten".

Das gibt's Neues

Als wesentliche Neuerung ist zunächst die nun fast vollständige Unterstützung von Ruby 1.9.2 zu nennen, der aktuellsten stabilen Ruby-Version. Zum Umschalten muss das Kompatibilitäts-Flag mit jruby --1.9 gesetzt werden. Damit können JRuby-Entwickler jetzt von allen Vorteilen profitieren, die Ruby 1.9 mit sich bringt, u.A. dem Unicode-Support für internationalisierte Anwendungen und der Unterstützung für IPv6.

Mit den letzten drei Release-Kandidaten auf dem Weg zu JRuby 1.6.0 ist zudem die Performanz und Stabilität von Ruby-Methodenaufrufen weiter verbessert worden. Ein Blick in die Release Notes von JRuby 1.6.0 RC3 zeigt, wie viele neue Features und Issue Fixes alleine seit dem RC2 implementiert wurden.

Verbessertes Memory Profiling

Bei JRuby-basierten Projekten profitieren Entwickler ja grundsätzlich davon, auf die gesamte Palette verfügbarer JVM Tools zurückgreifen zu können, so auch auf bestehende Java Profiler. So konnten wir beispielsweise den von einem unserer Kollegen entwickelten Java Reference Scanner problemlos einsetzen, um Speicheranalysen unserer JRuby-Anwendungen durchzuführen und Memory Leaks vorzubeugen. Mit JRuby 1.5.6 wurden JRuby-Objekte dabei jedoch nur als Instanzen der Klasse org.jruby.RubyObject ausgewiesen.

Richtig aussagekräftig ist das Profiling jetzt mit JRuby 1.6 geworden: Per Flag -J-Djruby.reify.classes=true kann JRuby nun angewiesen werden, für die Ruby-Klassen gleichnamige JVM Klassen anzulegen. Haben wir bspw. eine Ruby-Klasse User angelegt, erscheint diese im Profiler nicht mehr länger als org.jruby.RubyObject, sondern als ruby.User. So machen Speicheranalysen Spaß!

Auch in puncto Kommandozeilen-Profiling hat sich etwas getan. Seit der Version 1.5.6 bietet JRuby bereits einen "flat profiler", um ein einfaches Profiling der Code-Ausführzeiten durchzuführen. Mit JRuby 1.6 kommt ein neuer "graph profiler" hinzu, der eine detailliertere Aufschlüsselung von Ausführzeiten nach Methodenaufrufen ermöglicht - ebenfalls direkt auf der Kommandozeile.

Willkommen Windows-Welt!

Wer plattformübergreifende Anwendungen entwickelt, sollte mit den entsprechenden Zielplattformen vertraut sein und die Anwendungen auf allen relevanten Plattformen testen. Aber auch die Anwendungsentwicklung in heterogenen Entwicklungsumgebungen hat sich bewährt. So kommen in unserem Team neben verschiedenen Linux Distributionen und Mac OS X auch die unterschiedlichsten Windows Betriebssysteme zum Einsatz.

Mit der Version 1.6 erheben nun auch die JRuby-Entwickler Windows zur "primary supported platform", mit dem Ziel, zum Release einen grünen Ampelstatus auf dem Continuous Integration Server für das JRuby-Windows-Projekt sicherzustellen. Den aktuellen Ampelstatus von JRuby kann man übrigens unter ci.jruby.org einsehen. Windows-Nutzer werden außerdem mit einem Installer für JRuby verwöhnt, der im Zuge der Installation auch den JRuby-PATH korrekt setzt und ggf. eine JVM installiert.

Weitere Neuerungen

Mit dem neuen JRuby-Release gibt es nun auch experimentelle Unterstützung für C Erweiterungen auf Basis von Rubys C API. Weiterhin wurde RubyGems aktualisiert und es gab einige gem-Anpassungen, bspw. werden rspec und ruby-debug nicht mehr im Bundle ausgeliefert. Letztere können jetzt bei Bedarf separat als gems installiert werden.

Alles in Allem ist JRuby 1.6 ein großer Schritt nach vorn. Wir freuen uns schon jetzt auf unsere ersten Projekte mit dem anstehenden 1.6er-Release.

JRuby Downloadseite
Release Notes von JRuby 1.6.0 RC3
Flat and Graph Profiles for JRuby 1.6