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

Engineering | Rod Johnson | October 05, 2006 | ...

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

Spring 2.0 Maven POMs ready

Engineering | Ben Hale | October 03, 2006 | ...

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.


Updated 10/3 22:03: Added paragraph about ViewVC

Exploiting Generics Metadata

Engineering | Rob Harrop | September 29, 2006 | ...

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.

A pattern that I see occurring in many applications is the use of some kind of strategy interface with concrete implementations each of which handles a particular input type. For example, consider a simple scenario from the investment banking world. Any publicly traded company can issue Corporate Actions that bring about an actual change to their stock. A key example of this is a dividend payment which pays out a certain amount of cash, stock or property per shared to all shareholders. Within an investment bank, receiving notification of these events and calculating the resultant entitlements is very important in order to keep trading books up to date with the correct stock and cash values.

As a concrete example of this, consider BigBank which holds 1,200,000 IBM stock. IBM decides to issue a dividend paying $0.02 per share. As a result, BigBank needs to receive notification of the dividend action and, at the appropriate point in time, update their trading books to reflect the additional $24,000 of cash available.

The calculation of entitlement will differ greatly depending on which type of Corporate Action is being performed. For example, a merger will most likely result in the loss of stock in one company and the gain of stock in another.

If we think about how this might look in a Java application we could assume to see something like this (heavily simplified) example:


public class CorporateActionEventProcessor {

    public void onCorporateActionEvent(CorporateActionEvent event) {
        // do we have any stock for this security?

        // if so calculate our entitlements
    }
}

Notifications about events probably come in via a number of mechanisms from external parties and then get sent to this CorporateActionEventProcessor class. The CorporateActionEvent interface might be realised via a number of concrete classes:


public class DividendCorporateActionEvent implements CorporateActionEvent {

    private PayoutType payoutType;
    private BigDecimal ratioPerShare;

    // ...
}

public class MergerCorporateActionEvent implements CorporateActionEvent {

    private String currentIsin; // security we currently hold
    private String newIsin; // security we get
    private BigDecimal…

Boston Spring Group First Meeting

Engineering | Mark Fisher | September 25, 2006 | ...

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.

This group will provide a great forum for "all things Spring" and will be meeting roughly once per quarter initially. I am looking forward to building a community and personally meeting fellow Spring users in the greater Boston area.

A special thanks to NEJUG president Steven Maienza and the NEJUG members who expressed an interest in having a Spring group and put this into motion before I even moved to Boston. Thanks!

Thank you! Spring Framework passes 1 million downloads

Engineering | Rod Johnson | September 22, 2006 | ...

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…

Long time, no blog

Engineering | Rod Johnson | September 22, 2006 | ...

Welcome to my new blog! I haven't blogged since August 2004, but have been inspired by our new team blog to try to lift my game. I've also been shamed by the blog-energy of my colleagues.

I'm very excited about a lot of topics at the moment, and promise to blog much more often than once every 2 years in future... Stay tuned for my thoughts about Spring 2.0 and beyond, OO design, AOP, and the future of enterprise Java.

In the meantime, I'll share my travel schedule for the next few months (which will at least give me an excuse for not always posting regularly):

