j ruby kungfu rails
TRANSCRIPT
DigitalSonicOct. 2009
It’s a Bird…
It’s a Plane…
No, it’s Superman
How many Rails developers have Java knowledge?
• The Best of JVM
• It’s Just Ruby
• Platform Independent
Have a Try
• Download the latest JRuby distribution
• Unpack
• Add the bin path to $PATH or %PATH%
• Test it
jruby –v
jirb
jirb_swing
Ruby => JRuby
• ruby jruby
• C backend libraries Java backend libraries
• …
• gem jruby –S gem
• rake jruby –S rake
• rails jruby –S rails
Ruby on Rails => JRuby on Rails
adapter: mysqlmongrelRMagick…
adapter: jdbcmysqlmongrel-jrubyRMagick4J…
Both Rails and Java EE projects are running in the same Java AS?
Warbler
• Warbler is a gem that makes a .war file out of a Rails, Merb, or Rack-based application.
http://kenai.com/projects/warbler
Rails in Java AS
• Tomcat
• Jetty (jetty-rails)
• Glassfish v2 / v3 (gem)
• JBoss (JBoss-Rails)
• …
Rails in Java AS (cont.)
• Larger JVM Memory Size
• Server JVM
• Latest JDK
• Sun JDK / BEA JRockit ?
• Connection Pool
• Load-Balance
Showcase: Blog
• Getting Started with Railshttp://guides.rubyonrails.org/getting_started.html
• Step by Step jruby -S rails blogModify database settings jruby -S warble configModify config/warble.rb jruby -S warble warDeploy into Tomcat
Showcase: Blog (cont.)
Showcase: Monitor
• Tomcat Monitor Tools
PSI Probe (Lambda Probe)
Hyperic HQ
• VM Monitor Tools
JConsole
VisualVM
JRockit Mission Control
Showcase: Monitor (cont.)
Showcase: Monitor (cont.)
Showcase: Simple Tuning
• VM -Xmx768m -Xms768m -Xmn256m -XX:MaxPermSize=128m -
XX:PermSize=128m
• Tomcat Connector maxThreads="1024" minSpareThreads="32" maxSpareThreads="128"
enableLookups="false"
• JNDI Connection Pool
For my laptop only, not for production environment
Some parameters are set without measurement
Showcase: Simple Tuning (cont.)
Ubuntu 8.10, kernel 2.6.27-14-genericJDK 1.6.0 Update 10JRuby 1.3.1Apache Tomcat 6.0.20Mongrel 1.1.5
rails 2.2.2activerecord-jdbc-adapter 0.9.2jdbc-mysql 5.0.4warbler 0.9.14
18.561 12.367 6.748
185.817
106.742
64.735
0
20
40
60
80
100
120
140
160
180
200
Mongrel Tomcat Tomcat-Optimized
Time Taken For Tests (s)
Total n100 c10 Total n1000 c100
266
1784
2396
241
1202
1805
142
641786
0
500
1000
1500
2000
2500
Min Avg Max
ab -n 100 -c 10 (ms)
Mongrel Tomcat Tomcat-Optimized
Reference
• http://jruby.org
• http://rubyonrails.org/
• http://kenai.com/projects/jruby/
• Practical JRuby on Rails Web 2.0 Projects
• JRuby Cookbook
Q & A