One of the controversial points of EJB 3, is whether it should be backwards compatible. The programming model is so different, that it hardly seems right to force 2.1 compliance, but rather, make that an option.
In fact, one of the instant poll questions at TheServerSide Symposium backed this up:
How do you think the EJB 3 spec should handle backwards compatibility (e.g. to allow for a Spring compliant version)
1) Make EJB 2.1 support and below MANDATORY
2) Make EJB 2.1 support and below OPTIONAL (a check box for vendors to compete)
The results came back as ~80% of the crowd wanting this to be optional. Linda DeMichiel mentioned on the panel that she did hear the community here, although I do realise that she has other groups wanting other things. Kudos to her for being the spec lead ;)
Many people at the show laid their point down:
Tim Dawson: Vendors don't care that the spec enforces backwards compatibility, they care about which server vendors do!
Hear, hear,
We also know that many dev groups need to be able to say "I am using EJB compliant software". This is from vendors to ISVs to large IT organizations. It is a reality. And, although a couple of vendors told me at the show:
Spring can support the EJB 3 annotations, so they will be source-code compliant...
I think this is short sited. You can't say "Oh, well we aren't EJB 3 certified, but we do grok it. Promise".
So, what if the EJB spec does continue to enforce EJB 2.1 compatibility?
I am not as worried about this anymore. Of course, I would love to see the likes of Spring able to support EJB 3, but there is a good solution if it isn't the case. Geronimo/Spring integration.
What if Geronimo had first class integration with Spring? Spring Beans/modules could automatically be loaded up with no need for anything else. There are many, many ways in which the two could integrate, and I have heard of some very exciting possibilities from the teams.
What this does, is that it changes the game. We can get the best of all worlds.
If you work in a place that requires "application servers" and the like, you can just use Geronimo for that need... which will be a fully compliant EJB 3, J2EE 5, server.
So, I predict that:
Geronimo will become theserver to run the Spring framework within.
Imagine it! EJB 3 view on your Spring modules! No need for Spring to have to implement the spec at all!