JRuby Q & A at RailsConf
Posted by Nick Sieger Sun, 01 Jun 2008 22:07:33 GMT
These are the notes I took during our “panelish” Q & A session on Sunday afternoon at RailsConf.
Exceptions (behavior between ruby and java)
- Embedding: JSR-223 preferred, BSF fallback
Java integration, mocking, proxying, extension
Multiple VM support
- multiple JRuby instances can be run in the same VM
- JavaSand (google it) -- Ola’s port of _why’s (freaky freaky) sandbox
Startup time performance gain recently
- -Xbootclasspath: VM does not verify classes in the “boot” classpath
- -Xverify:none is not recommended because of runtime-generated code
- Nailgun to keep VM running and “send commands” to it
Compiling Ruby code to JVM bytecode
- Keep # of class files low
- Walk AST and dump out high-level, abstracted operations (local variable access, dynamic invocation) and low-level bytecode is built for each of those
- 4096 -- maximum # of methods to be compiled
- Compiled methods are shared between runtimes
- Future:
- raise/eliminate overhead of compiled methods
- share AST, reduce memory load
Community tasks/actions
- Projects needing help (e.g., ActiveHibernate)
- Adoption, acceptance, blogging
- Documentation (http://wiki.jruby.org/ and others), screencasts
- Who’s using it?
Sun’s commitment
- Ruby vs. Groovy vs. Python vs. Scala vs. other langs
- Rails vs. Grails vs. Lift vs. JSF vs. Struts 2 vs. ???
- all of the above
- improve the JVM’s support for all dynamic languages
- JRuby is a full open source project, not owned or controlled by Sun, with history that extends years before main devs hired by Sun
Ruby programming language, JRuby is an implementation
- community evangelism of Ruby the language vs. implementations
- despite MVM, FFI and emerging areas that are not standard yet
How do you pitch JRuby/Rails in a legacy environment?
- Consider demonstrating running application without discussing technology specifics
- IBM and JDK 1.5 issues have been reported
- Free support as long as these issues are new and help improve JRuby and the community!
Testing
- JRuby enables more agile testing
- Without production risks
- Ceremony vs. Essence discussion
Terracotta/DSO
Windows/Mongrel/ImageMagick issues
- ImageVoodoo is an imaging library using Java2D, comes with Java
- MiniMagick also reportedly works
Rails benchmarks
- Micro-benchmarks are problematic and usually don’t lead to measurable application speedups
- Community needs a real-world, full application
- Antonio Cangiano working on new application-level benchmarks?
- “Richards” -- Smalltalk-originated application benchmark
JSR-292 (“invokedynamic”)
- Actually extension of “invokeinterface” bytecode
- Call site structure/method handles
- Expose the dynamic nature of the JVM (get the Java-specific stuff out of the way)
- Language-specific calling semantics, method invocation
- “Punching a hole” through the JVM
- Comments on JSR-292 Early Draft Review currently ongoing