This book is an in-depth learning and teaching resource for the understanding and programming of TCP/IP networking in Java. It covers 'everything you can do to a socket in Java' and explains when and why you might - or might not - want to do that. It is addressed both to professional programmers and college students in first or second year networking courses.
The book covers TCP and UDP using both blocking streams and non-blocking channels, and also SSL secure sockets in both blocking and non-blocking modes, unravelling the mysteries of the SSLEngine in the process. Particular attention is paid to the neglected topics of multi-homing and multicast. A unique chapter on client and server architectures uses a quantitative approach rather than the usual design-patterns approach, leading to architectures with predictable performance rather than just coding elegance.
All you need to know about:
- Using Streams and Sockets for blocking TCP/IP
- Using Buffers and Channels for non-blocking and multiplexed TCP/IP and UDP
- Designing servers for scalability and predictable performance
- Working with blocking TLS/SSL using Streams and SSLSockets
- Unlocking the mysteries of non-blocking TLS/SSL with the JDK 1.5 SSLEngine
- Using DatagramSockets and DatagramPackets for blocking UDP and multicasting
- Outlining special programming considerations for multihomed hosts
- Managing the transition from IPv4 to IPv6 in Java
- Extensive Java index
- Accompanying [SVL] website XXXXX with source code download
- Comprehensive code samples and some exercises.
Esmond Pitt is a Melbourne consultant and author with a distinguished 28-year international career in the design and implementation of systems software products. A well-known Java advisor, he has published a book on Java RMI, and is a member of Sun's Expert Group on Distributed Real-time Java. His IT practice encompasses compiler construction, networking, and security. He is a Fellow of the Australian Computer Society.
I was an early reviewer of this book and I admire its economical and thorough but eminently readable style, lucidly describing complex issues without ever outstaying its welcome. This book combines academic rigour with a practical approach deeply informed by real-world experience and I have no hesitation in recommending it to developers of all experience levels. Experienced engineers building network-centric infrastructure or services should not be without this book. In fact, any Java developer building distributed applications such as J2EE, Jini, and Web Services should read this book — at least to understand the fundamental implications of networking on application design and implementation.
Michael Geisler, Sun Microsystems