The Spring framework is growing. It has always been about choice. Java
EE focused on a few technologies, largely to the detriment of
alternative, better solutions. When the Spring framework debuted, few
would have agreed that Java EE represented the best-in-breed
architectures of the day. Spring debuted to great fanfare, because it
sought to simplify Java EE. Each release since marks the introduction of
new features designed to both simplify and enable solutions. With
version 2.0 and later, the Spring framework started targeting multiple
platforms. The framework provided services on top of existing platforms,
as always, but was decoupled from the underlying platform wherever
possible. Java EE is a still a major reference point, but it's not the
only target. OSGi (a promising technology for modular architectures) has
been a big part of the SpringSource strategy here. Additionally, the
Spring framework runs on Google App Engine. With the introduction of
annotation-centric frameworks and XML schemas, SpringSource has built
frameworks that effectively model the domain of a specific problem, in
effect creating domain-specific languages (DSLs). Frameworks built on
top of the Spring framework have emerged supporting application
integration, batch processing, Flex and Flash integration, GWT, OSGi,
and much more.