Saturday, December 15, 2007

The Spring Experience 2007: Day 2

While day 1 was more of an integration day for me, day 2 was more varied. There weren't any specific session that I felt I had to attend, which gave me more freedom to cherry pick different topics.

First I attended the AspectJ for Spring Developers session with Ramnivas Laddad giving a very good overview of AOP support, in particular AspectJ, for the Spring platform. Having played with proxy based Spring AOP and a little bit of the new AspectJ XML configuration syntax it was interesting to see what all the options for AOP are. What thing that is recurrent in the configuration side of Spring is how Spring projects support both annotation based configuration and XML configuration (with usually new DSL type schemas). Being stuck on 1.4 on the server in our current production environment, annotation based configuration isn't really an option for us. Beside some of it's limitations like class bound as opposed to instance bound isn't appealing to me. However in the case of AspectJ annotations it makes perfect sence. Aspects can be written as Java classes with @Aspect annotations without the need for AspectJ Java language syntax (and therefore no custom compilers). Ramnivas also covered the various load time weaving options available, eg via the use of a javaagent option in the vm or via XML configuration for the environment where the use of a vm option isn't an option.

The second session I attended was not really Spring specific. Called Practical Enterprise Concurrency, by Rob Harrop, it covered tips and trick to write safe/performant code in a multi threaded environment. This is were I learned something new about the Java language with regards to the volatile keyword. This keyword (like final) is applied to a variable where its state/value must be guaranteed to be the same across concurrent threads. Something to check in our custom cache and other multi-threaded "safe" code. Rob also covered the Java concurrency API which we have used (using the backport jar) and it got me thinking about Terracota and our clustering plans.

This links nicely to the first afternoon session where Nati Shalom, from Gigaspaces presented Scale Out Your Spring Applications in 3 simple steps. Nati explained the concept behind Gigaspaces (using Java spaces in some of their architecture I think) and how putting both the database data and the messaging side of an architecture all in memory through a cluster of spaces to create massively scalable applications. Gigaspaces also demonstrated failover by shutting down one of the nodes in the cluster. Something tells me though that for our clustering, Terracota fits our requirements better.

The last session, Spring LDAP Essentials, was unfortunately disappointing. Compare to the other "sexier" sessions, an overview of what is just another Spring template was a bit of a let down. Not something that could have been quickly picked up by reading the doc.

On a more social note, there was a beach party at 4.00pm and we were handed a set of beach goodies (and some will be thrown in the office when I come back...) and I had the chance to meet more people including Carlos, working for the BBC in London, and Ted, working for Icesoft (the Icefaces folks).

Back at dinner time and I yet have to win an iPhone at the raffle...

1 comment:

Nati Shalom said...

Hi Yann

I'm happy that you enjoined the presentation on Scaling Spring Application in three steps.

I would be happy to understand your specific requirements and see if i have good answer to your needs. Just drop me an email

Nati Shalom

BTW if your interested to explore how to scale your spring application with OpenSpaces, a good place to start is here