Post on 15-Jan-2015
description
Ram Vijapurapu@rvijapurapu
What is JRuby?
Its just RubyRunning 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● Need of a Scalable Platform● Need for an inclusive Platform
–Ruby, Groovy, Python, JS, ..● Generally Love of Engineering Genius
^
Enterprise Ready
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!
Common Man! Java is Slooow
1,000,000Fast
Common Man! Java is Slooow
1,000,000Fast
Fast
Clearly you
fudged it!
You fudged it!
● Maybe – but there is method in madness
You fudged it!
● Maybe – but there is method in madness
Performance Improvements in JVM from 1.5 to 1.6 have been significant. both are running i386
Moral: Focus on your code & JVM takes care of the rest– well into the future
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● Irb● rake● gem
● jruby● jirb● jruby -S rake● 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?vcr=940● http://code.google.com/p/appengine-jruby/ >
http://rails-depot.appspot.com/ ● http://en.wikipedia.org/wiki/JRuby#Performance