Java Network Programming

The book gives a detailed and meticulous description of the Java network programming API.
It starts discussing higher level HTTP based APIs involving URLs and HTTP connections and then descends into lower level APIs covering TCP and UDP sockets, channels and non blocking I/O.
It does not describe network programming techniques for non-trivial applications in the context of the Java language (you might expect this given that the title doesn’t mention the API at all).

A pretty long introduction of 90 pages to networks, Java streams and threads sort of makes the book self contained with virtually no externally referenced material.
Also, when standards, protocols or theoretical aspects are involved, a brief introduction is provided with only as much detail as necessary to follow the ensuing Java related discussion (except for secure sockets where the theory is a bit complex and the introduction a bit lacking).

Code examples are complete and have no references to external/downloadable code.
They are also very simple, usually just a few lines to illustrate a method/class.
The errata web page covers several minor inaccuracies, especially those found in the first chapters.

I recommend this book if you need to develop low level networking code like implementing your own server/communication protocol.
Otherwise many existing frameworks/libraries offer higher level abstractions and useful functionalities built on top of the Java networking API described in the book.