Spring 2 Final Released - Downloads overload servers
Since launch, InfoQ has provided the most detailed coverage of the features in Spring 2 anywhere on the Internet. We invite you to check out Spring 2 features (see infoq.com/spring) in detail in some of our recent content and coverage:
- Video Interview with co-founder Juergen Hoeller and core developer Rob Harrop. Goes into deep detail on the new extensible XML, AspectJ integration, MVC, and general Spring best practices.
- An update on Spring 2 Article. Goes in depth on JPA support and explains the OSGi integration and why it matters.
- Enterprise AOP with Spring 2 and AspectJ: Deep detail on Spring 2's AOP features and AspectJ integration.
- As well as some of our news coverage:
Released to the press, Spring core developer Keith Donald, summarizes the new features:
"We believe that version 2.0 going GA is a major advance for Spring Framework users and enterprise Java overall," said Rod Johnson. Rod continued:
- Extensible XML configuration, built around XML schema, with the ability to create namespaces defining custom elements that can be reused as building blocks. This feature enables many common tasks to be simplified through custom tags shipped with Spring itself, organized into namespaces around areas such as AOP, Java EE integration and transaction management. It also provides a major benefit for the many third party products that use Spring internally, such as Mule, and is important to large enterprise users who want to define configuration extensions for use across very large projects.
- Major improvements in Spring's support for Aspect Oriented Programming (AOP). Spring 2.0 evolves Spring's AOP framework to take advantage of the powerful AspectJ pointcut expression language, which provides a sophisticated way of identifying points in the execution of an application to which aspect behavior should apply. Spring 2.0 allows Spring users to leverage the powerful and elegant AspectJ programming model with the Spring runtime, preserving the zero cost of adoption of Spring AOP. The AspectJ programming model delivers many advantages beyond interception-based programming models, such as type-safe matching, avoiding the potential for brittle assumptions regarding method arguments and return types. Through enabling key elements of the AspectJ programming model "natively" in the Spring Framework, Spring users gain the unique advantage of a single programming model for all AOP requirements, being able to use the same concepts and constructs if they choose to use AspectJ in addition to Spring. Spring 2.0 provides a complete roadmap for AOP usage, meeting the needs of all users, whether or not they simply want to use Spring’s out of the box declarative services such as transaction management, want to use Spring AOP for custom aspects or want to use AspectJ for the most demanding AOP scenarios.
- Improved functionality for JMS messaging, including a sophisticated capability for asynchronous message consumption both within and outside a J2EE environment. The latter supports local JMS transactions as well as XA transactions, and can be integrated with any kind of thread pool through Spring 2.0's new TaskExecutor abstraction.
- Numerous features designed to take advantage of language improvements in Java 5 for customers who have already updated their environments.
- The extension of the Spring component model to support dynamic languages running on the JVM, including JRuby, Groovy and BeanShell. As of Spring 2.0, the Spring component model is cross language, and any Spring bean can be coded in a choice of languages. Regardless of language, all Spring components enjoy the full range of Spring services, such as Dependency Injection and enterprise services such as declarative transaction management and JMX export.
- Improvements in Spring MVC web framework, including additional defaulting and a new JSP tag library that simplifies form authoring.
- Addition of a Portlet MVC framework that provides similar benefits to Spring MVC for developing Portlet-based web applicwations. This has been one of the most common requests from the Spring community.
- First-class integration with the Java Persistence API (JPA) standard for object-relational mapping, with Spring able to provide both the Java SE and Java EE contracts for hosting a JPA persistence provider, and processing JPA annotations such as @PersistenceContext. This extends Spring’s comprehensive architectural solution to data access to span an important new technology.
- Numerous enhancements in the core Inversion of Control container, including the addition of custom scopes for Spring beans (with HTTP session and request scopes out of the box), and further extension points for use by the growing number of third party frameworks building on Spring, including the Pitchfork project used in the next release of WebLogic Server.
The Spring Framework pioneered the concept of developing sophisticated applications from plain Java Objects (POJOs), and continues to set the benchmark for POJO development. The fact that Spring 2.0 is backward compatible confirms the power of what we call a 'non-invasive' POJO-based programming model, and the quality and flexibility of the Spring Framework's architecture. Users who have invested in applications built on Spring can rely on us for a stable upgrade path."On next steps, Keith Donald told InfoQ:
We're going to follow this up with more 2.0 examples and screencasts on www.springframework.org/go-2.0. We're working with the Maven 2 team to get the 2.0 jars in the Maven 2 repository as soon as responsibly possible. Spring Web Flow 1.0 final will follow next week, with 1.0 RC4 going out tommorrow to leave time for any lingering issues there.Congrats Spring team!
Mule and Spring in the same week
Re: Minor correction
Yes, OSGi integration will follow Spring 2.0. It is scheduled for inclusion in Spring 2.1, but a separate download should be available in the meantime. Spring 2.0 itself does contain a number of minor changes required to work well with OSGi, so some of the background work has already been done in the Spring core.