My experience is that if you don't need JRuby (for Java interop or to satisfy pointy-haired strictures), you probably won't see much benefit from choosing it, at least for a Rails app.
On one hand, JRuby is technically a much better Ruby than Ruby, and if you want to improve bulk throughput you'll probably benefit. On the other, if bulk throughput were important, Ruby probably wouldn't be your first choice, and there are some downsides.
The biggest problem, especially for Rails, is the warm-up cost. Rails's start-up time is already painful, and adding to that hardly improves the test-develop cycle. I've not tested this latest release, but in 1.6.8, running a test suite was multiples slower than C Ruby. Test suites, which run a lot of different code, aren't really representative of real-world workloads, but if you're working on an application it really hurts.
You might also have trouble with gems that have compiled extensions. It takes a bit of Gemfile fiddling, but there are alternatives to most of those.
For applications other than Rails (which is really a bit of a pathological case), JRuby seems well worth a look. I've never found C Ruby's threading up to the job of making a responsive GUI application, but JRuby might work a lot better with its JVM-backed threads.
It's hard to say from the description of "fairly standard". Libraries with C extensions may not work with JRuby. A few Rails deployment options aren't available with JRuby, and the ones that do support it may treat it like a second-class citizen.
In short, there's potential downsides that may or may not be relevant to your usage. That said, even if you aren't using the Java ecosystem, the garbage collection, performance, and threading in JRuby may be worth your time. It's all up to what you're actually doing.
It's a great choice if your application needs real concurrency. JRuby does not have global interpreter lock like YARV, so threads can take advantage of multiple CPUs.
A lot of companies have operational requirements that make running "a fairly standard rails app" possible in their production environments with managed JVM apps.
Comments
Is JRuby worth using if JVM language integration isn't needed? E.g. A fairly standard Rails app.
My experience is that if you don't need JRuby (for Java interop or to satisfy pointy-haired strictures), you probably won't see much benefit from choosing it, at least for a Rails app.
On one hand, JRuby is technically a much better Ruby than Ruby, and if you want to improve bulk throughput you'll probably benefit. On the other, if bulk throughput were important, Ruby probably wouldn't be your first choice, and there are some downsides.
The biggest problem, especially for Rails, is the warm-up cost. Rails's start-up time is already painful, and adding to that hardly improves the test-develop cycle. I've not tested this latest release, but in 1.6.8, running a test suite was multiples slower than C Ruby. Test suites, which run a lot of different code, aren't really representative of real-world workloads, but if you're working on an application it really hurts.
You might also have trouble with gems that have compiled extensions. It takes a bit of Gemfile fiddling, but there are alternatives to most of those.
For applications other than Rails (which is really a bit of a pathological case), JRuby seems well worth a look. I've never found C Ruby's threading up to the job of making a responsive GUI application, but JRuby might work a lot better with its JVM-backed threads.
It's hard to say from the description of "fairly standard". Libraries with C extensions may not work with JRuby. A few Rails deployment options aren't available with JRuby, and the ones that do support it may treat it like a second-class citizen.
In short, there's potential downsides that may or may not be relevant to your usage. That said, even if you aren't using the Java ecosystem, the garbage collection, performance, and threading in JRuby may be worth your time. It's all up to what you're actually doing.
I'd use jruby if you were going to use something like http://torquebox.org/
It's a great choice if your application needs real concurrency. JRuby does not have global interpreter lock like YARV, so threads can take advantage of multiple CPUs.
A lot of companies have operational requirements that make running "a fairly standard rails app" possible in their production environments with managed JVM apps.