Improving J2EE's Web Services Support
Saturday, June 04, 2005
When people who've written a definitive book on a technology decide that technology isn't good for much, I pay attention. My friend Richard Monson-Haefel has just done this
for JAX-RPC. I was a reviewer for his book, J2EE Web Services
, and I still think it's the best book on the topic. Yet today he views JAX-RPC as "terribly flawed".
Technologies produced by committees of competing vendors don't have an especially good track record. In spite of this, the specs that make up the heart of J2EE have been quite successful. Yet nobody ever accuses these technologies of being too simple, and as I read it, the heart of Richard's complaint about JAX-RPC is that it also is too complex. Translating between services and objects has inherent complexities, but it's certainly plausible that the Java world can produce something better, especially now that the core WS-* specifications have stabilized.
And there's an obvious starting point for doing this: Microsoft's Indigo
. Mapping between web services and the Java environment isn't all that different from mapping between web services and the .NET Framework world, which is a large part of the problem Indigo addresses. Even better, a number of Microsoft's best people spent several years working on Indigo's design. There's surely something there that Microsoft's competitors can learn from. The J2EE world might even bite the simplicity bullet hard and decide to combine a range of technologies for distributed computing into one, just as Indigo has done.
There's a long tradition of the Java world being "inspired" by Microsoft (EJB's debt to Microsoft Transaction Server comes to mind), just as there's a long tradition of "inspiration" flowing the other direction (C#, anybody?). For any Java technologist hankering to create a replacement for JAX-RPC, there's an obvious place to start: understand Indigo.