Starting up again...

I've been away for a while - traveling, working on product, celebrating my little boy's first birthday, and loosing my Outlook .pst file. But it's time to start again and Don's post about Steve Loughran and Edmund Smith's Alpine work is the perfect motivation. Alpine is a new Java WS kit that doesn't bother with JAXRPC's standard object mapping layer. Don noticed I was mentioned in the Alpine paper's acknowledgements and felt my fingerprints on some of the thinking, including his favorite quote:

My favorite quote (that channels a certain New Hampshire native who shows up in the acknowledgements):
 
We believe that only two categories of web service developer exist: those who are comfortable with XML and
want to work with it, and those who aren’t but end up doing so anyway.

I can't take credit for the phrasing, but I definitely agree on this point. Don also pointed out another quote:

If an XML-centric design were to prove equally unworkable, this might well mean that the promised flexibility of XML messaging infrastructures is not easily accessible to languages of the “Java generation” (in which we include C# and VB.NET), all of which share a similar static type system and object model. Should these
languages not prove flexible enough to exploit the full potential of XML, then it may be that the promise of XML messaging systems, both REST and SOAP, will only be realised by the next generation of platforms, be they extensions of existing languages, such as Comega, or XML runtimes such as Apache Cocoon and NetKernel by 1060 Research

This led to a lot of comments...

Dare was quick to blame WSDL and XSD, noting that POX/REST/AJAX systems don't have this problem. Certainly the customers I talk to who have done POX/REST systems are moving toward WSDL and XSD because they want metadata about services in order to facilitate reuse. Without it, they don't have a clear picture of what their systems are doing - or how to reuse them in other contexts. For a closed system, lack of descriptive metadata is fine. But if you want something open and reusable across apps, it really helps to have it.

MarkN suggested that the problem was deeper still: with XML itself being too complicated. I won't even go there; I don't know about you, but I don't feel like starting over. XML is totally tractable.

David threw up his hands, exclaiming that it was object model mapping that made Web services useful in the general case. He echoed Dare in bemoaning the complexity of WSDL and XSD and the inability to reign in the people who are addicted to it.

So having digested all that, here's my thinking...

I love that Steve and Edmund are going about creating the WS stack they want. It certainly nice to see people moving away from JAXRPC 1.0 as the definitive WS word in the Java world. I believe all WS tools should provide access to raw XML if desired. I believe JAXRPC 2.0 allows that, but I don't know if it would satisfy their requirements.

I reject the notion that we need to start over yet again with something simpler than XML. We might need something better than WSDL and XSD, but when I've argued for that in the past, the response has always been that that's what people have settled on and that alone makes it worthwhile.

Finally, I reject the notion that XML-centric design requires new languages and / or runtimes. It's not that those things wouldn't be useful, it's just that they aren't required. If vendors applied more creativity to solving the problems without reinventing the specs, languages, platforms, etc. and if developers were realistic about the extent to which it is possible or even desirable to hide XML, we would get to a much better place without starting over yet again.

 


Posted May 31 2005, 02:48 PM by tim-ewald

Comments

Dare Obasanjo wrote re: Starting up again...
on 05-31-2005 4:52 PM
>For a closed system, lack of descriptive metadata is fine. But if you want something open and reusable across apps, it really helps to have it.

Interesting. So Yahoo! Web Services, the Flickr API, Bloglines API, del.icio.us API, and every RSS feed on the planet are closed systems that aren't open and reusable?

Thanks for clearing that up for me. :)
Randy wrote re: Starting up again...
on 05-31-2005 5:33 PM
There you go again Dare, lining up with the "dead enders". :)
Dan Diephouse wrote re: Starting up again...
on 06-01-2005 6:55 AM
Dare,

Fickr, delicious, and bloglines all have a metadata of sorts - the documentation. But it seems to me that for APIS of larger size WSDL can be very helpful in describing the API.

As for RSS there is already metadata - the spec.
David Bryan wrote re: Starting up again...
on 06-01-2005 7:22 AM
Actually, I don't think it's the "object model" mapping that makes Web Services useful. I think Web Services that expose or reflect an object model are horribly broken. I think that being able to map Web Service requests into the native type system has enormous benefits for those of us who choose to use statically-typed languages that use squigly brackets.

I would much prefer that XML serialize into "structs" instead of "objects" to clarify and formalize the difference between serializing an object model and creating a type-safe and friendly way to address XML messages in a Web Services architecture.

My view of Web Services is exceedingly simple:

What is a Web Service?

It's a url, a request schema, and a response schema.

How should we describe our schemas?

Explicitly and simply. The root element is blah, its children are blah, blah, blah, and their children are blah, blah, etc.

How should a web service be implemented?

Using the constructs that map most naturally to the language of choice of the Web service developer. For C++ / Java / C# developers, this means that there should be a piece of infrastructure code that knows how to read a xml instance document and map it to a set of classes that reflect the schema design in a convenient and type-safe way.

Val wrote re: Starting up again...
on 06-08-2005 7:28 PM
Interesting entry! I have also shared my thoughts on this matter on my blog at:
http://radio.javaranch.com/val/2005/06/08/1118236863771.html
Eric Newcomer's Weblog wrote It's the XML, Stupid!
on 06-16-2005 1:03 PM
In the early days of SOAP and WSDL, while doing the conference rounds I would often be asked, "What's the most important thing about Web services?" I would always say "XML, XML, and XML." Not everyone agrees with me, but this very fundamental question has recently come up again in the important new paper about the shortcomings of JAX-RPC and other related topics. (If you haven't read it yet I strongly encourage you to do so.) One of the authors, Edmund Smith, elaborated on some of the thinking behind the article in this interview posted yesterday. Edmund is correct that it is not as convenient for programmers to deal with the XML as a separate and distinct language but this is inevitably the right approach. It may seem like a benefit to view XML entirely through a Java (or any other language) filter, using native data types and generated classes,...
xqglpg wrote re: Starting up again...
on 02-13-2009 6:55 AM

rNderX  <a href="qotqdfbmkotw.com/.../a>, [url=http://gkfjpzphuqad.com/]gkfjpzphuqad[/url], [link=http://yqxhxzxsecvl.com/]yqxhxzxsecvl[/link], http://sdoqllsoldrh.com/

new hampshire credit repair wrote new hampshire credit repair
on 12-25-2009 7:44 PM

I like the way things are done around here.