Wednesday afternoon, JavaPolis really got into gear for me. I saw short ‘quicky’ sessions on Unitils (don’t like the name but some of the features (assertion through reflection!) could be very useful to me, as I’m writing tests on a daily basis) and Strecks (Struts extensions that can easily be used in an existing Struts environment–all the more pity it requires Java 5; won’t most existing Struts-based applications still be using Java 1.4, like the project I’m on right now?).
Next, I did a lab on NetBeans and Matisse, the NetBeans gui design tool. It really brought back memories of my Delphi days. I must say, NetBeans feels slick and fast and stable. Add to that the Ruby support that Tor Norbye is working on, and this might well become my next IDE of choice. We got a small sample of that in Charles’ and Tom’s conference session on JRuby, which was next. Charles showed things like usage highlighting and local rename. It might not be spectacular for a crowd of Java-with-(probably mostly)-Eclipse coders, but you’ve gotta start somewhere! (But on the other hand, Eclipse so often gets it ‘just right’–like in 3.3, the local rename got enhanced to operate locally within inner loops; such a small thing but something that happens often enough).
By the way, if the JavaPolis team is listening: those labs could do with some more publicity. Only four people out of 2800+ showed up. Maybe because the labs are somewhere in the back of the conference guide; I just found out myself a few minutes before it started. Maybe because the location is a very dark corner of MetroPolis. Worse, there was a loudspeaker directly above the lab location, blurting out advertising for MetroPolis at a very high volume (every 2 minutes Eddy Murphy shouting “Show me the candy!”, argh!).
I liked Brian Goetz’ session last year, and this year he was just as enthusiastic, showing us the reality about some Java performance myths. I know now that object allocation is normally not slow, and synchronization isn’t always slow either. Best myth however was “Clever code is faster code”. It turns out that, in normal situations, the best performing code is cleanly written code, following standard guidelines. Java is not a one-liner language.
It had already been a long day when we sat down for Geert Bevin’s session on continuations–in Java. This is definitely a fascinating concept; for using it in web applications however, it just might be too different from the way we ‘normally’ do things. It requires nothing less then a paradigm shift in web app development. More info on continuations can be found on the RIFE site.
Another unexpected program change at JavaPolis brought us Oracle’s Omar Tazi (director of SOA evangelism and Chief open source evangelist) instead of Marc Fleury in Wednesday’s keynote session.
Unfortunately, a school example of how not to do a presentation. We got an hour-long talk of Omar clicking away on his laptop, showing All-New Oracle product after product, one enterprisey acronym after the other, all the while complaining about how little time he had left for his presentation (actually counting down the minutes). At the same time it’s sad to see the Web 2.0 revolution being enterprisified by companies like Oracle–and in name only, because the JSF+Ajax screens filled with components stacked from top to bottom, are all but what Web 2.0 has been about. Then again, knowing Oracle, I’ve probably been watching a demo of Web 2.0.13.10…
The Sun keynote provided more fun, even though I had already seen most of it at this year’s NLJUG JFall session: Simon Ritter’s Sun SPOT robot cars chasing eachother, and Angela Calceido’s cyberglove directing the mouse pointer in LookingGlass. We also saw a short promotion video with Richard Stallman giving praise to Sun’s open source move (he’s getting old… I thought heroes weren’t supposed to grow old…).
But before all that, Stephan Jansen started off with the usual JavaPolis introduction. Over 2800 attendants this year from all over the world, making the venue, MetroPolis, almost too small. There have been lots of small improvements this year; more food and free wifi being the most basic ones. Too bad that the free wifi and the dns server behind it are very hard to connect to. But what’s really a shame is that the speakers aren’t provided with a guaranteed working connection; several demos had to be cancelled because of that.
After the keynote we went downhill again, with a session on Apache Tuscany by a very (very) nervous Andrew Borley, poor guy. Sheet after sheet filled to the brim with bullets and text that was being read outloud almost literally. The technology itself is really interesting from a SOA point of view (an open source implementation of Service Component Architecture and Service Data Objects, supporting components written in any language like Ruby or Java, interoperable via SOAP or REST)–but really it hardly comes across this way. I’ll visit the website instead.
I’m being urged to choose sides. Colleagues say I should specialize in either frontend or backend development. I’ve never liked to commit to any specialization. Partly because I’ve always admired the renaissance ideal of the uomo universale who knows and does it all. But also because, when I started out my career, 20 years ago, jobs were a lot scarcer then nowadays, so you couldn’t be all too picky about which job you wanted to do. Specialization is nice until the market changes and you find yourself out of a job because you happened to choose the wrong side.
All this might explain why I enjoyed a full day of Swing yesterday at JavaPolis, even though my day job is now exclusively about backend domain design and coding (and I love it, I love being in the silend, cold spelonks that the domain is, where everything perfectly fits, everything is under tight control with unit tests, and the evil outside world of user interfacing is far far away).
To be honest, the alternatives didn’t appeal to me either. A session on POJO programming–who on earth can talk about plain old POJOs for three whole hours? Or what about a Spring 2 session? Never mind, I’ll read the release notes. Now Swing, that’s something you want to see live. Not that there were many flashy demos though; just a very cool mashup that allows you to map your holiday snapshots to a route you can draw yourself on a Google map. Most of the time was filled with new Java SE 6 features, tips & tricks, a useful tutorial on Java Web Start, and an interesting but theoretical presentation on humane user interfaces (by Romain Guy).
Those new SE 6 features, they’re nice enough, sure; but it made me think back to my Delphi days, about 10 years ago, when we already had things like date pickers and hyperlinkable labels. In a way, it’s really the same as with all the fancy Ajax stuff. We’re all so excited about a web page that can behave like a desktop application; but if we’re actually developing a desktop application, then why bother with web pages when we could have made life easier and used Swing instead?
When expectations are high, you’re invariably up for some disappointment. Charles and Tom were unable to demo Rails-in-a-war-on-Glassfish; but at least they gave a warning in advance. But I definitely expected something more–or rather something else–from Eric Evans’ university session on domain-driven design (ddd).
The afternoon session on scripting languages went well enough anyway–or at least, the JRuby part did. The session took off with a theoretical explanation of JSR-2something (the support for scripting languages in Java SE). After that, Charles and Tom got their chance to warm up the Java-minded public for all goodness of Ruby. It took a little while for them to get comfortable, but then Tom was at the keyboard showing the simplicity of building a small Rails app from scratch; and Charles got the flow of the presentation going, explaining what Tom was doing and going into JRuby details. The hour flew by for most of the audience. When I got back after the half our break, Charles and Tom were still answering questions.
Charles and Tom showing some well-known faces
Now you have to believe me, in the 90 minutes of Groovy that followed, I did keep an open mind. I tried to look at the code samples objectively. I tried to admire the work that has gone into creating a dynamic variant of Java. I really tried hard to imagine a scenario where I would be tempted to remotely consider using Groovy in a real-world app. Okay, and I was also just a little bit busy trying to get my laptop to talk to the JavaPolis wireless network, which wasn’t easy either. But at least that one I finally succeeded at. The Groovy thing–I’m afraid it’s not for me. It gives me the worst of both worlds: no sweet Ruby syntax, and on top of that uglified Java syntax as well. Maybe next time I’ll see the light. I promise to keep an open mind.
The thing that most disappointed me however, was Eric Evans’ morning session on domain-driven design. Not that it was a bad presentation, not at all. Maybe it’s all about expectations. I expected an introduction into ddd. What is it, what’s so great about it, why should we use it, what lessons have been learned, what tips can a ddd guru give us? Instead we got a session about domain modeling: how do we get from use case to domain model. And also, if we have multiple models within our application/organization, what patterns can we discern regarding the interfacing between those models and the teams that design them? Interesting enough, no problem there; but what does this have to do with ddd? Domain modeling like this can well be done without any domain-drivenness. Or can it? I’ll know more in a week or two, when Evans’ book that I ordered will arrive.
Just arrived in Antwerp, Belgium, for the JavaPolis 2006 conference which starts tomorrow morning. Same venue (Metropolis, where I stopped on the way to pick up this year’s goodies bag), same hotel (Astrid–yeah I know it has a tacky name but it’s really not that cheap). Fortunately, the state of Antwerp’s wireless networking has advanced in a year’s time; I now have free wifi in my hotel room as well as at the JavaPolis venue. Allowing me to write this short blog entry.
And so I won’t be accused of blogging just for the sake of it, just because I can blog, I will list the university sessions that I’ll be attending tomorrow.
- First off is Eric Evans, talking about domain-driven design. This promises to be not only a theoretical introduction to the subject, but also an interactive domain modeling session. I’ve been looking forward to hear more about ddd since visiting Sogyo’s evening session two weeks ago. Especially as that session has left me confused whether Rails might be seen as a domain-driven development framework. I’m still not convinced; maybe tomorrow’s session will bring some clarification–and new arguments!
- In the afternoon, I’ll be at room 4 for the Dynamic Languages session. More in particular, for the JRuby part of that one. Originally, this session was scheduled as an all-JRuby university session; but somehow, the Groovy guys have managed to squeeze their way in as well. I really don’t see the point of Groovy, other than proving that Java can be as cool as Ruby if only we mutilate the language enough and make it dynamic. I promise I’ll keep an open mind during their session tomorrow, though I don’t think I’ll be able to take in anything after seeing Charles and Tom perform the miracle of Rails-in-a-war-on-Glassfish.
The all new JavaPolis 2006 bag