The Artima Developer Community
Sponsored Link

JCP Watch
Froth and Compatibility
A Conversation with Rob Gingell, Part II
by Frank Sommers
January 20, 2002

<<  Page 4 of 5  >>


The Problem of Underspecification

Frank Sommers: If differences in XML-based data encoding could lead to interoperability problems between Web services, wouldn't it be better to use Java byte code as data encoding for Web services, and turn Java into an open-source Web services standard?

Rob Gingell: If you define "Web services" as a network architecture that uses HTTP as a transport, SOAP as a session layer, and XML as a presentation layer, then you couldn't literally do that. Cynics might argue that that was the whole reason "Web services" was defined the way it was. You could, of course, have a different protocol architecture defined as you suggest—Jini does exactly what you describe.

Jini addresses the sort of issues you're concerned about: It solves the problem of specification by sending an implementation around to compensate for a service's underspecified elements: "You don't know about this, but here's the code that makes it possible for you to know." Jini thus addresses the semantic problem that data, alone and underspecified, potentially presents.

The basic problem is underspecification, which results from laziness, obfuscation, and/or failures of imagination. Various technology bases differ in how easy, or hard, they make it to underspecify something that appears to be working. The abstract version of this problem relates to how one creates a class hierarchy that you can rationally subclass without creating the problem you describe. For XML, or any other data structure, it's about creating data that can be extended and still be useful by those who don't understand the extension.

In Jini environments, the only real common practice you need is to use Java. From that presumption, an application can provide you all the semantic extension you need through mobile code. Mobile code, in turn, is enabled by the abstraction of the JVM, which makes the underlying hardware's instruction set unimportant. This seems like a great idea, unless your business depends on what that instruction set is, or on implementation-defined behaviors. But that's an area for cynics to delve into.

<<  Page 4 of 5  >>

Sponsored Links

Copyright © 1996-2018 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use