JRuby brings the power of Ruby along with its elegance, expressiveness, and conciseness to the Java platform. In this section, we’ll use Clojure STM and Multiverse STM through Akka in JRuby code. If you’d like to use Multiverse directly, refer to the Multiverse documentation for the JRuby integration API.
To use Clojure STM from JRuby, we’ll use clojure.lang.Ref for managed references and the runInTransaction method of LockingTransaction for the transaction. Let’s give that a try using the account transfer example. Create a class called Account that will hold a managed reference to its immutable state represented by the JRuby field @balance: