Ram Vijapurapu
  @rvijapurapu
What is JRuby?

Its just Ruby
Running on the JVM
(Java Virtual Machine)
Conclusion




..I truly wish it is that simple.



 Image credit: http://www.flickr.com/photos/hordurk/3204191929/
Social Context
Social Context
Social Context
Why do we want to go back to the
        Haunted House again?
● Reuse what's already built
                 Enterprise Ready
● Need of a Scalable Platform
                       ^
● Need for an inclusive Platform


   – Ruby, Groovy, Python, JS, ..
●
    Generally Love of Engineering
    Genius
What is the first thing you hear
            about Java?




Image credit: http://bit.ly/btxcPf
Common Man! Java is Slooow
●   Maybe... Maybe not!

     ACHTUNG! Highly Unscientific Testing
Common Man! Java is Slooow


              No
              Optimizations
Common Man! Java is Slooow
             100
Common Man! Java is Slooow
             1,000
Common Man! Java is Slooow
             10,000
Common Man! Java is Slooow
             100,000
Common Man! Java is Slooow
              100,000
What's your Point?
See Java is sl0000w!
st
                      a
Common Man! Java is Slooow
                    F
            1,000,000
st
                     F a
 Common Man! Java is Slooow
                     Fast




             1,000,000
Clearly you
fudged it!
You fudged it!
●   Maybe – but there is method in madness
You fudged it!
         Moral: Focus on your code
  ●   Maybe JVM there is care ofin madness
         & – but takes method the rest
         – well into the future




Performance Improvements in JVM from
1.5 to 1.6 have been significant. both are
running i386
What just happened?
●   Magic – JVM/Hotspot (Dark Magic?)
    ●   JIT (Just In Time Compilation) – Optimization on the
        Fly
    ●   Speaking further on this is beyond the scope of this
        presentation _


Summary: Normal usage on Web you will find
JRuby performs same as CRuby
As all good things in life........
       there are few limitations
●   You cannot use libraries which use CRuby
    Extensions
●   Java Threads
●   Posix Methods
●   Does not support continuations/bindings.
    (Feature Missing)
       http://docs.codehaus.org/display/JRUBY/Limitations
Same stuff – Different Different
●   ruby                     ●   jruby
●   Irb                      ●   jirb
●   rake                     ●   jruby -S rake
●   gem                      ●   jruby -S gem


     Include jruby-complete.jar or jruby.jar in
     your CLASSPATH & PATH for the
     executable
Show me stuff... JRuby
 integration with JVM




              Ruby'ized – by popular demand!
Choose your Hammer – Calling
   Ruby from within Java
Choose your Hammer – Calling
   Ruby from within Java




   JSR 223
Choose your Hammer – Calling
Ruby & Groovy from within Java
Choose your Hammer – Calling
Ruby & Groovy from within Java
         Why would we want to do
         this? Because we   can
Choose your Hammer – Calling
 JRuby file from within Java
Choose your Hammer – Calling
 JRuby file from within Java
Ruby > Java
Ruby > Java & Back




     [SNIPPED]
Ruby > Java & Back
Performance & External Libraries
●   For the sake of performance it would be better
    to use Java Libraries over JRuby at times.
    ●   Totally depends on your requirement.
●   Including external Java libraries within your
    JRuby Code is fairly straightforward
    ●   You can also put the jar files in the rails lib directory
        for getting access to them in your rails application
JfreeChart – Chart Generation
●   All you need to do is either have the jars in your
    classpath
●   Or include it in your libs folder in rails.




                 http://kfahlgren.com/blog/2007/04/13/jruby-jfreechart-sparklines/
JRuby & Library Jars
This guy is boring why doesn't he
       just show me rails
The Holy Blog
...
...
DB Stuff
Packaging...
Packaging & Deploying




                   config/warble.rb
Voila
In Summary
●   I strongly believe JVM should be your platform
    Strategy
    ●   This more or less comes out of my experience.
    ●   JRuby will fit into many cloud architectures with little
        effort (Not sure of Azure yet)
        –   Portability from within
Useful Links
●   http://jruby.org/
●   http://www.infoq.com/vendorcontent/show.action?vc
●   http://code.google.com/p/appengine-jruby/ >
    http://rails-depot.appspot.com/
●   http://en.wikipedia.org/wiki/JRuby#Performance
Ram Vijapurapu
   @rvijapurapu
thinkbelievedo.com

JRuby - The Perfect Alternative

  • 1.
    Ram Vijapurapu @rvijapurapu
  • 2.
    What is JRuby? Itsjust Ruby Running on the JVM (Java Virtual Machine)
  • 3.
    Conclusion ..I truly wishit is that simple. Image credit: http://www.flickr.com/photos/hordurk/3204191929/
  • 4.
  • 5.
  • 6.
  • 7.
    Why do wewant to go back to the Haunted House again? ● Reuse what's already built Enterprise Ready ● Need of a Scalable Platform ^ ● Need for an inclusive Platform – Ruby, Groovy, Python, JS, .. ● Generally Love of Engineering Genius
  • 8.
    What is thefirst thing you hear about Java? Image credit: http://bit.ly/btxcPf
  • 9.
    Common Man! Javais Slooow ● Maybe... Maybe not! ACHTUNG! Highly Unscientific Testing
  • 10.
    Common Man! Javais Slooow No Optimizations
  • 11.
    Common Man! Javais Slooow 100
  • 12.
    Common Man! Javais Slooow 1,000
  • 13.
    Common Man! Javais Slooow 10,000
  • 14.
    Common Man! Javais Slooow 100,000
  • 15.
    Common Man! Javais Slooow 100,000 What's your Point? See Java is sl0000w!
  • 16.
    st a Common Man! Java is Slooow F 1,000,000
  • 17.
    st F a Common Man! Java is Slooow Fast 1,000,000 Clearly you fudged it!
  • 18.
    You fudged it! ● Maybe – but there is method in madness
  • 19.
    You fudged it! Moral: Focus on your code ● Maybe JVM there is care ofin madness & – but takes method the rest – well into the future Performance Improvements in JVM from 1.5 to 1.6 have been significant. both are running i386
  • 20.
    What just happened? ● Magic – JVM/Hotspot (Dark Magic?) ● JIT (Just In Time Compilation) – Optimization on the Fly ● Speaking further on this is beyond the scope of this presentation _ Summary: Normal usage on Web you will find JRuby performs same as CRuby
  • 21.
    As all goodthings in life........ there are few limitations ● You cannot use libraries which use CRuby Extensions ● Java Threads ● Posix Methods ● Does not support continuations/bindings. (Feature Missing) http://docs.codehaus.org/display/JRUBY/Limitations
  • 22.
    Same stuff –Different Different ● ruby ● jruby ● Irb ● jirb ● rake ● jruby -S rake ● gem ● jruby -S gem Include jruby-complete.jar or jruby.jar in your CLASSPATH & PATH for the executable
  • 23.
    Show me stuff...JRuby integration with JVM Ruby'ized – by popular demand!
  • 24.
    Choose your Hammer– Calling Ruby from within Java
  • 25.
    Choose your Hammer– Calling Ruby from within Java JSR 223
  • 26.
    Choose your Hammer– Calling Ruby & Groovy from within Java
  • 27.
    Choose your Hammer– Calling Ruby & Groovy from within Java Why would we want to do this? Because we can
  • 28.
    Choose your Hammer– Calling JRuby file from within Java
  • 29.
    Choose your Hammer– Calling JRuby file from within Java
  • 30.
  • 31.
    Ruby > Java& Back [SNIPPED]
  • 32.
  • 33.
    Performance & ExternalLibraries ● For the sake of performance it would be better to use Java Libraries over JRuby at times. ● Totally depends on your requirement. ● Including external Java libraries within your JRuby Code is fairly straightforward ● You can also put the jar files in the rails lib directory for getting access to them in your rails application
  • 34.
    JfreeChart – ChartGeneration ● All you need to do is either have the jars in your classpath ● Or include it in your libs folder in rails. http://kfahlgren.com/blog/2007/04/13/jruby-jfreechart-sparklines/
  • 35.
  • 36.
    This guy isboring why doesn't he just show me rails
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
    Packaging & Deploying config/warble.rb
  • 43.
  • 44.
    In Summary ● I strongly believe JVM should be your platform Strategy ● This more or less comes out of my experience. ● JRuby will fit into many cloud architectures with little effort (Not sure of Azure yet) – Portability from within
  • 45.
    Useful Links ● http://jruby.org/ ● http://www.infoq.com/vendorcontent/show.action?vc ● http://code.google.com/p/appengine-jruby/ > http://rails-depot.appspot.com/ ● http://en.wikipedia.org/wiki/JRuby#Performance
  • 46.
    Ram Vijapurapu @rvijapurapu thinkbelievedo.com