What this book covers
Chapter 1, Getting Started with Network Programming, introduces the essential network terminology and concepts. The networking support that Java provides is illustrated with brief examples. A simple client/server application is presented along with a threaded version of the server.
Chapter 2, Network Addressing, explains how nodes on a network use addresses. How Java represents these addresses is introduced along with support for IPv4 and IPv6. This chapter also covers how Java can configure various network properties.
Chapter 3, NIO Support for Networking, explains how the NIO package provides support for communication using buffers and channels. These techniques are illustrated with a client/server application. The support that NIO provides for asynchronous communication is also demonstrated.
Chapter 4, Client/Server Development, covers how HTTP is an important and widely-used protocol. Java provides support for this protocol in a variety of ways. These techniques are illustrated along with a demonstration of how cookies are handled in Java.
Chapter 5, Peer-to-Peer Networks, discusses how peer-to-peer networks provide a flexible alternative to the traditional client/server architecture. The basic peer-to-peer concepts are introduced along with demonstrations of how Java supports this architecture. FreePastry is used to illustrate one open source peer-to-peer solution framework.
Chapter 6, UDP and Multicasting, explains how UDP is an alternative to TCP. It provides a less reliable but more efficient way for applications to communicate across the Internet. Java's extensive support for this protocol is demonstrated, including NIO support, and how UDP can support streaming media.
Chapter 7, Network Scalability, explains how, as more demands are placed on a server, systems need to scale to address these demands. Several threading techniques supporting this need are demonstrated, including thread pools, futures, and the NIO's selector.
Chapter 8, Network Security, discusses how applications need to protect against a variety of threats. This is supported in Java using encryption and secure hashing techniques. Symmetric and asymmetric encryption techniques are illustrated. In addition, the use of TLS/SSL is demonstrated.
Chapter 9, Network Interoperability, covers how Java applications may need to exchange information with other applications that are written in different languages. The issues that impact an application's interoperability are examined, including byte order. Communication between different implementations is demonstrated using sockets and middleware.