XML protocols allow widely distributed systems to communicate with each other over standard HTTP. These protocols have many advantages compared with traditional RPC systems such as CORBA and RMI, including simplicity, transparency, and platform independence. Using HTTP allows clients and servers to run on very disparate systems. Using XML allows the data exchanged to achieve any necessary level of complexity. There are very few situations where XML does not provide an obvious means of encoding information. Using schemas even allows XML's fundamentally text-based format to assign data types to elements so that nontext data such as floating point numbers and dates can be exchanged.
Some XML protocols are based on custom XML applications. Slashdot's Backslash is one example. Others use standard formats such as RSS, XML-RPC, and SOAP. RSS is limited to distributing news headlines and summaries. XML-RPC is more general, allowing the transmission of method calls and arguments to remote systems that invoke those methods and return a value. SOAP is the most general of all, allowing the exchange of XML elements of arbitrary complexity, which may or may not be treated as method calls and arguments.
Throughout the rest of this book, we're going to build multiple servers and clients for RSS, XML-RPC, SOAP, and custom systems. We'll use Java's networking classes to hide the fact that the XML documents we're working with are coming from and going to the network. We're going to focus on the contents of those documents, and how to access and manipulate those contents from inside our own Java programs.