|By Alexis Moussine-Pouchkine and Janice J. Heiss|
The discussion at the 2010 JavaOne Java EE 6 panel (session 313278) was wide-ranging, dense in technical information, good natured, articulate, at times witty, and, while representing a diversity of perspectives, expressed general agreement about the importance and future of Java EE 6. The new release, widely regarded as the most significant Java EE release ever, has been available since December of 2009. The panel, which focused on where Java EE stands today from a technical adoption perspective, offered a useful window into the nature and extent of its adoption, along with future prospects.
The panel, moderated by Oracle's Alexis Moussine-Pouchkine, consisted of:
The 2010 JavaOne Java EE 6 Panel
Photo by Evgueni Smoliar
Moussine-Pouchkine began with a summary of the features of Java EE 6, which offers a more flexible technology stack, enhanced extensibility, and further ease of development through a number of innovations:
Java API for RESTful Web Services (JAX-RS)
Contexts and Dependency Injection (CDI)
Enhanced Web Tier Capabilities
Support for Web Fragments in Servlet 3.0
Shared Framework Pluggability
Asynchronous Processing in Servlet 3.0
JSF 2.0 Templating
JSF 2.0 Composite Components
Support for Ajax in JSF 2.0
More New Features in Servlet 3.0 and JSF 2.0
Improved EJB Technology
“The end result,” said Moussine-Pouchkine, “is something that was described as a goal in the first EE release -- to be able to build entire applications without the need for official third-party frameworks. Does this mean that we have arrived with Java EE 6? Have Java developers seen the light?”
The panel explored these and other questions.
Platform and API Adoption
After quick introductions, panelists gave reports on their platform and API adoption. Emmanuel Bernard of JBoss by Red Hat observed that JBoss is now feature-complete for the Java EE 6 Web Profile and will likely be ready in the fall.
Reza Rahman of Caucho said that in a couple of months, Caucho Resin, their high-performance, open-source application server, will be ready. Caucho provides Java EE 6 Web Profile and cloud solutions for more than 360,000 global commercial deployments. He observed that, “Interest in Java EE 6 has been phenomenal, and in some cases has brought Java EE back on the radar. With regard to Java EE 5, people were concerned about whether they were choosing the right technology set, but with Java EE 6 people are very comfortable and satisfied when they look at the APIs and CDI. Even skeptics of Java EE 5 are having a favorable response to 6.”
Jim Knutson of IBM remarked that IBM’s WebSphere is in Beta with Java EE 6 support on the horizon, while BEA is working to integrate Java EE 6 into WebLogic.
Emmanuel Bernard, Principal Software Engineer, JBoss by Red Hat, remarked that people love the consistency, simplification, and tight integration of the Java EE 6 platform.
David Blevins, Senior Software Engineer, and co-founder of the OpenEJB project and a founder of Apache Geronimo, remarked on the many new features in EJB 3.1 and expressed enthusiasm for CDI (Contexts and Dependency Injection).
Roberto Chinnici, Technical Staff Consulting Member at Oracle and Java EE Platform specification lead, indicated that GlassFish version 3 (released late 2009) was naturally fully compliant with the Java EE 6 specification and that Oracle was also working to support Java EE 6 in WebLogic. He also reminded the panel that JAX-RS has helped REST become a mainstream technology for Java developers, which is important for Java EE 6.
Consultant and Java Champion, Adam Bien, explained that in moving to Java EE 6, he had migrated all his EAR's to WAR's, removed Quartz and replaced it with EJB Timer, and removed a number of interfaces. He commented that the Event model in CDI is one of the best features in Java EE 6 and said that some of his customers use EJBs and CDI without knowing that they are using Java EE, which he regarded as the best possible sign that they are focusing on business logic. Bien also expressed appreciation for the ease of migration involved in the move to Java EE 6.
CDI -- Contexts and Dependency Injection
The conversation turned to the late-comer in the platform, CDI. Moussine-Pouchkine asked if the panel was happy with how CDI was integrated into Java EE 6 and with its presence in the Web Profile. And are people adopting it, or is there so much new stuff in the platform that they are leaving it as a future stepping stone?
Moussine-Pouchkine remarked that CDI is a bit of a special case – with some regarding it as powerful but with a lot of complexity attached. Bien disagreed strongly with the charge of code complexity, insisting that @Inject is all that is needed to get started.
Bernard of JBoss observed that people are excited by CDI but portable extensions are still mostly unknown.
IBM’s Knutson saw little current CDI demand and speculated that CDI’s complexity might be causing some to shy away. He hastened to add that, given its power, CDI adoption is inevitable.
Rahman remarked on the strong features of the Web Profile as one reason for early adopters, along with the CDI implementation.
Bien compared CDI to insurance and observed that if there's a need to integrate additional frameworks, anything's possible with portable extensions, yet 90% of the projects don't need it.
Krasimir Semerdzhiev, Development Architect at SAP Labs, Bulgaria, reminded the panel that while CDI has great value, some developers still have not gotten their heads around Java EE 5.
Java EE vs. Spring
The discussion turned to Java EE and Spring. Bien began by saying that he would never put Spring and Java EE together because there's too much overlap. “And from a business point of view,” he explained, “you'd need support from two companies (Spring and an AS vendor) who typically don't like each other, which is a big risk.”
Rahman countered by offering reasons to integrate the two, such as the value of gradual migration and the ability to leverage Spring and the integration APIs.
Bien replied that for new applications, developers should pick one because of excessive overlap in their injection styles.
Knutson of IBM commented that it's hard to align technologies like Spring with the specification planning requirements, in particular JSR 330 (Dependency Injection for Java), which does not quite allow for the integration of Spring. So using a CDI-style of injection offers greater fidelity. He remarked that Java EE needs more work in this area.
Apache’s David Blevins remarked that they're looking at a Guice (pronounced “juice”) implementation of CDI. Guice is an open-source lightweight dependency injection framework for Java 5 and above, created by Google. It provides support for dependency injection using annotations to configure Java objects.
SAP’s Semerdzhiev agreed that many projects start from scratch so Java EE is the right choice.
Impact of Java EE 6 on Tooling and Testing
When the discussion turned to tools and testing, Semerdzhiev praised EJBContainer, which is used to execute an EJB application in an embeddable container, as “a huge step forward.”
Bernard insisted that tooling should help the developer and not be a requirement. He mentioned JBoss’s Arquillian project, which he called a “next-generation Cargo” that also works with GlassFish.
Apache’s Blevins said it would be great to be able to inject resources into test code, something OpenEJB is working on.
Reza observed that the trend in Java EE is towards annotation and being more Java-centric (type-safe). Resin has no tooling plans but will integrate with JBoss’s Arquillian and is also developing an end-to-end testing solution.
Bien recommended that developers just use APIs because wizards are always suspicious and prevent people from taking advantage of various tools which are often needed in the case of projects. He’s still looking for good unit tests and is currently using JUnit 4, JMock, and Mockito.
Chinnici said that tools also serve to help people learn and that NetBeans in particular offers such opportunities. Wizards also now produce clean annotation-based code if developers choose to use them.
Semerdzhiev commented that tools are essential to how most developers experience and use the platform so they need to improve on a regular basis. He encouraged all to contribute to Eclipse.
CDI vs. JSF Annotations. First, someone remarked that a recent blog suggested that the JSF-style managed bean injection was not often used and could be gotten rid of in favor of CDI beans that build on top of JSR 250 Managed Beans.
Spring MVC and CDI? An audience member asked if Spring MVC, which defines strategy interfaces in a modern request-based framework, and CDI, could be integrated. Rahman explained that while this is technically possible and not necessarily difficult, Spring MVC lacks enough adopters to be worth doing.
A questioner sought more opinions on the virtues of Java EE vs. Spring. Rahman responded that these were simply two different approaches and everyone must make their own decisions. Knutson encouraged developers to stay with what works well, while Blevins encouraged the questioner to choose the platform they believe in.
Finally, the discussion turned to Java EE.next, which viewers of Roberto Chinnici’s presentation at the JavaOne technical general session will recall centers on Java EE and cloud computing.
Chinnici reiterated the cloud focus, and the further emphasis on modularity as the enabler of the cloud, built on top of what JDK will offer. He emphasized the need to track emerging technologies like WebSockets and HTML 5 so that they can evolve the specification and not leave it up to vendors to implement.
Knutson remarked that Java EE can to a considerable degree run in the cloud today, but the greater problem lies in putting large applications together – that is where a modular system is most needed. Semerdzhiev said that he strongly wanted modules in Java EE 6 and could not agree more. Blevins added that more generalization of the various annotations across the platform are needed, while Rahman argued that modularity can't be the only value-proposition of EE.next -- we also need a realignment of the underlying technologies.
The final message: Java EE 6 is here today, so give it a try!
About the Authors: Alexis Moussine-Pouchkine is a Java EE & GlassFish evangelist working at Oracle. Alexis speaks at various international conferences and spends quality time with customers, developers, and architects to better contribute to the evolution of the technology and products. Follow Alexis on www.blogs.sun.com/alexismp and @alexismp. Janice J. Heiss is the Java Acquisitions Editor for Oracle.