Beginning Java is quite possibly the most comprehensive and readable tutorial for the Java programming language available today. The author takes a language-centered approach to showing off Java features, beginning with basic data types and language keywords, along with an explanation of the fundamentals of object-oriented programming and design. This strategy makes the book an excellent introduction for beginning programmers who learn Java as their first programming language. (More experienced programmers can skim the early chapters and get to more advanced topics.)
Early on, the author uses command-line examples to show Java basics without getting bogged down in the details of AWT interface programming. He also presents some great advanced topics, such as the chapter on file I/O in Java, which you won't likely find in any other volumes on Java. Other especially useful expert topics include the Java threads, database and JDBC programming, and even socket programming using Java's networking classes. The book closes with a very clear explanation of remote method invocation (RMI) for distributed computing and details on how to deploy Java components on the Web in JAR files.
Beginning Java is truly a rare find: both beginners and experts can use this book and it proves that Java is a great language for teaching programming. As Java becomes the language of choice for the industry, we can expect more books to approach the language in the same way. With Beginning Java, the author seems to have a head start on the future of how to teach programming.