Oracle may own the Java trademark, but VMware is touting its own Spring framework as the best programming model for enterprise Java developers.
"In the innovation of the Java programming model, I think Spring really plays a leading role there," said Rod Johnson, who is senior vice president and general manager of VMware's SpringSource product division, as well as the creator of the first version of Spring.
At least one other company seems to share VMware's enthusiasm, Google has chosen Spring as the preferred programming model for Google App Engine. And at the SpringOne G2X developer conference in Chicago this week, the two companies announced that they have completed a number of integrations between Spring and the Google App Engine and the Google Web Toolkit. Johnson noted that while Google pulled out of the Oracle-controlled JavaOne, it was a major sponsor for the SpringOne conference.
"We talked to our customers, we wanted to learn where the new growth is, where a lot of the new apps are being written, because that is probably where the growth will be for App Engine. And we felt like Spring is a really good platform for those applications," said Brad Abrams, product manager for Google's developer tools division.
Not everyone is so certain that Spring is the future of enterprise Java development. Red Hat, for instance, has questioned the need for the Spring framework at all.
"The latest iteration of Java can offer a simple, standard architecture that can cut development time while offering an open and standard platform making the need for frameworks like Spring unnecessary," wrote Red Hat Senior Director of JBoss Enterprise Middleware Ashesh Badani, in a blog posting last week.
An open-source project, the Spring framework was designed to help developers quickly structure Java programs, especially Web applications, in an architecturally coherent manner. Since its introduction in 2002, it quickly grew to be one of the most widely used Java frameworks. VMware purchased Johnson's company, SpringSource, in 2009.
At the conference this week, VMware and Google, who started working together earlier this year, displayed the first fruits of their partnership.
Within the next two weeks, a plug-in for the SpringSource Tool Suite will be available that will allow developers to deploy their applications to the Google App Engine. The App Engine only uses a subset of the full range of Java APIs (application programming interfaces), and so Google worked to ensure that all those APIs used by Spring are available in the Google App Engine, Abrams said.
Also, the Google Web Toolkit has been integrated with Spring Roo, a tool that generates Spring code that conforms to preset requirements in performance security or other aspects. "Now Roo can generate a rich Internet client application using the Google Web Toolkit," Abrams said. Lastly the, Google Speed Tracer, a performance analyzer found in the Chrome browser, has been bundled into Spring Insight, which is SpringSource Tool Suite's own performance analyzer.
While VMware touts Spring chiefly as a development component for cloud-based applications, Johnson noted that it has achieved popularity as an alternative to Java Enterprise Edition's EJB (Enterprise Java Beans) for enterprise application development. The company claims that 2.5 million developers use the Spring framework.
"The open-source community in general has taken the baton from the Oracle technologists. Spring overtook EJB several years ago and continues to pull ahead," Johnson said.
Red Hat engineers, however, have argued that the latest version of Java Enterprise Edition, JEE 6, eliminates the need for frameworks such as Spring. In particular, it features the inclusion of JSR (Java Specification Requests) 299, a specification that covers how to handle dependency injection, a set of much-needed procedures that allow software components to interact. One of Spring's chief features is that it handles context and dependency injection.
To boost his argument in his blog post, Badani pointed to a write-up from fellow Red Hat employee, and JBoss core developer, Lincoln Baxter, which discussed the process of migrating an application from Spring to Java EE 6.
"It's no secret that the Spring Framework cropped up as a lightweight alternative and abstraction to programming for Java EE because the perception was that Java EE had become cumbersome and overly complex," Baxter wrote. "When it comes right down to it, using Java EE can be even simpler than using Spring, and take much less time. You just have to find the right guides and the right documentation."
Johnson admitted that Java EE 6 has borrowed some ideas from Spring, and, in general, is easier to use than the previous versions, whose complexities may have driven developers to Spring. But Java EE 6 still doesn't have the full range of features that Spring does, such as a full-fledged Web framework and productivity boosters like Roo.
Nor is it widely implemented across application servers, Johnson argued. While the next version of the Red Hat JBoss application server will support Java EE 6, IBM's Websphere does not support it, and the open-source Tomcat server only supports a subset of Java EE 6 functionality.
"I don't think comparing Java EE and the Spring programming models is an apples-to-apples comparison, and, secondly, Java EE as an alternative to Spring is just not viable in the vast majority of production deployments today," Johnson said.