A birds-eye view of Web services
Chart the best course for your Web services programming initiative
By Frank Sommers, JavaWorld.com, 01/25/02
- Digg
- Reddit
- SlashDot
- Stumble
- del.icio.us
- Technorati
- dzone
Imagine someone walked into your office and, without introduction, offered you a large sum of money if you answered this question
-- in thirty seconds and while standing on one foot: Just what
isa computer program?
That was the question our imaginary friend pondered one late winter morning in her office, located high above the city's bustle.
Rays of sun cut through her office window, settling on her desk and illuminating the crimson letters of the title of the book
that lay in front of her. She let the book rest there, unopened, while savoring a minute of being able to keep the full context
of her concerns in mind, without getting distracted by the details. That book contained those details. Its title read: Magellan.
That was the name of an agency that wanted her to design an electronic cruise ship reservation system. The Internet-based
system would act as a hub of sea travel information, concentrating data, reservations, and payments from many other businesses
-- cruise ship operators, payment processors, airlines, hotels, travel agencies, and the like. Each business would have its
own Website, and many would maintain internal e-commerce systems capable of taking reservations from the Internet. Some would
already provide access via cellular phones; others would operate homepages in dozens of languages and allow payments in many
currencies.
Let's follow our imaginary friend's path in this endeavor. With each step, we will have a set of programs that form the fancied
Magellan Travel system. A common thread between these programs is their use of techniques and technologies that together define
the term Web services. As a Java developer, you already know quite a bit about Web services, perhaps without realizing it. Thus, the journey will
take us through familiar territory, placing that territory in a new context. In one regard, though, Web services aredifferent from anything most Java developers have encountered before. To appreciate that difference, we'll take the elevator
up to our friend's office and catch a birds-eye view of what a Web services program looks like.
A thousand islands, a symphony, and a Web services program
A favorite cruise destination is a collection of about 17,000 islands, quite a few of which are uninhabited. On those inhabited,
natives speak several languages, and their cultures, even religions, might differ from island to island. Yet, all those islands
-- one of which bears the name of our favorite programming language -- collectively form the country Indonesia. If you represented Indonesia in software, it would probably be a type of Collection. Most likely, it would also be a parallel program, as each island component operates independent of the others. Figure 1
shows this island ensemble.

Figure 1. Indonesia: An ensemble of islands. The islands communicate via a (maritime) interconnection network, following protocols
established by tradition and law. Copyright: National Geographic Society, 2001.
However, you might prefer a river cruise down the slow-moving river Isar in the German state of Bavaria, visiting the town
of Munich along your way. Ninety-two years ago, that city witnessed an amazing musical performance, where the premiere of
a new symphony featured 858 singers and 171 players -- an ensemble of 1,029 musicians. The conductor, Gustav Mahler, coordinated
this giant group's music making so that no performer would miss a beat. His symphony came to be known as the "Symphony of
a Thousand."
- Digg
- Reddit
- SlashDot
- Stumble
- del.icio.us
- Technorati
- dzone
Resources
- David Gelernter depicts a world where software components mirror aspects of real-world activities, and where software agents
interact with one another in his book Mirror Worlds (Lightning Source, December 1992; ISBN019507906X). That book's vision goes far beyond the current Web, or even Web services;
current technologies, however, might serve as starting points in constructing Gelernter's "mirror worlds"
http://www.amazon.com/exec/obidos/ASIN/019507906X/javaworld
- Gelernter and Nicholas Carriero's "A Computational Model of Everything" (Communications of the ACM, November 2001)
http://www.acm.org/cacm/1101/1101toc.html
- The ideas I discuss in this article are also indebted to Gelernter and Suresh Jagannathan's Programming Linguistics (MIT Press, August 1990; ISBN0262071274), which discusses programming language design in light of an "ideal software model."
If you are familiar with Progamming Linguistics, you may have noted that types, names, and descriptiveness are recurring themes in Gelernter's treatment of programming languages
http://www1.fatbrain.com/asp/bookinfo/bookinfo.asp?theisbn=0262071274&vm=
- Luca Cardelli's work has greatly enhanced our understanding of type systems in object-oriented and distributed environments.
His article "Type Systems" (Digital Equipment Corp., Systems Research Center) presents a concise overview of this subject
http://research.microsoft.com/Users/luca/Papers/TypeSystems.pdf
- All W3C-related Web services and XML specifications and proposals are available from the W3C homepage
http://www.w3c.org
- The Java Community Process (JCP) facilitates the introduction of new APIs into the Java system via Java Specification Requests
(JSR)
http://www.jcp.org
- The JCP includes XML- and Web services-related JSRs
http://www.jcp.org/jsr/tech/xml.jsp
- The W3C's XML Schema specification
http://www.w3c.org/XML/Schema
- The SAX project homepage offers the API reference and design documents for all things SAX
http://www.saxproject.org
- DOM specifications are available from the W3C
http://www.w3c.org/DOM/
- JRS 102 aims to standardize JDOM
http://www.jcp.org/jsr/detail/102.jsp
- The JDOM project offers a Java implementation of DOM
http://www.jdom.org
- Dom4j offers SAX, DOM, and JAXP support
http://dom4j.org
- Apache's XML-related subprojects include the Xerces parser and the Xalan XSLT engine
http://xml.apache.org
- The JAXB API is still being designed as part of JSR 31
http://www.jcp.org/jsr/detail/31.jsp
- The XSL project page
http://www.w3c.org/Style/XSL/
- The XSLT project page
http://www.w3.org/TR/xslt
- JAXP is being developed as JSR 5
http://www.jcp.org/jsr/detail/5.jsp
- This W3C recommendation outlines the rationale for XML namespaces
http://www.w3.org/TR/1999/REC-xml-names-19990114/
- The SOAP specification activity is currently continued in conjunction with defining the XML protocol
http://www.w3c.org/2000/xp
- The XML-RPC binding for Java is being worked out as JSP 101 for JAX/RPC
http://www.jcp.org/jsr/detail/101.jsp
- The W3C provides a recommendation for the WSDL
http://www.w3.org/TR/wsdl
- The UDDI specifications and access to existing UDDI registries are available from the UDDI Website
http://www.uddi.org
- ebXML's Website provides specifications, as well as business case studies
http://www.ebxml.org
- JSR 67 is the locus of activity around JAXM specification
http://www.jcp.org/jsr/detail/67.jsp
- Browse JavaWorld's Java and Web Services Index
http://www.javaworld.com/channel_content/jw-webserv-index.shtml
- Subscribe to JavaWorld's free Enterprise Java email newsletter
http://www.javaworld.com/subscribe
- Speak out in JavaWorld's Enterprise Java Discussion
http://forums.idg.net/webx?50@@.ee6b80a
- You'll find a wealth of IT-related articles from our sister publications at IDG.net