JRuby - The Perfect Alternative

Post on 15-Jan-2015

1,851 views 2 download

Tags:

description

This presentation was first presented at The Auckland Ruby Group - http://ruby.meetup.com/96/

transcript

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

Ram Vijapurapu@rvijapurapu

thinkbelievedo.com