Bitter Java, Sweeten with JRuby

Founder and CEO um Integrallis Software, LLC
6. Feb 2008

Más contenido relacionado



Bitter Java, Sweeten with JRuby

  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