  • October 1-6: JAOO conference in Aarhus, Denmark.
  • October 10-11: BEAWorld event in Prague. Always a beautiful city, although Prague is no longer a cheap destination.
  • October 23: Keynote about Spring 2.0 at the Oracle Develop event, a new part of Oracle Open World conference, in San Francisco. This looks set to be a big conference.
  • November: I'm spending most of November in Australia, partly to visit family and friends, and partly because Interface21 has opened a new office there, headed by Ben Alex, Acegi Security lead. I'll be speaking at various events, including Spring User Groups in Sydney and Brisbane, the Sydney JUG, and a forum in Melbourne.
  • November 27-28: JAX Asia conference in Singapore. This is a new conference. The German JAX conferences are big and have interesting content, so I'm looking forward to it. With amazing timing, this is just at the time I was returning to London from Sydney, so I'm literally in the area... There's also a JAX conference in Jakarta, but I'm at the limit of my travel tolerance for the next few months already and just couldn't commit to that.
  • December 7-10: This is going to be the most fun. The Spring Experience, in Hollywood, Florida. This year we expect over 500 developers, and great speakers as usual. Keith is doing a great job of organizing it, along with Jay Zimmerman of No Fluff Just Stuff fame.
  • 11-15 December: JavaPolis in Antwerp. A big European conference, great value for attendees and always has a top speaker lineup--probably because organizer Stephan Janssen seems to know everyone who's anyone in the Java community. And of course Belgium is always worth visiting, if only for the beer. I'm a big fan of Belgian white beer in particular.
Ouch. Even writing that list made me feel tired. Fortunately I have been flying a lot less than usual for the last couple of months, so I've avoided the delays and restrictions here in UK airports. But it's pretty obvious that by late December I am going to be in serious need of a rest...

Spring and Maven Followup

Engineering | Ben Hale | September 18, 2006 | ...

There has been quite a bit of discussion over my recent announcement about Spring and Maven. The discussion is all very good and worthwhile, but I do want to clarify a couple of points that I made.

First and foremost, we are committed to supporting Spring users who are using Maven as their build system of choice. This means we will help ensure accurate POMs are available in the Maven repository with each Spring release starting with Spring 2.0 RC4. That is what the world's most most popular JIRA issue is all about. Nothing more.

The topic of Spring's own internal build system is a…

Spring 2.0 RC4 Released: Heads-up on DTD/Schema Renaming, Scope Attribute

Engineering | Colin Sampaleanu | September 17, 2006 | ...

Spring Framework 2.0 RC4 has been released. This is the last release candidate before Spring 2.0 final, and you may find out more about it from the release announcement itself as well as the JIRA issue list for a complete list of changes in this release.

Possibly the most important thing to watch out for is that this release introduces versioned file/location names for the 2.0 DTD and Schemas (XSDs). This was necessary since the XML bean definition format was significantly enahnced for 2.0, but 1.2.x users still need to be able to refer to the 1.2.8 DTD. Here is an example of using the 2.0 "beans" schema (2.0 ships with a number of other new schemas as well, representing various special namespaces

Yes, I know it's now the most voted for issue in the JIRA!

Engineering | Ben Hale | September 15, 2006 | ...

Can you guess what it is? If you guessed a Maven bundle/build for Spring you win. Come see me at The Spring Experience in December and we'll share a frosty beverage as your prize.

Mea Culpa

In a past life I did a lot of work in configuration management and build systems. When I started here at Interface21, I immediately volunteered to help out with the build infrastructure as much as I could. Next thing I know, I've got every single ticket relating to Maven in both Spring and Spring Web Flow assigned to me. Then through my own lackadaisical attitude towards the JIRA, I let this particular issue come to a boil. Over the past couple of months, things have been moving forward with regards to Spring and Maven; things I should have posted in the JIRA and didn't. This led to some justifiable venting in the main JIRA issue over the last couple of days. So in an effort to bring everyone up to speed here's the current status.

Status

For those of you who have been in despair over the last couple of months about Spring 2.0 and Maven, you won't be for much longer. The Spring community has decided to incrementally convert all of the Spring projects over to Maven. As you may know Acegi has already been using Maven for a very long time. Recently the Spring-WS project converted as well. I've personally prototyped Spring Web Flow's conversion, and there is general agreement that Spring will move over as well.

That said, it's not quite time for celebration. Converting the last two projects (Spring and Spring Web Flow) are non-trivial tasks (just take a look at Better Builds with Maven if you don't believe me). As such, the conversion is not something that we really want to do this close to the major 2.0 and 1.0 releases. What I can tell you is that the conversion is a goal scheduled for after the releases.

So what's the plan?

It's pretty simple actually. For both Spring and Spring Web Flow I'll be building up POMs with the dependency lists by hand over the next couple of weeks. At this time the plan is to release these POMs with the final releases of both Spring and Spring Web Flow. After the releases, with Arjen's help I'll be assisting both Juergen and Keith in converting their source trees over to Maven builds and getting those builds running in Continuum.

Then what can I, the user, do in the meantime?

Well the first thing is to be patient. It's my fault that we've been silent on this issue so long and hopefully this post will give some transparency to our thought process. Secondly, I'd love help testing. My plan is to check-in the trial POMs to CVS and SVN as I'm working, and announce on the JIRA issues that changes have been made. As you'd guess, the creation of POMs by hand is error prone (one of the driving factors towards a Maven build), so I'd love for some help testing them. Comments in the JIRA, posts to the forum, and posts to the developers mailing list are all good avenues for feedback.

Anything else you want to know about?

Again, I hope this helps alleviate some of the frustration in the community and gives you an idea of our future direction. Any comments on this current plan are of course welcome (the comments here would be a good spot for that), but I'd also like to know if you have any other questions or issues that you're frustrated by. If you leave a question below or email me directly, I'll try to get you a good answer and either post it here on the blog or email it back to you personally.

Spring OSGi support gaining momentum

Engineering | Adrian Colyer | September 07, 2006 | ...

It started out as a small thing. Just a hunch of mine that Spring and OSGi should sit together very well. The idea was that by enabling Spring applications to be deployed in an OSGi runtime, we could bring better modularity, versioning, runtime deployment and update capabilities to Spring applications. It's a project I never really advertised; I just started experimenting, talking to a few people, and writing some early prototype code.

It turns out that a lot of people seem to be interested in Spring and OSGi. We have a collaboration ongoing with representatives from BEA, Oracle, IBM, Eclipse, the OSGi Alliance, and several others to build a shared model of how Spring support for OSGi should look, and how we can make it easy to build enterprise applications on the OSGi runtime. The most recent version of the specification is attached to Spring JIRA issue 1802. Here's a direct link to the specification text

Get the Spring newsletter

Thank you for your interest. Someone will get back to you shortly.

Get ahead

VMware offers training and certification to turbo-charge your progress.

Learn more

Get support

Tanzu Spring Runtime offers support and binaries for OpenJDK™, Spring, and Apache Tomcat® in one simple subscription.

Learn more

Upcoming events

Check out all the upcoming events in the Spring community.

View all