Dr. Dobb's Journal - August 2008 - (Page 6) FRIDAY NIGHT FISH FRY by Jonathan Erickson Ruby Isn’t Just for Tuesday Anymore, or Big Doings with Little Languages WHEN IT COMES to web development, AJAX didn’t change everything—it just seems like it did. By delivering to users the responsiveness of native applications and providing developers with a better UI and standardized data retrieval, AJAX ushered in a more interactive and rich web experience. And in the spirit of imitation being the sincerest form of flattery, the word around the lunchtable at this year’s RailsConf conference—proving once again that software developers can talk and chew sandwiches at the same time—was that Microsoft will be rolling out a Ruby-based AJAX look-alike called “ARAX” (short for “Asynchronous Ruby and XML”) and the Python based “APAX” (short for “Asynchronous Python with XML” . With ARAX and APAX, developers who prefer Ruby or Python can build AJAX-like applications without having to deal with JavaScript. Of course, ARAX and APAX aren’t Microsoft’s first foray into the world of little dynamic languages that do things at runtime other languages do during compilation. IronRuby (www.ironruby.net) and IronPython (www.ironpython.net) are .NET implementations of Ruby and Python, respectively, that leverage Microsoft’s Dynamic Language Runtime (DLR), a subset of .NET’s Common Language Runtime (CLR) that provides shared language services, such as frameworks, libraries, and tool integration. However, the DLR adds features to the CLR that specifically address the needs of dynamic languages—a shared dynamic type system, a standard hosting model, support to generating fast dynamic code. In the process, dynamic languages like Ruby and Python (among others) can freely share code with each other, as well as with static languages like VB.NET and C#. IronRuby is designed for building server-based applications that run on top of ASP.NET or ASP.NET MVC, as well as building client applications that run on top of WPF or Silverlight. You can also run Ruby code inside your web browser and have it interact with Ruby code that’s on your web server. That’s pretty cool. Microsoft isn’t the only outfit fooling around with dynamic languages like Ruby. As it turns out, Yahoo! provides a Ruby interpreter in its BrowserPlus software (browserplus.yahoo.com). According to Yahoo!, BrowserPlus is “software that extends the capabilities of your web browser to make richer web experiences possible.” (Hmmm, sounds familiar.) “Different websites can use BrowserPlus to support things like drag and drop from the desktop, easier file uploads, more efficient and secure acquisition of feeds and information, and native desktop notifications…so that developers can build more exciting web applications and so endusers can get more done inside their web browser.” Actually, this does sound interesting. (And no, Microsoft couldn’t possibly have wanted Yahoo! for BrowserPluslike technology alone. No, no way…) Not to be outdone, Sun Microsystems is also in the dynamic language fray with its NetBeans Ruby plugins (wiki.netbeans.org/Ruby) that provide an IDE for building, running, testing, and debugging Ruby and Ruby on Rails applications. You can download a Rubyonly version of the NetBeans IDE 6.0 or add Ruby support to a NetBeans IDE 6.0 download. Of course, one place you’d expect to see Ruby pop up is in the world of web services—and you won’t be disappointed. Amazon Web Services (developer.amazonwebservices.com), for example, has embraced the language by supporting Ruby interfaces from RightScale to Amazon Web Services (AWS) such as Elastic Compute Cloud (EC2), Amazon Simple Storage Service (S3), and Amazon Simple Queue Service (SQS), among others. And then there’s Ruby/AWS (www.caliban.org/ruby/ruby-aws), a Ruby language library written by Ian Macdonald for access to Amazon sites via the AWS API. But little languages like Ruby, Python, Lua, REBOL, and others have things in common other than they’re dynamic. Almost all of them spring forth from the genius of a single individual (or two)—Ruby from Yukihiro Matsumoto, Python from Guido van Rossum, Lua from Roberto Ierusalimschy, Luiz Henrique de Figueiredo, and Waldemar Celes. And I’d bet that David Betz has cranked out a dynamic little language or two. Another thing these dynamic languages have in common is that their adoption by large organizations have been from the bottom-up, not top-down. For instance, it was Nokia developers—not management—who pushed Python into the official toolchain, while over at Microsoft, John Lam has almost single-handedly brought Ruby to Redmond. The bottom line is that it is people, not products, and individuals, not corporations, who are changing the face of software development. Give a smart person a little leeway, and you’ll be amazed at the Jonathan Erickson results. Editor-in-Chief jerickson@ddj.com 6 Dr. Dobb’s Journal l www.ddj.com l August 2008 Next Month: In September, we’ll examine the latest in Application Lifecycle Management. http://wiki.netbeans.org/Ruby http://developer.amazonwebservices.com http://developer.amazonwebservices.com http://www.ironruby.net http://www.ironpython.net http://www.caliban.org/ruby/ruby-aws http://browserplus.yahoo.com http://www.ddj.com
Table of Contents Feed for the Digital Edition of Dr. Dobb's Journal - August 2008 Dr. Dobb's Journal - August 2008 Contents Friday Night Fish Fry Alia Vox Developer Diaries Developer’s Notebook A Conversation with Christos Papadimitriou OpenGL and Mobile Devices: Round 2 Ellipse Specification Using Vectors Embed Custom GUIs in WPF Building RIAs on J2EE Foundations Disentangling Concepts in Object-Oriented Systems The Agile Edge Effective Concurrency Swaine’s Flames Dr. Dobb's Journal - August 2008 Dr. Dobb's Journal - August 2008 - Dr. Dobb's Journal - August 2008 (Page Cover1) Dr. Dobb's Journal - August 2008 - Dr. Dobb's Journal - August 2008 (Page Cover2) Dr. Dobb's Journal - August 2008 - Dr. Dobb's Journal - August 2008 (Page 1) Dr. Dobb's Journal - August 2008 - Dr. Dobb's Journal - August 2008 (Page 2) Dr. Dobb's Journal - August 2008 - Dr. Dobb's Journal - August 2008 (Page 3) Dr. Dobb's Journal - August 2008 - Contents (Page 4) Dr. Dobb's Journal - August 2008 - Contents (Page 5) Dr. Dobb's Journal - August 2008 - Friday Night Fish Fry (Page 6) Dr. Dobb's Journal - August 2008 - Friday Night Fish Fry (Page 7) Dr. Dobb's Journal - August 2008 - Friday Night Fish Fry (Page 8) Dr. Dobb's Journal - August 2008 - Friday Night Fish Fry (Page 9) Dr. Dobb's Journal - August 2008 - Alia Vox (Page 10) Dr. Dobb's Journal - August 2008 - Alia Vox (Page 11) Dr. Dobb's Journal - August 2008 - Developer Diaries (Page 12) Dr. Dobb's Journal - August 2008 - Developer Diaries (Page 13) Dr. Dobb's Journal - August 2008 - Developer’s Notebook (Page 14) Dr. Dobb's Journal - August 2008 - Developer’s Notebook (Page 15) Dr. Dobb's Journal - August 2008 - A Conversation with Christos Papadimitriou (Page 16) Dr. Dobb's Journal - August 2008 - A Conversation with Christos Papadimitriou (Page 17) Dr. Dobb's Journal - August 2008 - A Conversation with Christos Papadimitriou (Page 18) Dr. Dobb's Journal - August 2008 - A Conversation with Christos Papadimitriou (Page 19) Dr. Dobb's Journal - August 2008 - OpenGL and Mobile Devices: Round 2 (Page 20) Dr. Dobb's Journal - August 2008 - OpenGL and Mobile Devices: Round 2 (Page 21) Dr. Dobb's Journal - August 2008 - OpenGL and Mobile Devices: Round 2 (Page 22) Dr. Dobb's Journal - August 2008 - OpenGL and Mobile Devices: Round 2 (Page 23) Dr. Dobb's Journal - August 2008 - OpenGL and Mobile Devices: Round 2 (Page 24) Dr. Dobb's Journal - August 2008 - OpenGL and Mobile Devices: Round 2 (Page 25) Dr. Dobb's Journal - August 2008 - OpenGL and Mobile Devices: Round 2 (Page 26) Dr. Dobb's Journal - August 2008 - OpenGL and Mobile Devices: Round 2 (Page 27) Dr. Dobb's Journal - August 2008 - OpenGL and Mobile Devices: Round 2 (Page 28) Dr. Dobb's Journal - August 2008 - OpenGL and Mobile Devices: Round 2 (Page 29) Dr. Dobb's Journal - August 2008 - Ellipse Specification Using Vectors (Page 30) Dr. Dobb's Journal - August 2008 - Ellipse Specification Using Vectors (Page 31) Dr. Dobb's Journal - August 2008 - Ellipse Specification Using Vectors (Page 32) Dr. Dobb's Journal - August 2008 - Ellipse Specification Using Vectors (Page 33) Dr. Dobb's Journal - August 2008 - Ellipse Specification Using Vectors (Page 34) Dr. Dobb's Journal - August 2008 - Ellipse Specification Using Vectors (Page 35) Dr. Dobb's Journal - August 2008 - Embed Custom GUIs in WPF (Page 36) Dr. Dobb's Journal - August 2008 - Embed Custom GUIs in WPF (Page 37) Dr. Dobb's Journal - August 2008 - Embed Custom GUIs in WPF (Page 38) Dr. Dobb's Journal - August 2008 - Embed Custom GUIs in WPF (Page 39) Dr. Dobb's Journal - August 2008 - Building RIAs on J2EE Foundations (Page 40) Dr. Dobb's Journal - August 2008 - Building RIAs on J2EE Foundations (Page 41) Dr. Dobb's Journal - August 2008 - Building RIAs on J2EE Foundations (Page 42) Dr. Dobb's Journal - August 2008 - Building RIAs on J2EE Foundations (Page 43) Dr. Dobb's Journal - August 2008 - Building RIAs on J2EE Foundations (Page 44) Dr. Dobb's Journal - August 2008 - Building RIAs on J2EE Foundations (Page 45) Dr. Dobb's Journal - August 2008 - Disentangling Concepts in Object-Oriented Systems (Page 46) Dr. Dobb's Journal - August 2008 - Disentangling Concepts in Object-Oriented Systems (Page 47) Dr. Dobb's Journal - August 2008 - Disentangling Concepts in Object-Oriented Systems (Page 48) Dr. Dobb's Journal - August 2008 - Disentangling Concepts in Object-Oriented Systems (Page 49) Dr. Dobb's Journal - August 2008 - The Agile Edge (Page 50) Dr. Dobb's Journal - August 2008 - The Agile Edge (Page 51) Dr. Dobb's Journal - August 2008 - The Agile Edge (Page 52) Dr. Dobb's Journal - August 2008 - Effective Concurrency (Page 53) Dr. Dobb's Journal - August 2008 - Effective Concurrency (Page 54) Dr. Dobb's Journal - August 2008 - Effective Concurrency (Page 55) Dr. Dobb's Journal - August 2008 - Swaine’s Flames (Page 56) Dr. Dobb's Journal - August 2008 - Swaine’s Flames (Page Cover3) Dr. Dobb's Journal - August 2008 - Swaine’s Flames (Page Cover4)
For optimal viewing of this digital publication, please enable JavaScript and then refresh the page. If you would like to try to load the digital publication without using Flash Player detection, please click here.