While looking for a different text to use in one of my courses, I found the text Learning Java by Niemeyer and Knudsen. This book has done nothing but impress me. While in the end it might make for a difficult text to begin programming in Java for the lesser experienced, as many O’Reilly texts can be, it is going to be a solid addition to the bookshelf of an aspiring information technologist. Hopefully this title will continue to evolve.
For a few semesters, I had been using Java in 60 Minutes A Day by Rich Raposa. That text was well received by the students and the content spanned the core material I needed for the class as well as advanced topics (Swing, network programming, JavaBeans, database programming) that interested students could engage if they so desired. Unfortunately, the book has become significantly dated. It is based on Java 1.4 and so is missing topics introduced in Java 1.5, generics being one of more important topics.
I contacted the publisher about a year ago (maybe more) to inquire as to the future of the Raposa title. They replied and said the intention is to not continue it. I explained my interest and support of the book, and even offered to help update the contents, but they had no interest.
Last semester, I used Hebert Schildt’s, Java: A Beginner's Guide, 4e. For use in the course, there were a few problems. One of the more important ones was the lack of any treatment of the Java Collections Framework. Unfortunately, I didn’t realize this until we were covering the Collections Framework in class.
What is stranger still is that Schildt did include a chapter on Java Generics. Why generics are discussed but the Collections Framework omitted, I will never understand. Most who venture to learn Java will be more apt to use the Collections Framework more than they would define their own generic classes. For a good starting reference this seems problematic. It did have include chapters on Swing and multithreaded programming but such topics were thinner than what Raposa had provided. The student opinion of the Schildt book was low as well. They found aspects of it sufficient but expressed that there was room for much improvement.
Fresh from the disappointment of Schildt, I more carefully examined the contents of Niemeyer and Knudsen. I noted that it covered all of the topics I planned to include in my course (or that students would need). It covered the topics Raposa had with the exception of database programming. However, it also included chapters on processing images, audio and the Java Media Framework as well as more advanced text processing. Probably the more crucial inclusion for the course, though, was the chapter on Java and XML. The treatment of XML in the text was sufficient enough, perhaps supplemented by online readings, that I felt comfortable eliminating the XML text that I usually include.
More than the inclusion of particular topics is the degree to which the authors explain the topics. It is more than a casual treatment. There are many in-depth explanations and discussions of interesting language features and obscure library elements (or at least those typically used by the public). For example, a short section in Chapter 16 discussed the
java.awt.Robotclass; and the
Matcherclasses discussed in the text processing chapter, Chapter 10.
From an experienced user’s point of view, I have consulted the text several times on miscellaneous topics and found that the authors provide deeper insight than usually included in a book with a title suggesting the reader will “learn” a topic. My bias is to assume that such types of titles imply a something suited for a beginner but not one with experience. This book presents itself well to both crowds.
It might be argued that the book’s inclusion of such topics render it intimidating or difficult for the novice. There might be some truth to that. Perhaps for an introductory programming course, this text would be a little heavy. For my course, where general competence with programming is assumed, the book seems to be a good choice. Students might have to read passages twice or consult with the instructor for further clarification (all things we want students to do anyway) it will be a while before the needs of such readers will outgrow what the text has to offer.