Your SlideShare is downloading. ×
Bitter Java, Sweeten with JRuby
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Bitter Java, Sweeten with JRuby


Published on

Ways to make Java applications better and less complex with JRuby

Ways to make Java applications better and less complex with JRuby

Published in: Technology
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Bitter Java? Sweeten with JRuby Brian Sam-Bodden
  • 2. Java Today
  • 3. Java is a 10+ year old programming language Java is the new COBOL Java is Dead Long live Java!
  • 4. Java is not going anywhere Because Java is everywhere! But Java is not perfect and it is adjusting to keep up
  • 5. Java has its jewels JDBC, JMS, Servlets and its blemishes... EJB < 3, JSF
  • 6. But we have a secret weapon... On this corner... presenting the amazing, highly tuned, multi- platform computing engine that dominates the present and permeates the future The JVM
  • 7. The are more than 200+ languages implementations for the Java VM The Java VM is like that neighborhood with low taxes and good schools... everyone wants in Regardless of where we go with Java “the language”, Java “the platform” is here to stay
  • 8. Groovy, JRuby and all the new kids on the block are just new additions to our beloved Swiss army knife
  • 9. What’s Missing?
  • 10. Java is solid on the server-side Java powers the enterprise Web development with Java has not been all that successful in the presentation tier Dynamic languages and frameworks based on dynamic languages have proved to be better suited for this
  • 11. Why Ruby?
  • 12. Why not?
  • 13. ✓Object-Oriented ✓Elegant ✓General Purpose ✓ Multi-paradigm Ruby ✓ Interpreted is... ✓Reflective ✓Dynamic ✓ Garbage-collected
  • 14. Created by Yukihiro “Matz” Matsumoto Developed in 1993, released in 1995 Blended parts of his favorite languages: Perl, Smalltalk, Sather, Eiffel, CLU, Ada and Lisp More popular than Python in Japan
  • 15. Ruby Ideals: Programming should be fun! Principle of Least Surprise “I believe people want to express themselves when they program. They don’t want to fight with the language. Programming languages must feel natural to programmers.” Matz
  • 16. JRuby
  • 17. A non-Java language for the Java platform A Ruby interpreter written in Java Started life in 2001 Current version is 1.0 (1.1b1) Open Source
  • 18. Oh, come on! Grow up!
  • 19. Ruby libraries from Java (like ActiveRecord) ➡Using Bean Scripting Framework (JDK <= 1.5) ➡Using JSR 223 Scripting API (JDK > 1.5) Java libraries from Ruby (Swing, SWT)
  • 20. RubyGems comes pre-installed Mongrel supports JRuby Rails just works No native extensions (unless by native you mean Java ;-)
  • 21. JRuby does not produce bytecode artifacts for the Ruby code (yet!) This is key difference with Groovy* Corporate backing :-) Sun and Thoughtworks have folks working on JRuby full-time
  • 22. All you need to run JRuby is the Java JDK (=>1.4)
  • 23. Familiar? pure Ruby with Java players
  • 24. Let’s try some interactive JRuby Fire up the JRuby console using Java Web Start Java version of IRB (Interactive RuBy) tool
  • 25. IRB is the best to get acquainted with Ruby
  • 26. A Simple Comparison
  • 27. Let’s do some file I/O... First we need a text file
  • 28. package com.integrallis; import; Let’s open the text file import; import; and print out its contents public class MyFileReader { Java public static void main(String[] args) { try { BufferedReader in = new BufferedReader(new FileReader(quot;read_me.txtquot;)); String str; while ((str = in.readLine()) != null) { System.out.println(str); } in.close(); } catch (IOException e) { e.printStackTrace(); } } }
  • 29. Let’s do it the Ruby way!
  • 30. But wait! This just in... ... Ruby encapsulates common behaviors ➡ A one-liner version, yet is readable!
  • 31. Why?
  • 32. For Web applications... Best of both worlds: ➡Dynamic-Framework on the Front End (Rails) ➡Solid Back End battle tested technologies (Spring/EJB3)
  • 33. Got API-itis? Ruby’s ability to create concise DSLs paired with Java’s richness of APIs and frameworks Java APIs are robust, fully-featured, flexible... ...which makes them complex A JRuby DSL can help us in the 80-20 scenarios
  • 34. Got API-itis? JRuby+SWT
  • 35. There are JRuby DSLs all ready to use... Today! ActiveRecord-JDBC - OR-Wrapping Raven - Wrapper for Rake, RubyGems and Maven AntBuilder - Wrapper for Ant JRake - Wrapper for Rake JtestR - Test Java code with the best Ruby testing tools
  • 36. JRuby on Rails
  • 37. Java & JEE the most prevalent language the most complete enterprise platform a rich ecosystem of web frameworks a vibrant open source community
  • 38. Java & JEE plagued by mediocre web frameworks not well suited for rapid prototyping in need of a dynamic language web framework one level of abstraction too low for the web
  • 39. Who could help Java on the Web Tier?
  • 40. Ruby on Rails a revolutionary web framework complete MVC solution fast prototyping killer AJAX support
  • 41. Ruby on Rails a DSL for the web leading the pack on the web 2.0 front born from a product, not a committee a vibrant open source community
  • 42. JRuby on Rails the agility of rails - the scalability of Java JRuby likely to surpass Ruby in speed sneak Ruby and RoR into the enterprise!
  • 43. JRuby on Rails
  • 44. JRuby on Rails
  • 45. JRuby on Rails JEE servers are good at scaling up no more multi-process management use JRuby “multi-VM” support leverage the maturity of the JVM and JEE servers
  • 46. JRuby on Rails deploy your Rails app as a WAR leverage JDBC from ActiveRecord
  • 47. JRuby & Rapid Spring Prototyping
  • 48. JRuby+Spring RAD a simple example by the folks at jobster use JRuby for rapid prototyping Spring controller that delegates to a JRuby controller JRuby controllers live alongside your JSPs
  • 49. JRuby+Spring RAD Simple JRuby controller
  • 50. JRuby+Spring RAD JSP view provides input to the Ruby controller
  • 51. JRuby+Spring RAD JSP view provides input to the Ruby controller
  • 52. JRuby+Spring RAD this experimental library supports: ✓access to Spring beans from JRuby code ✓ access to Hibernate queries
  • 53. JRuby on Springy Rails
  • 54. JRoR on Spring Chris Nelson’s work ✓use rails-integration plugin ✓ expose WebApplicationContext in a RoR controller ✓include Spring - Spring plugin for JRuby
  • 55. JRoR on Spring ✓install goldspike rails-integration plugin on you JRoR app ✓ rake war:standalone:create to package a WAR with: ➡Your RoR app ➡JRuby and Rails libraries
  • 56. JRoR on Spring rake war:standalone:create in action:
  • 57. JRoR on Spring generated WARs work on many servers: ✓Tomcat ✓Glassfish ✓Jetty ✓JBoss
  • 58. JRoR on Spring ✓ add Chris’ Spring module:
  • 59. JRoR on Spring ✓ Expand the generated WAR ✓Add Spring application ➡ Application Code ➡ Libraries (Jars) ➡ Config Files
  • 60. JRoR on Spring ✓ access your Spring beans from a RoR controller
  • 61. JRoR on Spring ✓add a new face to your Spring applications ✓ leverage thousands of open source projects ✓leverage the good parts of JEE like JDBC and JMS
  • 62. Resources JRuby JRuby Rails Integration RAD Spring Prototyping with JRuby Chris Nelson’s Work
  • 63.