Monday, October 10, 2011

Java EE 6 and the Spring Framework

Recently two sessions at JavaOne 2011 covered the relationship between Java EE 6 and the Spring Framework. 

Java EE vs Spring Framework Shootout - This session compares the Spring and Java EE stacks in terms of Web frameworks. It re-examines the motivations behind the Spring framework and explores the emergence of the Java EE programming model to meet the challenges posed. The presentation provides insight into when Spring and/or Java EE is appropriate for a building Web applications and if they can coexist.

Best Practices for Migrating Spring Applications to Java EE 6 - The Spring Framework has no doubt played a major role in evolving how we write enterprise applications on the Java platform today, but it is still a proprietary framework owned by a single company. The age of having to rely on such proprietary frameworks in order to develop decent enterprise applications is now over, and using Java EE 6 has become an even easier way to develop enterprise applications based on standards, which makes it the best choice for any enterprise application. In this session, you will experience how to migrate a typical full-stack Spring application to a standards-based, completely portable Java EE 6 application, including integration tests. 

Both these presentations bring forth Java EE as a standards based, easier and better alternative to the proprietary Spring Framework. They also cover scenarios of migrating and co-existence with Spring. Please go through these presentations for re-evaluating the usage of Spring Framework in your application stack.

For best practices on integrating the Spring Framework with the WebSphere Application Server please look at the following whitepaper.

Friday, October 7, 2011

Announcing the WebSphere Application Server V8.5 Alpha

The year was 1911. While most were trying to understand how to create accounting machines and punch card readers, one man had a vision. He created a company with the sole intent of constructing a lightweight, fast, consumable application server that was so fast and easy to use, a developer could run it on even the slowest of punch card readers. "The server must start within 5 seconds" he exclaimed! "The server footprint cannot be bigger than 50 megabytes!" he mandated. While some of his more forward-thinking colleagues questioned how a production-ready server with such strong enterprise qualities of services could run in just 50 MB of space, others were puzzled by what an application server was and baffled by this talk of a "megabyte". They called him a dreamer and questioned whether this was even possible. "I want this application server technology to be available, even if it takes a hundred years!" he replied.

The rest is a history that is very much left out of the IBM Centenary literature. However, WebSphere Application Server V8.5 Alpha provides all this and more, using the new Liberty profile. Want to know more? Why not take a look round this new development community, WASdev. You can download the alpha server and tooling. We'd love you to let us know what you think on our forums, and to collaborate with us to help create a next generation development platform that works for you.

Modularity - the next generation of programming

One of the issues that the industry has been wrestling with for quite a while has been integration. Application servers are big and integrate lots of code to provide the right set of functionality. Applications are growing in size and are integrating third party code to do the same thing. Sometimes there are conflicts. The application server may have integrated one version of Apache Commons Logging and the application needs another because the third party code they need to use requires it. This can even happen within the application itself.

The only way we're going solve this kind of problem is to remove the hierarchical classloader structure in Java and replace it with a managed classloader tree that allows versioning and control resolving dependencies. In other words, we desperately need a modular programming model.

The Java EE platform has known about this issue for some time (since before Java EE 6). It was not addressed in EE 6, but was supposed to be part of the EE 7 discussion. However, as of this month, the Java EE 7 Expert Group has dropped the ball once again on delivering modularity, citing a need for modularity in Java SE first.

However, do not despair. It's extremely unfortunate that EE 7 is not addressing industry concerns, but vendors are providing modular support today in most every app server and OSGi seems to be the predominant form. WebSphere Application Server V8.0 supports building and deploying modular apps and the WebSphere Application Server V8.5 Alpha has a Liberty Profile that shows just how much modular programming is going to change how we program. Think about WebSphere, but with roughly the size and startup speed of Tomcat and an even simpler config model than Tomcat. Best of all, it's OSGi based and gives you the control to resolve dependencies the way you want.

If you want to learn more, see http://www.ibm.com/wasdev and if you want to voice your displeasure in not addressing modular applications in Java EE 7, then send email to the spec leads (found at http://jcp.org/en/egc/view?id=342) or the public comment mailing list, users@javaee-spec.java.net.