Here are the highlights of the Spring One America conference this year. There was a lot going on and wished I could somehow go to all the sessions but my focus was OSGi (SpringSource dm server, Spring DM), Spring Batch, Grails and some RIA technology.
Grails is one of those white hot technologies and there’s a lot of interest in it. What Groovy?! Isn’t this a Spring conference?
Grails is now part of the Spring family and it makes perfect sense since Grails is built using Spring and Spring Web components. When you start up Grails you see the familiar Spring context loading info in the console.
At the Grails session, Graeme Rocher demo’ed Grails by building a Twitter clone in 40 minutes. It was a pleasure to watch. There are about 80 plug-ins for Grails including Spring Security (Acegi), GORM (an abstraction on Hibernate). If you need a security framework and some quick pages, install the Acegi plugin and you have your login page together with the security related beans to work with. All this is possible because all existing technologies and libraries in Java are also available to Groovy.
During a keynote session, Adrian Colyer also demonstrated creating a front end using Grails and then integrating it with a previously created Spring application context. The possibilities are very exciting since one can continue to work with Spring services in Java aand take advantage of the speed of creating pages in Grails. Furthermore you could also use Grails to generate a WAR artifact to deployed to your favourite web container since Groovy compiles to Java class artifacts.
Only a few weeks ago I was moaning about how long it takes to build a decent page with my current stack. Definitely checking this out when I get back.
But the biggest thing I got out of this was the philosophy Convention with sensible defaults over Configuration . Grails is able to do a lot because it relies very heavily on convention. Food for thought.
SpringSource tc Server
Rod Johnson announced SpringSource tc server in his keynote address – tc is short for Tomcat. Rod showed stats that claim Tomcat is the most popular web container; WebSphere actually comes in a distant second. Given the growing adoption of Spring and the corresponding rejection of the EJB object model, there will be even less reason to deploy to a J2EE container. Apparently, Tomcat is also now speedier than Jetty, its start up time is in milliseconds and it has a tiny footprint.
SpringSource added management capabilities to tc server using their AOP and AMS API and it looked sleek. Because SpringSource is one of the biggest committers to Tomcat and with their recent acquisition of Covalent, they can provide top class support for tc server. This should make tomcat an easier sell to IT departments.
SpringSource dm Server and Spring Dynamic Modules (Spring DM)
dm Server is another really hot technology. It is not as flashy as Grails but has a very different kind of appeal. Built from the ground up on Eclipse Equinox, it natively understands bundles and not surprisingly, SpringSource infrastructure bundles are themselves bundles. The OSGi issues are complex but SpringSource Tool Suite makes it very straight forward to define bundles and deploy them to the server. The import and export of services are transparent to the application code and all you really need to do is to declare the dependencies.
All this magic is available with Spring DM even if you don’t want to use dm server and the same application code can be deployed to any OSGi runtime with minimal additional declarations.
But what is exciting about the bundles and SpringSource Tool Suite is real modules. Services and types are only visible outside the bundle only if they are exported. No more setting up packages and projects and then ensure architecture integrity through constant vigilance and a little prayer. Modules provide a very clean line even in deployment.
Case study on Spring dm Server
It was eye opening to see the kind of design techniques the dm Server team applied in building this very complex system. The dm Server team used formal methods to model the bunlde states using ‘Z’ and using CSP, they modeled some of the concurrency behaviour. The idea of proving the model works using mathematics is extremely seductive. However, they would only apply this type of analysis judiciously and only if the model is particularly difficult to understand.
The simplest thing that works
Rob Harrop made a comment about generalizations on design and in particular he has an issue with the Agile adage “Doing the simplest thing that works”. The problem with this approach is that you tend to repeat the same mistakes and effectively ignores the collective knowledge and experience. He believes that it is always more effective to do your design and model, it often improves the speed of implementation and the code easier to understand.
This comment really struck me since there’s quite a bit of conversation about this very topic in our practice.
I don’t have pictures of mountains or the Golden Gate bridge but here’s one from my hotel room balcony as I was writing. It’s 21C in December. I’m sitting on my balcony writing this report while enjoying the view of the Atlantic Ocean and accompanied by nothing but the sound of ocean waves. If only I can telecommute…
More report to follow later …