{"id":679,"date":"2008-06-21T16:31:54","date_gmt":"2008-06-21T21:31:54","guid":{"rendered":"http:\/\/blogs.law.harvard.edu\/hoanga\/2008\/06\/21\/rubykaigi-2008-day-1-part-2-notes\/"},"modified":"2008-06-21T16:31:54","modified_gmt":"2008-06-21T21:31:54","slug":"rubykaigi-2008-day-1-part-2-notes","status":"publish","type":"post","link":"https:\/\/archive.blogs.harvard.edu\/hoanga\/2008\/06\/21\/rubykaigi-2008-day-1-part-2-notes\/","title":{"rendered":"RubyKaigi 2008 Day 1 Part 2 Notes"},"content":{"rendered":"<p>Here&#8217;s a continuation of my scribbled notes from the RubyKaigi.  This one from the JRuby implementors.  Some of my own thoughts and comments are inserted in parentheses.<\/p>\n<h3>Charles Nutter on JRuby<\/h3>\n<ul>\n<li>Quick intro and the impressive live demos of JRuby in action (or as the IRC channel said Nice Live Coding (NLC))<\/li>\n<li>This summer, work on Ruby 1.9 features (seems there&#8217;s an option flag to turn on 1.9 compatibility mode already)<\/li>\n<li>Current 1.1.3 Progress Report<\/li>\n<ul>\n<li>A new interpreter that is up to 30% faster<\/li>\n<li>Compile-time performance enhancements<\/li>\n<li>Many Rails Bottlenecks fixed<\/li>\n<\/ul>\n<li>No new release of JRuby this year but&#8230;<\/li>\n<li>Wanted to show some uses of JRuby<\/li>\n<ul>\n<li>IDEs (NetBeans, Eclipse, INtelliJ use JRuby in their IDEs<\/li>\n<li>Swing GUI development<\/li>\n<ul>\n<li>Swing development can be very complex but Ruby helps to simplify it<\/li>\n<li>Benefits from the &#8216;Write once, Run everywhere&#8217;<\/li>\n<li>There are a plethora of options to choose from (why does this seem to happen in the Java world all the time?)<\/li>\n<ul>\n<li>Cheri<\/li>\n<li>Profligacy (by the infamous Rails Ghetto-man Zed Shaw)<\/li>\n<li>MonkeyBars (Proceeded to show an impressive demo)<\/li>\n<ul>\n<li>MonkeyBars leverages existing GUI utils (that&#8217;s a major plus)<\/li>\n<li>MVC-like structure (hey looks like Rails&#8230;)<\/li>\n<\/ul>\n<\/ul>\n<\/ul>\n<li>Graphics (Showed some really sweet demos of ruby-processing in action)<\/li>\n<ul>\n<li>Processing had a way to interface to audio input devices<\/li>\n<li>Remember to check out &#8220;A Face for Stephen Hawking&#8221;.  Wow that code looked really clean&#8230;<\/li>\n<\/ul>\n<li>Rails (the benchmark app that all implementors need to measure implementation readiness by)<\/li>\n<ul>\n<li>There has been a shift in Java Web frameworks lately (but still happening at a glacial pace)<\/li>\n<li>Deployment problem is &#8220;solved&#8221; (I keep hearing this&#8230;)<\/li>\n<li>mongrel is &#8220;old school&#8221; (at least for JRuby-based deployments)<\/li>\n<li>Made mention of Phusion\/Passenger but it still had the issue of rails process spawning and how to manage that (Seems Jruby doesn&#8217;t have these issues)<\/li>\n<li>Some war deployment demoes<\/li>\n<ul>\n<li>A warbler demo (A tool to help create war files)<\/li>\n<li>Will package in Jruby automagically into the war (That&#8217;s very nice)<\/li>\n<li>Just run warble inside the rails application directory (Hopefully it doesn&#8217;t package up a gigantic development.log)<\/li>\n<li>As simple as <em>GLASSFISH_HOME\/bin\/asadmin deploy *.war<\/em><\/li>\n<li>Has Rack supoprt (can handle Merb and anything else with Rack support<\/li>\n<li>Can be configurable<\/li>\n<li>From his demo, it seems that warble will make a war of anything (aka be careful what directory you run this command)<\/li>\n<\/ul>\n<li>Showed some really nice benchmarks of rails and JRuby (I need to put this through the ringer when I get more time)<\/li>\n<li>Showed another deployment tool called the glassfish gem<\/li>\n<ul>\n<li>3MB gem that had everything needed for JRuby on Rails<\/li>\n<li>Tries to match the agile process<\/li>\n<\/ul>\n<\/ul>\n<li>JRuby Users (in production): CSI&#8217;s Disease Surveillance, Oracle&#8217;s Mix website, Sun&#8217;s Media Cast, Thoughtworks Mingle<\/li>\n<\/ul>\n<\/ul>\n<h4>Q &amp; A<\/h4>\n<ul>\n<li>Q: The Parser Implementation seems hard.  Any war stories<\/li>\n<li>A: I hate parsers and refuse to write one.  Someone wrote something that used J.  I don&#8217;t know much about it but Tom&#8217;s pains dealing with it seem very hard.  No plans to change parsers anytime in the near future.<\/li>\n<li>Q: Object Space &amp; Binding<\/li>\n<li>A: On Jruby, this will incur an automatic performance penalty.  binding &amp; caller will be required each time which incurs a heavy cost<\/li>\n<li>Q: Non-local break performance?<\/li>\n<li>A: Implemented as a Java Exception.  By doing this, the JVM can optimize that as a Jump.  JRuby tries to use this as much as possible behind the scenes for performance<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Here&#8217;s a continuation of my scribbled notes from the RubyKaigi. This one from the JRuby implementors. Some of my own thoughts and comments are inserted in parentheses. Charles Nutter on JRuby Quick intro and the impressive live demos of JRuby in action (or as the IRC channel said Nice Live Coding (NLC)) This summer, work [&hellip;]<\/p>\n","protected":false},"author":703,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1101,1029,972,615],"tags":[],"class_list":["post-679","post","type-post","status-publish","format-standard","hentry","category-geek","category-open-source","category-programming","category-ruby"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/posts\/679","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/users\/703"}],"replies":[{"embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/comments?post=679"}],"version-history":[{"count":0,"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/posts\/679\/revisions"}],"wp:attachment":[{"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/media?parent=679"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/categories?post=679"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/tags?post=679"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}