by Harold, Elliotte Rusty
Java, intended for use on the Internet, was designed to support networking over TCP/IP. In fact most of Java's network support is unchanged since version 1.0. This book's examples use Java 1.1 and Java 2 (v1.2 and 1.3).
The author assumes you are a Java programmer familiar with AWT as well as Swing. He starts by claiming Java makes network applications easier to write than other languages. A bold claim.
In order to understand how to get the most from Java Network Programming the author goes into extensive detail on URLs, MIME, HTML and HTTP. But by chapter four you are writing simple apps to demonstrate I/O issues, then threads. In chapter six you are introduced to the InetAddress class so you can get out and about. Using just this you can write your own nslookup. Neat. Each Java networking concept is introduced, explained, demonstrated in a simple app and then incorporated into something useful. There is a lot of sample code, all downloadable.
Most of the book effectively deals with simple file transfer in order to focus on networking issues but in chapter 18 Remote Method Invocation appears which enables you to run distributed programs. RMI underlies network-aware applications. Toward the end of the book the author differentiates between protocol handlers--which deals with interactions between systems--and content handlers. Network-delivered content is often handled as a MIME type. This is carried to a logical conclusion in the last section on the JavaMail API.
Overall, Java Network Programming is a readable book which makes a complex subject accessible in a logical and structured manner. And he is right, network programming does look easier in Java. --St