Spring: the de-facto standard in Enterprise Java Programming

Yesterday GigaSpaces announced the latest release of their Space-Based Architecture, and it's got a new name to go with it too: the GigaSpaces eXtreme Application Platform (XAP). To quote from their press release:
The new release provides a complete middleware platform for managing data, messaging and business logic for applications that require high performance and the ability to scale horizontally across hundreds of machines.
The part of the announcement that caught my eye though was this:
As part of the new product release, GigaSpaces has embraced a much simpler, non-intrusive programming model that allows developers to write their applications in Plain Old Java Objects (POJOs), plain .Net and plain C++ objects. For Java, GigaSpaces is achieving this by supporting the Spring Framework, which is rapidly becoming the de-facto standard in Enterprise Java programming.
It's great to see this kind of recognition, the only slight change I'd make to the statement is to drop the "rapidly becoming" part: the Spring Framework is the de-facto standard in Enterprise Java Programming.
Announcements like this are part of a virtuous circle (described for example by Geoffrey Moore in his book "The Gorilla Game") whereby the pervasiveness of the Spring Framework makes it very compelling for vendors to provide Spring Framework integration in their products, which in turn increases the overall value of Spring. This of course helps to make Spring even more pervasive, putting more pressure on more vendors to integrate more deeply.
So what does it mean to "support Spring" in your product? At the simplest level this means buying into the Spring philosophy: simple Java objects supporting externalized configuration and easy testing. Here are some pointers for what you can do take make your product "Spring friendly":
- Allow configuration to be managed by Spring. At the most basic level this means having a set of configuration metadata classes that can be wired up as Spring beans in an application context. Avoid creating your own custom configuration files and formats if at all possible. To further simplify things for your users, you might consider adding support for a Spring namespace that makes it easier to configure things. Gigaspace provide a "gigaspaces" namespace for example allowing elements such as <gigaspaces:config> and <gigaspaces:caching> to be used directly in a Spring configuration file.
- Use the Spring abstractions and design idioms in your API. For example, the notion of a "Template" is very familiar to Spring users. GigaSpaces provide a "GigaSpacesTemplate".
- Support unit and integration testing. Design your API in such a way that it is easy to unit test and integration test business logic in a Spring application that uses your product.
- Integrate with the infrastructure services abstractions used by Spring. For example, GigaSpaces' JMS and JDBC abstraction can be used directly with Spring. GigaSpaces also provides several implementations of Spring's PlatformTransactionManager to allow the Spring framework to demarcate space-based transactions.
Not all integration options are applicable to every product of course, but these ideas should at least help you to get started down the road.
Modified

andre del bene says:
Added on June 13th, 2007 at 5:23 amEven on ServerSide site there is a new about this Spring integration and is followed by another new about Cluster4Spring, another opensource to cluster Spring's beans.
Congratulations to all of you at Interface21!
Tomasz Blachowicz says:
Added on June 13th, 2007 at 6:41 amYou mentioned pervasiveness of Spring Framework. In my opinion that's the key thing to its success and popularity. I've been developing Spring-based applications since its early days (1.0 version, or so) and I couln't imagine enterprise level java application without it! I believe the sweet spot of Spring is that is is pervasive in app we develop, but it's not intrusive like j2ee stuff. Take a closer look at your Spring-based applications and you definitely notice that Spring is everywere (Configuration, JDBC, JMS, Transactions, AOP, etc.) but usually it doesn't affect the overall design and architecture. That's why it's so developer-friendly and popular
Tom
Richard Nicholson says:
Added on June 14th, 2007 at 5:56 amAdrian,
You possibly missed our press release a couple of months ago - but Infiniflow DSF is was released spring this year (see www.paremus.com).
Leverage throughout OSGi and SCA - Infiniflow will provide transparent support Spring 2.1 - providing an adaptive runtime infrastructure for enterprise wide composite Spring applications. Free from vendor middleware product / architectural lock-in; Infiniflow providing a non-intrusive enterprise runtime.
Spring applications may or may not choose to use JMS queues, spaces, direct synchronous communication, SOAP whatever - Inifiniflow will dynamically assemble the required runtime service components and maintain these. By changing the service description an Enterprise user can change / replace middleware services as simply as their own business logic.
Think in terms of super runtime dependency injection for the the most sophisticated Enterprise / Utility service Spring based apps.
Cheers
Richard
Geva Perry says:
Added on June 19th, 2007 at 3:17 pmAdrian —
Thanks for the mention. We are looking forward to a fruitful relationship with your excellent team.
Geva Perry
GigaSpaces
MCOM graduate student says:
Added on July 1st, 2007 at 11:02 amPlease help by providing comments on a quick six question survey about programmers and blogs. Thank you.
http://www.surveymonkey.com/s.aspx?sm=H3Tk7Ho1186wC3taRdYZuw_3d_3d