Fork me on GitHub

Thank you for visiting this blog. If you like what you read here, you can follow my new blog at www.nilswloka.com and read about my reasons for this "rebranding" here.

Live from SpringOne 2008 - Keynote

Posted on 06/11/08.

After having won the battle against Antwerp rush hour traffic, I arrived just in time for this year's SpringOne keynote. Considering the momentum the Spring Framework has gained since my last attendance in 2006, I shouldn't have been surprised by the sheer number of people who were already swarming the Metropolis cinema complex. As Stephan just told us, some 400 people from 25 countries have registered. But back to what's happening on screen right now: Stephan just finished his introductory talk, which he mainly spent showing all the shiney features of Parleys, with the announcement that due to trademark issue, Javapolis will officially be renamed to Javoxx and handed off the microphone to Rod. Rod's just promised that the keynote he's about to hold is going to address technical people and presented statistics which showed that recently Spring overtook EJB as requirement on the US job market. Also, Gartner and Forrester seem to be convinced that Spring is going to be the key framework for developing enterprise Java applications and middleware services. A point that Rod doesn't get tired to emphasise is that Spring is about choice. One important step into that direction was the comprehensive support for annotation-based configuration in Spring 2.5. Even while the syntax is new, using @Autowired and @Qualifier is equivalent to the autowiring by type and by name that has always been part of Spring's configuration options. What's new is the possibility to define own qualifier annotations by annotating them with @Qualifier, as shown on the example below.

@Qualifier 
@Component 
@interface Apac { 
    // Implementation omitted 
}
  
@Apac 
public class SomeLocalizedService implements SomeService { 
    // Implementation omitted 
}
  
  
public class SomeConsumer {
  
    @Apac SomeService someService; 
  
    // Implementation omitted 
}

The framework will associate the custom annotations and use them to chose the proper instance instance for injection. This leads to using Spring annotations as "meta-annotations" (a term just coined by Rod) to build own sets of domain-specific annotations that turn classes they are applied to to Spring-managed components. Combined with the classpath scanning functionality included in Spring 2.5, you could - if you really wanted to - avoid writing any XML configuration at all.

As the keynote progresses, Rod's stressing that one of the most important freebies you get when using Spring is the ability to secure your application by means of Spring Security (formerly Acegi Security). As we all happen to know by now, every time you used Acegi, a fairy died. The configuration was just horrible (someone compared it to strangling a dragon with bare hands, though I seem to have lost the link; speak up if its you) as it basically boiled down to writing bean definition for all the Acegi low level components. Spring Security comes with a custom namespace that (almost) solves this problem. Personally I still find it daunting, but I also think that the domain it applies to is important enough to use it nevertheless.

One thing Rod seems to be surprised of - and I'm with him there - is that almost no one in the audience uses the Spring integration testing framework provided by means of Spring TestContext. For those of you not attending SpringOne, I'm gladly relaying his invitation to give it a try and donate the money you save by doing so (to him, but that's just an implementation detail you're free to change). I gave an example of how to use it for test-driven development in a recent post.

Spring Integration is another new addition to the Spring Framework family. Considering that Spring has always been a strong integration platform, being able to use it as quasi service bus with a domain specific configuration language implementing Gregor Hohpe's EAI patterns seems pretty convenient. I'm going to blog about this in detail in the near future, so I will not dig into the details here.

If you have used Spring MVC in Spring 2.0, you should also have a look at the new features introduced with the 2.5 release. I have written about it before, but I think the new "convention over configuration" mentality introduced here - especially with the advent of @Controller - is worth noting again. Things have become a lot easier and, combined with the new Spring Web Flow release, development web applications with Java might even become fun (well, in the broader sense). Some of the highlights of both frameworks, namely the aforementioned @Controller annotation, SWF's Ajax features, Spring JavaScript (which is, according to Keith, who just took over the microphone, is "a toolkit for progressively enhancing web pages with AJAX" built on DOJO and Spring Faces (which basically makes JSF as component framework available within Spring Web Flow driven applications and could be considered a JSF integration layer) found their way into the keynote.

With Rod back at the microphone, the topic now is deployment models and runtimes for Spring based application. He stresses that developing with the Spring programming models in fact decouples your code from the runtime environment, as Spring as container works in all deployment models available today (JEE, Servlet, OSGi, etc.). While portability on this level doesn't seem like an issue, there's the ongoing trend of deploying to to lightweight servlet containers like Tomcat and Jetty instead of commercial JEE containers. Whether or not OSGi will be the next generation enterprise runtime is yet to be determined, nevertheless the announcement of SpringSource Application Platform (I blogged about it here) last month seems to be an indicator for it's relevance. Rob, Application Platform lead, just entered the stage with an awesome S2AP t-shirt (100% bloat-free); if I am able to get one of those, I'll post a picture here.

Rod's talking about the SpringSource Enterprise subscription now, which, besides official support (including indemnification), grants access to the SpringSource Tool Suite, an Eclipse-based integrated development environment for Spring-based applications. As of the latest developer release, the Tool Suite comes with support for the PAR deployment style introduced with S2AP. Even while I'm not that much of an Eclipse person, I will try to give you an overview of what's being presented here. I also have to mention the incredible pace at which Christian, Spring IDE and STS lead, keeps up with the rapidly expanding and changing Spring stack. One interesting feature seems to be what Christian is calling "runtime error analysis", which allows you to automatically look up stack traces in a knowledge base to find likely solutions to your programming problems. Actually STS incorporates a lot of what I'd call community features like forum access, recent news, etc. If you hate media disruptions as I do, this might be a good thing for you. Christian stresses that, due to the comprehensive context sensitive hints and the comprehensive knowledge about Spring best practices built into it, the Tool Suite can be used as a consulting and teaching platform for Spring based projects. The subscription also lets you use the SpringSource Application Management Suite, which is a runtime monitoring platform for Spring applications with support for all major JEE containers as well as Tomcat. I leave it up to you to look up the details of this and the other SpringSource enterprise products (fingers are already hurting) and write about SpringSource's goals and motivations as presented by Rod at this moment.

Interesting enough Peter Cooper-Ellis, former WebLogic Unit Excutive, has just been hired by SpringSource for Engineering and Product Management. He's right now talking about his background with proprietary software and how the the whole industry is moving towards deployment scenarios like cloud computing. One of his roles at SpringSource seems to be to help the Spring framework meet the demands those trends will make on the next generation's application frameworks.

Well, I think that's about it for now. I'll keep you posted about any ground-breaking news, so make sure to subscribe to the feed.

blog comments powered by Disqus