JRuby allows Java developers to embed the Ruby interpreter in any Java application with dual access for both Java and Ruby scripts.
JRuby is platform independent and has built-in support for Rails, RSpec, Rake, and the RubyGems frameworks.
JRuby has slowly evolved from 2001 to become a stable development environment, being initially developed at Sun, then at Engine Yard, and now at Red Hat.
What is new in this release:
- Ruby 2.2 compatibility
- A new optimizing runtime based on a traditional compiler design
- New POSIX-friendly IO and Process
- Fully ported encoding/transcoding logic from MRI
- Resolved various issues with stat() on Windows
- Fixed couple of encoding/transcoding issues
- Source with __FILE__ in it will now JIT
- Native call subsystem will load on mixed 32/64 bit Linux distributions
What is new in version 1.7.21 / 9.0.0.0.rc2:
- Time.getlocal accepts fixnum as an argument (Rails 4.2 blocker)
- A few encoding fixes
- Socket.read(0) does not block (1.9)
What is new in version 1.7.20 / 9.0.0.0.pre2:
- Time.getlocal accepts fixnum as an argument (Rails 4.2 blocker)
- A few encoding fixes
- Socket.read(0) does not block (1.9)
What is new in version 1.7.19 / 9.0.0.0.pre1:
- Time.getlocal accepts fixnum as an argument (Rails 4.2 blocker)
- A few encoding fixes
- Socket.read(0) does not block (1.9)
What is new in version 1.7.16:
- Fixed regression which improperly wrote wrong version for OSGi bundles
- Fixed several regressions involving symbolic links and Ruby loading
- Doubled performance of FileTest.directory
What is new in version 1.7.15:
- Potential memory leak resolved when reloading JRuby apps in Java App servers
- jruby-jars gem did not have their embedded jars within it
- rvm install of jruby would not properly follow gemset symlinks
- Windows exec works again
- lstat did not honor native.enabled property and always invoked native
What is new in version 1.7.13:
- Ability to upgrade jruby-openssl as a gem
- New custom profiler API
- Several BigDecimal fixes
What is new in version 1.7.12:
- Mostly small Ruby 1.9.3 compatibility fixes.
- Fixed a small leak if throwing lots of X509Errors.
- Improved loading speed of Ruby files from jar files.
What is new in version 1.7.11:
- Miscellaneous encoding fixes
- Several fiber edge cases fixed
- Fiber thread pool reinstated
- More Ruby-friendly Java backtraces
What is new in version 1.7.8:
- Fixed Windows ‘rails new' regression (bundle install exits)
- Fixed OpenSSL gem bootstrapping problem
- Fixed Google App Engine bootstrapping problem
- A few missing 1.9+ Pathname features added
What is new in version 1.7.4:
- Many IO and encoding issues fixed
- Transcoding support for :xml entity encoding
- Proc and block dispatch perf improvements
- Fiber and Enumerator#next improvements and fixes
- Fixed a regression in windows java native launcher
- Experimental Ruby 2.0 support (most features and stdlib included)
- 90%+ complete Ripper support
- OpenSSL fixes and updated to newer Bouncy Castle library
- Updates and fixes to FFI subsystem (compat with C ext, AIX support, etc)
- Long running regexp can be interrupted by Thread#kill and raise
What is new in version 1.7.3:
- Reworked openssl ext to allow updating from gem.
- Improved performance of constants and global variables.
- Improved performance of Java arrays accessed from Ruby.
- Many miscellaneous 1.9 compatibility fixes.
What is new in version 1.7.2:
- Reworked openssl ext to allow updating from gem.
- Improved performance of constants and global variables.
- Improved performance of Java arrays accessed from Ruby.
- Many miscellaneous 1.9 compatibility fixes.
What is new in version 1.7.1:
- New hashing algorithm
- Update standard lib to match MRI patchlevel 1.9.3p327
- Several fixes to new io/console.rb implementation
- system/spawn/popen fixes and additional options hash fixes
- Several SSL fixes (jruby-openssl release coming soon for 1.6.8 users)
- IO.select not erroneously reporting data to be read
- Psych YAML engine updated to latest
What is new in version 1.7.0:
- Ruby standard library updated to 1.9.3p286
- Many 1.9.x compatibility fixes
- Support for invokedynamic
- Performance and concurrency improvements throughout
- Java 5 support dropped (Java 6+ required)
- All known 1.9 encoding issues resolved
- Kernel#exec now does a true native exec on all platforms
- Improvements and fixes to Java integration and embedding
- Native features now better supported on Solaris, ARM Linux, and others
- Update to Rubygems 1.8.24
- Update to Rake 0.9.2.2
What is new in version 1.7.0.RC2:
- The first JRuby to support the new "invokedynamic" feature of the JVM.
What is new in version 1.7.0 preview2:
- Many 1.9.x compatibility fixes
- invokedynamic has been disabled for now on Java 7 (still on by default on Java 8)
- Performance and concurrency improvements
- Java 5 support dropped (Java 6+ required)
- Several IO transcoding issues
- YAML now encodes scalars properly instead of using Java locale
- Kernel#exec now does a true native exec on all platforms
- Improvements and fixes to Java integration and embedding
- Fix several native support issues on Solaris
What is new in version 1.7.0 preview1:
- 1.9.3 is now our default runtime mode (-1.8 is needed for 1.8.7 support)
- Many 1.9.x compatibility fixes
- Support for Java 7's invokedynamic*
- Performance and concurrency improvements
- Java 5 support dropped (Java 6+ required)
- Update to Rubygems 1.8.24
- Update to Rake 0.9.2.2
What is new in version 1.6.7.2:
- This is a special release of JRuby which only updates our shipped copy of RubyGems to version 1.8.24.
What is new in version 1.6.7:
- Fix circular require issue in Rubygems introduced by our Maven gem support
- Fix regression in popen* where streams get prematurely closed
- Many 1.9-mode encoding bugs fixed in String, Regexp, StringIO, and YAML
- Win32OLE now works in 1.9-mode
- ffi on Win x64 now knows about basic types :size_t
- Use jzlib to fix a set of issues with out zlib library
- Reduced internal locking based on user reports
- C extensions work on OS X again
- Gems with gemspecs which contain UTF-8 multi-byte chars install in 1.9 mode
What is new in version 1.6.6:
- Updated stdlib to match Ruby 1.8.7p357 and 1.9.2p312
- Updated RubyGems to 1.8.15
- Multiple 1.9-mode yield/splat bugs fixed (pp, rspec 2.8 working again)
- Multiple 1.9-mode encoding bugs fixed
- Critical fixes in Random and Fiber
- Map Scala operator methods to symbolic names ($plus, etc)
What is new in version 1.6.5:
- Many -1.9 encoding issues resolved
- .jrubyrc support for storing convenient execution options
- New cext.enabled property to turn off only C extentions but not native support
- C extension support now uses less memory
- Updated to Rubygems 1.8.9
- -rjruby/thread_dump adds a USR2 Ruby thread dumper
- Improved peformance interacting directly with Java Maps
- Improved fiber performance and support for JVM coroutines
- Improved zlib support
- 36 Issues resolved
What is new in version 1.6.4:
- 1.9 language and core class fixes
- New Native MacOS installer
- Overloaded Java method dispatch perf fix
- Java dispatch block cercion perf fix
- Disabling native now disables C extension support
- JRuby can be built with 1.9 mode by default
- 48 Issues resolved
What is new in version 1.6.3:
- 1.9 language and core class fixes
- Ruby object construction performance boost
- Require performance improvements
- Windows native exec fixes
- 39 Issues resolved
What is new in version 1.6.2:
- YAML problem generating an ArrayIndexOutOfBounds Exception.
- Java names of the form getX were not getting aliases of get_x, x (regression).
- A couple of embedding errors.
- A few 1.9 issues resolved.
What is new in version 1.6.1:
- Numerous 1.9-mode features and bugs fixed.
- Various fixes to installing and running C extensions.
- Kernel.exec on windows does a native exec (CreateProcess).
- Performance fixes for non-blocking IO methods.
- Performance tweaks for Array, String, and a few other core classes.
- Updated JSR292 (invokedynamic) support.
- 193 commits and 47 issues resolved since 1.6.0.
What is new in version 1.6.0:
- Ruby 1.9.2 language and API compatibility (Not implemented Encoding::Converter, ripper).
- Improved Ruby call performance.
- Built-in profiler (-profile, -profile.graph).
- RSpec no longer bundled.
- C Extension support (experimental).
- RubyGems Maven support (preview).
- Improved compatibility and user experience on Windows.
- jruby-complete.jar now includes 1.9 standard library.
- Embedding API refinements.
- Over 2000 commits and 270 issues resolved.
What is new in version 1.6.0.RC3:
- New readable backtrace format.
- Easier to embed in OSGi environment.
- Fixed regression which slowed down jar-based requires.
- Add native JFFI bits for x86_64 SunOS (Solaris).
- More platforms with pre-built C extension support.
- New jruby-core and jruby-stdlib maven artifacts.
- More 1.9 compatibility fixes.
What is new in version 1.6.0.RC2:
- Major Features:
- Ruby 1.9.2 language and API compatibility (Not implemented Encoding::Converter, ripper).
- Improved Ruby call performance.
- Built-in profiler (-profile, -profile.graph).
- RSpec no longer bundled.
- C Extension support (experimental).
- RubyGems Maven support (preview).
- Improved compatibility and user experience on Windows.
- jruby-complete.jar now includes 1.9 standard library.
- Embedding API refinements.
- Over 2000 commits and 265 issues resolved.
What is new in version 1.6.0.RC1:
- Ruby 1.9.2 language and API compatibility (Not implemented Encoding::Converter, non-ASCII identifiers, ripper, fiddle)
- Improved Ruby call performance
- Built-in profiler (-profile, -profile.graph)
- RubyGems 1.4.2
- RSpec no longer bundled
- C Extension support (experimental)
- RubyGems Maven support (preview)
- Improved compatibility and user experience on Windows
- jruby-complete.jar now includes 1.9 standard library
- Embedding API refinements
- Over 2000 commits and 265 issues resolved.
What is new in version 1.5.6:
- Rbconfig's Config::CONFIG provides wrong name for Windows 2008 Server.
- Fix classpath and load path issues related to file paths containing spaces.
- java.util.ConcurrentModificationException.
- become_java! doesn't add Ruby class methods as statics on the resulting Java class.
- Marshal.load fails when Kernel.read is defined.
What is new in version 1.5.5:
- Updated jaffl for YourKit compatibility.
- Ant.load_from_ant is broken on Windows.
- Cucumber Japanese example raises exception on JRuby.
- Marshalled ruby hash gets loaded incorrectly.
- kernel.system not working in 1.5.3 on Windows.
- Cannot run ‘jruby -S rake test' for Rails project on Windows in 1.5.3.
- Webrick socket.readline causes 100% cpu usage.
- Marshal dump format error and inconsistencies with MRI.
- java.awt.Component.instance_of?() expects 2 args.
- Backtick operator does not work on Windows in 1.5.3.
- Requiring ‘ffi' defines class method :error on Module.
- Can't include interfaces in a synchronized class.
What is new in version 1.5.3:
- ConditionVariable use causes thread deadlocks.
- SelectorProvider.openSelector() will sometimes fail on Windows.
- Kernel#exec does not heed ENV['PATH'] when launching shell command.
- Subprocess started by Kernel#exec does not respect RUBYOPT and other environment variables set via ENV.
- ScriptEngine ignores global bindings.
- Remove noisy warning when setting ScriptEngine.ARGV.
- Scala classes (and perhaps others) are named oddly and break Java reflection.
- File.open with permissions has sideffect of clearing umask.
What is new in version 1.5.2:
- JRuby and open-uri File handle issue.
- Anonymous classes are piling up and filling up PErmGen, eventually causing a crash.
- Memory Leak when extending Java class with additional Ruby instance variable.
- XSS in WEBrick.
- SSLSocket holds selectors, keys, preventing quick cleanup of resources when dereferenced.
What is new in version 1.5.1:
- Uncaught AccessibleObject.setAccessible fails on App Engine
- ObjectSpace.undefine_finalizer does not work
- JRuby exit hangs on ChannelStream.finalize
- Regression: JRuby 1.5 doesn't pick up JDBC drivers from CLASSPATH
- Memory Leak when extending Java class with additional Ruby instance variable
- Regression processing END between JRuby 1.4 and 1.5
- Known bug in net/http.rb
- jruby behaves differently from MRI with (rails 2.3.8) activerecord associations
- FileUtils.touch does not update the mtime of directories on Windows
- IO#open(&block) + close sets $! which disables Test::Unit::Autorunner
- Multiple block args to ActiveRecord association proxy are splatted incorrectly
- File is not expanded when it is used from within a a compiled ruby script used as the main class of an executable jar
What is new in version 1.4.0:
- JRuby is now compatible with 1.8.7 patchlevel 174
- Windows Native Launcher - Solves many reported bugs with our old .bat scripts
- YAML parser Yecht (bug-for-bug compatible with Syck!)
- Java Integration Support: faster and new java_method, java_send, and java_alias methods
- Windows installer
- New embedding framework
- Java 6 scripting out of the box
- New org.jruby.embed package to supersede JavaEmbedUtils
- Many 1.9 mode (-1.9) fixes
- Updated stdlib to 1.9.2preview2
- Rubygems now working
- Rails 2.3.3 simple apps working (2.3.4 has 1.9 bug)
- Much better error reporting
- Shorter backtraces with less Java
- Ruby-compatiable syntax error reporting
- 307 bugs fixed since 1.3.1
What is new in version 1.3.1:
- Fixes a recently discovered security bug in BigDecimal
- Fixes a regression in timeout (0-1 second timeouts truncate to 0)
- Fixes a regression Thread.wakeup where the thread would not wake up
Requirements:
- Java 6 or higher
Comments not found