Sponsored Link •
The need for a "Conference 2.0" format and a collection of JRuby notes.
My new hotel is nice, but the eatery around the corner isn't (sigh). So I'm convalescing today after a rough night. But here's what I got from the first official day of JavaOne 2008.
After nearly half a week at the conference (even though it is only "day one", it's the same old story: Sessions I'm interested in that are scheduled at the same, interspersed with long stretches of time where there is nothing much of interest.
Not that I should complain too much about that. As a blogger, the down time gives me time to file my stories and recharge the batteries in my laptop. But I know I'm not getting as much out of conference as I could be getting.
At the same time, I'm getting a lot of exercise as I walk from one end of the venue to the next for one session, only to walk all the way back for the next. (Again, I shouldn't complain. I can use the exercise. But I'm not about to let a little thing like that stop me!)
It seems to me that it's time for a "Conference 2.0" format. After all, Web 2.0 is all about customizing your web experience. Why not have the same thing for the conference?
Right now, there is an online schedule-builder that lets you select the sessions you want to go to and then print out your itinerary. That's terrific. But let's take things one step further. How about a system where you go the web site and select /all/ the things you're interested in (maybe with priorities of 1, 2 and 3 for things you're highly interested in, somewhat interested in, and "possibly" interested in.
A week before the conference, the numbers from all the attendees could be crunched--maybe by one of those massively parallel machines that Sun builds, and a schedule could be created that minimizes both scheduling conflicts and distance between sessions!
After all, I really don't care whether a session I want to go is at 10 in the morning or 3 in the afternoon. I just need to know where to go and when to be there when I show up.
We do have the technology, after all. Wouldn't that be cool?
Interesting stuff from multiple sessions.
From a panel on JRuby introduced by Tim Bray and moderated by Mark Driver, including Tom Enebo, David Koontz, Rich Manalang, Sarah Mei, and Charles Nutter:
- Rails is the killer app for JRuby right now, given its ability to scale. The JVM provides native threads, performance optimizations, and the results of years of effort that have gone into debugging and optimizing garbage collection so that things "just work", for the most part--and they work pretty much the same no matter what platform you're running on.
- There is even a Glassfish gem for JRuby. Glassfish is a server for Java apps that JRuby can take advantage of, and the gem makes it easy to install and use. So the JRuby community may begin moving away from Mongrel (the Ruby standard for scaling a Rails app).
- But the next wave of killer apps may well come from metaprogramming Rubyists who provide easy-to-use languages that wrap Java's extensive libraries. Those libraries provide a ton of raw power. Ruby provides a way to make the simple things really and truly simple.
- Many good Ruby libraries are platform-specific, which fragments the programming space, but the JVM is a unifying framework. For example, Swing is a cross-platform library that mostly just works. It has no real equivalent in the Ruby world. A Ruby DSL that wraps it can create new syntax and have huge potential. Similarly for other libraries.
- In fact, there are already several Swing-library wrappers for JRuby, including Cheri, Profligacy, and MonkeyBars.
- Ruby also makes a great way to try out a Java library and see how it works. There's no setup work to do. You just call into it.
Some differences between Ruby and Java:
- Ruby is more flexible and easier to write, but that can make it harder to maintain. But when you consider that Java is, in effect, providing the platform that JRuby runs on--one that manages the threads, does the garbage collection, and various I/O channels-- then Java makes sense for that. You want the platform to be robust and solid. But you want your development language to be elegant let you do more with less work--which equates to having more fun.
- Deployment is more of a problem with Ruby. The process is not as well worked out as it has been in Java land.
- Ruby tools are generally not as mature as those for Java. And Java's strict types genrally let the tools do more for you. (But NetBeans is doing such a good job in that area that developers are leaving their text editors.)
- The test-first mantra is part of Ruby culture, because you can write your test and watch it fail before creating any of the source code to make it succeed. In Java, you can't even compile your test until the interfaces and classes have been constructed. So while the idea of test-first coding is admired, it doesn't tend to happen as much in Java.
From the Charlie Nutter and Tom Enebo's JRuby session:
- The "Processing" library lets you do lots of pretty graphics in few lines of code. One demo showed glowing globes sailing around the screen, moving away from another and then flocking together. The whole thing took 800 lines of code.
- Ruby on Rails books are are outselling Perl books, these days.
- In Rails, there tends to be less code in the whole app than there are in the configuration files for a Java server app.
- The ActiveResource library in Rails takes care of exposing them in a RESTful way (i.e. using http protocols for get, put, etc.)
- The ActiveSupport library has become indispensible for Rails developers. It provides Unicode, json (property-style data marshalling), and a variety of helpers.
From a JRuby on Rails lab:
- Prototype transmit XML to and from the server. A Rails form will look the same, but the client is doing more locally.
- Script.aculo.us creates nice effects with minimal code. For example, giving a pale yellow background to a whole block of text is as simple as specifying ":highlight".
Have an opinion? Be the first to post a comment about this weblog entry.
|Eric Armstrong has been programming and writing professionally since before there were personal computers. His production experience includes artificial intelligence (AI) programs, system libraries, real-time programs, and business applications in a variety of languages. He works as a writer and software consultant in the San Francisco Bay Area. He wrote The JBuilder2 Bible and authored the Java/XML programming tutorial available at http://java.sun.com. Eric is also involved in efforts to design knowledge-based collaboration systems.