As the computing world
A key goal of Java EE 5 was to simplify the programming model, especially for Web services. Although the previous version, J2EE 1.4, supported SOAP- and WSDL-based Web services, many found the model too complex. Nick Kassem, technology director for Web services at Sun Microsystems Inc. said the improvements to Java EE 5 better enable the loose coupling of services, while providing the robust technology that will be required to scale up Web services and build out an SOA.
"It will be hard for many of our customers to get to SOA without going through the Java EE 5 stepping stone," Kassem said. "It's a key building block. The reality is SOA means a lot of things to a lot of people and it has many aspects. The back-end integration part requires the sophisticated technology EE 5 offers today."
Java EE 5 includes several key specifications intended to improve and simplify Web services support. These are: Java API for XML-Based Web Services (JAX-WS) 2.0, Java Architecture for XML Binding (JAXB) 2.0, Web Services Metadata for the Java Platform 2.0 and SOAP with Attachments API for Java (SAAJ) 1.3.
In particular, JAX-WS 2.0 supports annotations, simplifying the programming model. It is integrated with JAXB 2.0, so all data binding has been delegated to JAXB 2.0. JAX-WS 2.0 has the ability to support additional protocols, transports and encodings. It also supports SOAP 1.1, SOAP 1.2, and XML/HTTP protocols as well as REST-style applications. In addition, advanced applications can use the low-level, messaging-based JAX-WS 2.0 API to process messages directly, without having to duplicate any of the protocol- and transport-level support built into the runtime, according to Sun.
"The core tenet of SOA is loose coupling within Web services and without," Kassem said. "In Web services, our [J2EE 1.4] initial foray was very RPC-centric. That dramatically shifted with JAX-WS 2.0, it was an important programming model shift. It enables us to build more loosely coupled Web services that will scale very well for the Web. [It] was a significant SOA-centric initiative. Simultaneously, we [made] significant improvements in the JAXB 2.0 spec to enable better quality data bindings. The quality of bindings is really important. If you don't get the bindings right, you have round-tripping problems in the SOA world that you never get right. We're not completely there, but it's a big improvement."
Jeet Kaul, Sun's executive director of application platforms, added, "The amount of code from J2EE 1.4 to Jave EE 5 was dramatically reduced. And with the use of annotations, a person who understands Java programming can do Web services programming. The simplification of the programming model has had a huge reception from developers. That in combination with the other [improvements] makes it a better place for service development."
Java EE 5 has three key improvements, according to Shaun Connolly, vice president of product management at Atlanta-based JBoss Inc.: EJB 3.0 and the Java persistence API, JavaServer Faces (JSF) and annotations. "Where the interest in our community has been heightened is around Java annotations as that relates to the creation of Web services. It provides more support for simpler Web service, RESTful Web services, which is a way of interacting with Web services that is more suited for Web 2.0 vs. the heavier-weight SOAP-based calls of the past."
Meet the skeptics
But some say despite the improvements, the platform is still too complex for application development circa 2006 and beyond. Richard Monson-Haefel, a senior analyst at Burton Group Inc. who this summer declared in a report that it's the "beginning of the end" for Java EE as the dominant enterprise platform, said that in the ensuing six months his opinion hasn't changed. Java EE 5's approach to Web services, he said, is too complicated and API-centric.
"It remains a hugely complex platform. They haven't managed to simplify the platform in a way to make developers more productive," Monson-Haefel said. "What we're seeing are the last few years of Java EE as a leading choice in doing enterprise development, which is pretty obvious with the rise of rebel frameworks like Hibernate, Spring, Tapestry and Struts, which don't fall directly under the EE spec. These are indications that programmers are looking for platforms that are easier to work with. There are solutions you can use with Java EE like Struts, and many claim these reinforce EE as a good platform, but they're actually raising the abstraction so developers are working with the framework and not the EE platform programming model."
He continued, "Developers are moving with their feet. It seems obvious that what we see is the industry shifting focus away from a monolithic platform to simpler solutions, to be more productive and to gets apps out the door quicker."
In terms of the relevance to SOA, Monson-Haefel responded: "Java EE is a spec for the creation of application servers. Application servers are not synonymous with SOA. Whether Java EE makes SOA better or worse, it's tangential. It's kind of like asking if a spark plug makes a car better."
Jason Bloomberg, senior analyst at ZapThink LLC, said, "In the big picture in the SOA world, people are moving away from Java EE 5. It's becoming less and less relevant. EE is essentially an architecture for building scalable, transactional Web sites. It's not designed for SOA. More people are understanding the limitations, and realizing there are other Java-based approaches. We're not seeing anybody interested in JAX-WS and JAXB. We are seeing open source Java suites as appropriate for SOA. It depends on what you're trying to accomplish, but we see a lot of use of elements of open source ESBs and Hibernate for various parts of the Java infrastructure. What we're not seeing is interest in Java EE."
Java itself as a platform will continue to be relevant, Monson-Haefel said, just not EE. "We think the Standard Edition is very healthy and will continue to dominate," he said. "But you can't get to SOA by choosing a technology. If you implement a good SOA it makes little or no difference what you have under the covers."
Java EE 5 is "just plumbing," said Bill Roth, vice president of the BEA Workshop Business Unit at BEA Systems Inc., in San Jose, Calif.. "The Web services elements of Java EE 5 are enabling better service development. Specifically, the technology in EE 5 is reaching a point in standardization where better interoperability is possible. That's a good thing." But, he added, "EE 5 has done nothing to help improve the life of someone who wants to build an SOA. EE 5 is about service enablement, taking an application and enabling a service. SOA is about building complex structures in a heterogeneous enterprise. EE 5 and the work of our WebLogic product line are about service-enabling applications. Once you enable enough services, then you need infrastructure to manage/maintain and monitor/deploy those services and weave them together into an SOA."
He added, "EJB 3.0 and JPA as a model for doing persistence are boons for the community. It's great for programmers, but if I want to build an enterprise application that weaves together my CRM, accounts payable, ERP, etc., EE 5 is just plumbing."
JBoss' Connolly said Java EE is relevant for the SOA world, but it is one of several approaches. "When I look at providing infrastructure for people creating applications and services using an SOA approach, I look at three different approaches," he said. "Java EE 5 has a lot of relevance as the platform for the component model and hosting Web service end points and the platform for portals and Web interfaces." The other two approaches to SOA, he said, focus on user interactions and Ajax-style development, and integration via ESBs and business process management.
Giving developers choices in a service-oriented world is clearly important and Sun's Kaul said Java EE 5 can support both the developer who wants to quickly build simple Web services to the developer building a complex back-end system. "Our intent is to attract basic Java developers and allow them to expand. The perception that EE 5 is complicated is a complete misnomer. We have 5million Java developers and a subset of that does EE. We're trying, as part of the EE SDK, to take Java developers and bring them to an SOA world. EE 5 is a stepping stone. We will be doing more things to help them build services and orchestrate them."
Kassem added: "Our customers are sophisticated and it's important to make it clear that you can't get to the moon on a bicycle. We have it engrained in our DNA to make [Java EE] as simple as possible, but no simpler [than it needs to be]."
Part 2 of this series will examine the Java EE 5 ecosystem and what the state of Java EE 5 indicates about the needs of the user community at present.