Here is a list of sites and projects using JRuby. Please add descriptions if possible.
Use this structure as a guide (but feel free to omit or add information as appropriate).
Description of project.
Explain why JRuby is being used.
Explain how JRuby is being used.
Describe how the project uses JRuby's Java integration, if relevant.
List any regrets choosing JRuby or recommendations for others (and accentuate the positive).
Information on hits/day, transactions/s, and other metrics that would help others evaluate JRuby for their projects.
The project monitors and controls the passenger busses and fuel trucks at Oslo Airport Gardermoen. Each vehicle contains an embedded device with GPS and WIFI that reports the activities of the vehicle to a central server. Flight list and orders are received by integrating the server to the airport flight database and a central office dispatch unit sends assignments to the vehicles. All assignments are stored on the server and are reported to the airport authorities through the office backend system. A web application for analysis and reporting offers detailed drill down and charts.
We had an extremely tight schedule and needed a language that let us write the features quickly. Ruby fit that need. At the same time we absolutely needed a tried production platform that would scale well. Java fit that need. JRuby seemed a tempting alternative, and all experiments, proof of concept, pre-project and initial iterations of the project proved JRuby to be a really great platform for developing complex and critical applications.
A REALLY important factor that was tested early in the project was the responsiveness of the JRuby team. The support from the JRuby team has been absolutely fantastic. Since project start in 2009 and deployment to production in 2010, there have been bugs of differing severities, and each time the JRuby team has responded quickly and reliably. Over time we have become involved in the JRuby project and we are confident that any problems that occur will be solved.
JRuby is used in every tier of the system and large parts of the code is shared across the embedded systems (Android and Linux), thick client office systems (Eclipse RCP), the web apps (Rails), and the communication server (headless JRuby process).
In the fuel trucks, we use JNI for reading GPIO. All tiers use ActiveRecord JDBC Adapter for database access, DerbyDB in the client systems, and PostgreSQL on the server. ActiveMQ is used for integrating to an automated airline ticket reporting system. The client systems use Eclipse SWT, JFace, and RCP. Apache POI is used to import Office documents. Lots more Java libraries are used and work well. Being able to select from the Java ecosystem in addition to the Ruby gems has proven very valuable.
We have no regrets in choosing JRuby. It is and has been a very pleasant and productive platform to work on. As with all projects, be sure to attack your integration points and high-risk parts of your system first. Test performance.
We have around 200 users, 600 assignments per day, 50 vehicles. The web apps seldom have more that 10 hits/s.
OpenSource implementation of the Telegard BBS.
JRuby offered advantages of many existing Java libraries not available for MRI Ruby.
JRuby is the primary language for the project.
Project runs on OpenJDK 6
UploadBooth is a service that enables you to upload and share tagged files with others online in a simple way. You can start using UploadBooth right away by uploading your first batch of files.
BlissMessage is an iPhone app which lets you send free text messages from iPhone to iPhone and from the web to iPhones as well. It leverages push notifications for instant delivery of the messages. While the basic use case is sending free text messages to other users, you can also get notified about your Twitter replies and mentions if you enter your Twitter name in the profile.
Easy and performant integration of mature MQ technologies (ActiveMQ). Java is a high-performant language to fall back on in case, and it's safer for me to code Java than C.
NGINX - Jetty - JRuby-Rack
Multi-language high-performance online dictionary designed to serve millions of search requests a day. The system combines high-quality content by the renowned dictionary publisher PONS with content generated by the web's crowd intelligence. The scalable system is developed and hosted by finnlabs.
To share large in-process caches and lucene indices between multiple rails instances and to reuse Java libraries.
Optimized Java App handles perfomance critical dictionary search requests, whilst JRuby on Rails runs everything else.
Millions of search requests a day.
Open Source, Student and Developer Collaboration Site for Software Projects
JRuby on Rails running on Glassfish
~15K/day (as of 2008-10-29) and growing
Oracle Mix Running on Oracle Application Server, Oracle Database, Oracle Internet Directory, Oracle SSO, and JRuby 1.1RC2 on Rails (1.2.6). Built by the Oracle AppsLab in collaboration with ThoughtWorks.
Ruby-Processing is a wrapper for Processing, a visual coding sketchbook (includes audio, 3D graphics, export to 3D printers etc...).
It just works, and the performance hit (vs vanilla processing) isn't too bad!
To access the Processing core and other java libraries, and to integrate ruby gems into processing sketches.
Yes, there is very little of the processing environment that can't be accessed in ruby, including all the java libraries. This includes JOGL/OPENGL access to GLSL shaders (which interestingly will only run with jruby-complete).
An open-source entreprise dashboard which gauges quality of Java applications through the observance of coding rules conventions, metric measures and advanced indicators.
Embed Ruby/Rails into a JEE application
Jetty server + goldspike + activerecord-jdbc-adapter. Build with maven.
A (media)file hosting application. Development and deployment details
The local government of Saxony (Germany) publishes all its press releases via this application.
App built on Rails, target environment is J2EE-only.
Running Rails, acessing Java libraries from the Rails app.
schnell is a zippy (Fast), yippy (Easy) and hippy (Cool) tool for testing websites.
Written on jruby using webdriver (formerly htmlunit).
schnell is a headless browser web application testing tool and uses webdriver (formerly htmlunit) as its driver.
TriSanoâ„¢ is an open source, citizen-focused surveillance and outbreak management system for infectious disease, environmental hazards, and bioterrorism attacks. It allows local, state and federal entities to track, control and ultimately prevent illness and death.
Extensive roadmap - didn't think Ruby alone could get it done and want to fall back to Java rather than C.
Not yet, but will likely soon
Auktionskompaniet.com is a Swedish chain of auction houses owned by Bukowskis Auktioner AB, Swedens biggest auction house. Auktionskompaniet hold auctions with objects in the average consumer price range.
Third-party library integration
Rails (2.1.2), Warbler 0.9.11, Glassfish v2, Ubuntu 8.04
~100k page views / day (2008-10)
Secure transcript delivery system developed by Edge Case.
to make use of java libraries
Measurements in home networks, for research purposes.
Portability with a GUI. Java libraries.
Successfuly ran 2500 runs on more than 2100 heterogeneous machines (OSes/countries etc.).
eazyBI is easy to use business intelligence web application for analyzing data either from uploaded files or from other source applications.
Primary language to develop Ruby on Rails 3.x application. Production deployment using Kirk or remote deployment using embedded Winstone or using Tomcat or other Java app servers.
Almost none (just slower development and test startup time compared with MRI)
The Currency Cloud delivers Cross Border Payments as a Service.
Jux aims to be the best showcase for your content. You can post photos, videos, articles, slideshows, etc.
We wanted to move to JRuby from MRI Ruby so we could rewrite some of our slow, CPU-bound code in Clojure.
We run Rails on JRuby.
Although not Java, we are using JRuby's Java integration to call from JRuby into Clojure.
Rails asset recompilation during development is slower.
Cannot use newrelic_rpm gem as it does not clean up thread locals which causes excessive memory usage with tomcat. This is not a problem in TorqueBox, however. I suspect JBoss clears out thread locals after each request.
Single sign-on with desk.com has stopped working. We have traced this down to what we believe to be an SSL bug in jruby. See http://jira.codehaus.org/browse/JRUBY-6951 Fixed in 80ba2ff470d4748a1836d40afac0b879b9a0d943 !
Do simulate load on a test setup before deploying to production. We didn't do so at first and we suffered severe performance degradation due to file descriptor and memory leaks.
We recommend Eclipse Memory Analyzer tool for debugging memory leaks. Gems not cleaning up thread locals has been the biggest source of memory leaks for us.
Avoid haml. Besides being slower than erb and slim and not supporting streaming, haml uses exceptions for control flow (fixed in upcoming 3.2.0) and changes the values of constants, both of which cause performance issues in jruby.
Be careful with threadsafe mode, especially if you are using a large number of third-party gems. Many gem authors do not code their gems with thread safety in mind. JRuby is raising awareness, however.
Mongoid 3 will leak file descriptors on tomcat-based deployments. This is because Mongoid 3 stores sessions as a thread local. You can work around this by running in non-threadsafe mode and patching Mongoid to store sessions as a global variable.
1.4M hits / day. 105K users.
An Information Prescription is a special kind of prescription which provides information, rather than tablets or medicines. The website is a service run by the National Health Service, UK.
Ability to use Java libraries such as flying Saucer/iText and easily integrate with JBOSS via the Torquebox project. So we can turn threading on in Rails.
To run a RubyOnRails 3.0 app inside JBoss. PDF generation, XML cleaning
Starting up the JVM each time for running test can be slow, especially when its sub-second on MRI, but there is shotgun which may solve this problem.
I'd recommend not starting with Torquebox from day 1 and only adding it when needed. There is a Torquebox Lite (which is web only) or just run with Puma (we do this for some secondary-websites). Once you need JBoss specific features add Torquebox.
~150,000 visitors per month / 140 users (admins, healthcare professionals, editors)
Last edited by Martin Prout,