'Learning Java' is a well-written exploration of Java's features. However, its support for learning the language is poor. Ironically, given the book's history, 'Exploring Java' would have been a better title.
After two chapters introducing Java, chapters 3-8 cover the language basics, chapters 12-14 cover network and Internet programming, and chapters 15-20 cover the Swing GUI toolkit (the Swing chapters take up around a quarter of the book). Other chapters cover various topics like text, i/o, JavaBeans, Applets and XML.
The book is not organised into parts and, apart from the fact that simple topics are generally discussed before complex topics, the course of discussion can feel arbitrary. For example, the XML chapter is the last in the book, 14 chapters away from the text chapter, and 10 chapters away from web programming. This can make progress through the book feel a little haphazard.
It is clear that the reader is assumed to have a programming background, and the basics are covered very tersely (e.g., on p.90, do/while gets, "the do and while iterative statements have the familiar functionality").
There are no exercises. This means that the book cannot be used for self-study, and is of limited use for study with an instructor: instructors will have to use their own ingenuity or find another source for exercises. There are plenty of examples, however, almost all of which work as advertised.
The book is at its best when most discursive, (e.g., chapters 5-7 on Java's style of object-orientation). The authors explain their topics well when they give themselves the space: for example, five pages on internationalisation is not enough space, but I found the section on sockets (15 pages in a chapter on network programming) quite useful.
For its first two editions this book had the title 'Exploring Java'. 'Exploring Java' is still a better title and fits the book better than 'Learning Java'. As a discussion of Java's features, with the reader released from the pressure of having to 'learn', the book works very well. The pitch of the book makes sense: the reader knows a bit of Java and would like a more rounded appreciation. As a book for learners, it is flawed: there are no exercises; the structure is piecemeal rather than progressive; the pitch level is not consistent.
I could perhaps recommend this book for either (a) an experienced programmer who wants to become familiar with the details of Java without bothering too much about the basics (although in this case something more focussed on a problem domain might be preferable); or (b) a learner who has a basic course under their belt and wants to explore the language a bit more.