The Spring Blog

Engineering
Releases
News and Events

XML Syntax Sugar in Spring 2.0

If you’ve followed October’s Spring 2.0 release, you will know that one of the big new features was XML extension name spaces: the ability to define new XML elements and attributes that generate Spring metadata, and can be used alongside regular bean definitions. This provides a valuable new extension point and makes Spring configuration both more simpler to use for many repeated tasks and more powerful.

However, there is also a sweet little piece of syntax sugar that you may not have noticed–probably because no one in the Spring team has gotten around to telling you… Having promised myself for a while that I was going to do a code-centered blog next, here goes.

Read more...

Spring Framework: The Origins of a Project and a Name

I am regularly asked about the origin of the name “Spring.”

The name goes back to late 2002. In November 2002, I published Expert One-on-One J2EE Design and Development. The book was accompanied by 30,000 lines of framework code, which had accounted for a good deal of the year full-time I put into writing the book. (Writing a 750 page book is enough work on its own; writing a substantial framework to go along with it is sheer masochism. It was hard.) Many of the fundamental concepts of the Spring Framework were there: an already capable IoC container, with BeanFactory and ApplicationContext and sophisticated Dependency Injection (although that name was not coined until late 2003); an early form of what become Spring MVC with Controller, HandlerMapping and friends; the template concept; JdbcTemplate and the concept of technology-agnostic data access exceptions…

Read more...

Last chance to join 500+ others in Australia

If you’re reading this blog, chances are that you already know Spring is a pretty popular framework. Most J2EE developers who’ve ever used it simply love it, as illustrated by 12+ books, 1,000,000+ downloads, 14,000+ forum members etc. Still, even I was surprised when my Australian Spring user group announcement a little over a week ago generated this much interest… As of today, we’ve had over five hundred registrations to attend these three meetings. Indeed, we’ve needed to move the Sydney meeting to larger premises, with the Brisbane and Melbourne meetings almost booked out. If you’re located in Australia and would like to come along, I’d encourage you to register ASAP to avoid disappointment (don’t forget to also subscribe to Australasia Spring Interest to hear about future events).

Read more...

Oracle, Open Source and Commodization

I was in San Francisco for Oracle World. I even spoke briefly in Thomas Kurian’s keynote on Java middleware. But Neelan and I had to leave on Tuesday and missed the Big Deal: Larry Ellison announcing that Oracle are offering support for Linux.

This is an interesting event from the perspective of the open source business. What are the wider implications?

Oracle are offering support for an open source product that they did not create and don’t control.

This is possible for a number of reasons:


  • Linux is not a product. It is a class of technology, and companies or organizations assemble, document, distribute and support products.
  • Linux support is already commoditized to some extent. Red Hat is only one of several distributors offering support.
  • The leadership of Linux is diffused. Linus Torvalds does not work for a big distributor; Red Hat does more than most but no single company provides clear leadership.
  • The leadership of Linux matters less than you think. Linux is not primarily an engine of innovation, but an engine of commodization.
Read more...

Interface21 / Spring at Oracle OpenWorld 2006

Rod and I are here in San Francisco at Oracle OpenWorld 2006. This is indeed a scene. I can’t decide if “hubris” or “impressive” is the right way to describe it but the numbers don’t lie. They are expecting 45000 people for the conference and the City of San Francisco thinks the show will generate $50-60M in money for the city. Apparently, no Oracle employee is allowed to stay in a hotel north of the airport. One of the more shocking things was that the city blocked off a chunk of Howard St. in front of Moscone for the conference.

Read more...

Spring 2.0 final, with over 10,000 downloads in the first day

Spring 2.0 went final on Tuesday! This is the product of 9 months of hard work from the Spring team, and huge amounts of user feedback (thanks!) and it’s a big step forward.

I promise my next blog will be about something other than download numbers. I’ve been playing around with some interesting approaches to testing pointcuts in @AspectJ annotations, so I’m hoping next time to post some interesting code.

But we just noticed some pretty amazing figures from SourceForge, so I can’t resist posting about them. There were over 10,000 downloads of Spring 2.0 in the first 24 hours! Interest in Spring 2.0 has been building for months–with some users already in production with a release candidate, including a prominent media site in Europe–and I think Keith’s brilliant launch page and countdown of last week topped it all off.

Read more...

Spring 2.0 Maven POMs ready

One last Spring 2.0 announcement on a day full of them. The Maven POMs for Spring 2.0 are up in Spring’s private repository. If you want to point to it directly check https://svn.sourceforge.net/svnroot/springframework/repos/repo/. If you want to wait, they should be replicated into the Ibiblio Maven repository over the next couple of days.

For those of you who like to browse around with a bit more metadata, the ViewVC interface from SourceForge is a good choice. Remember that you should use the earlier link as a URL for maven, but you can use the later link for browsing.

Read more...

Exploiting Generics Metadata

It is a common misconception that I hear when talking with clients that all information about generic types is erased from your Java class files. This is entirely untrue. All static generic information is maintained, and only generic information about individual instances is erased. So if I have a class Foo that implements List<String>, then I can determine that Foo implements the List interface parameterised by String at runtime. However, if I instantiate an instance of ArrayList<String> at runtime, I cannot take that instance and determine its concrete type parameter (I can determine that ArrayList requires type parameters). In this entry I’m going to show you a practical usage for some of the available generics metadata that simplifies the creation of strategy interfaces and implementations that differ by the type of object they process.

Read more...

Boston Spring Group First Meeting

I am very excited to announce that the Spring SIG within the New England Java Users Group will be having our first meeting this Thursday (September 28th, 2006). Ramnivas Laddad (author of AspectJ in Action and Interface21 Principal) will be presenting "AspectJ for Spring Developers". This will be a great chance to learn about the enhancements in AspectJ integration within Spring 2.0.

You can read the details HERE, and be sure to click on the 'Register' link on the left-hand side of the page if you plan on attending.

Read more...

Thank you! Spring Framework passes 1 million downloads

A couple of weeks ago, the Spring Framework project passed 1 million downloads from its home on SourceForge. The true total is probably much higher, as this figure does not include nightly builds or the other sites from which Spring can be downloaded. And, of course, Spring is included in the distributions of a large and growing range of other products. And then there’s Spring.NET

Most important, Spring continues to gain momentum: the numbers are growing very rapidly. The most downloaded version of Spring is the most recent production release, 1.2.8, which has been downloaded 175,000 times–that is, over 17% of the total. At this rate we will achieve our next million downloads much faster than the first million!

Read more...