By Marcus Green August 2002
I have to declare a bias with this book, I am a fan of Peter van der Linden. I first came across Peter when reading newsgroup postings in the java.lang.programmer group. He is also the keeper of the most excellent web based Java FAQ at www.afu.com. Peter is a man with opinions and knowledge and the ability to express them. Peter is possibly not the biggest fan of Microsoft but he backs up all his opinions with good evidence. When I was studying for the Sun Certified Java Programmers exam I used his book for the JDK1.1 as one of my primary texts. When I later wrote a web based tutorial on the subject I found I kept quoting him as he has such an excellent way of expressing technical ideas.
Peter worked for Sun Microsystems for 14 years and has around for the birth of Java. In chapter he refers to a meeting in 1996 where he asked a question of the James Gosling, main designer of the Java language. I mention that because it shows how close to the history and development of the language Peter has been. Just Java comes out under the Prentice Hall/Sun imprint so you can assume it has a certain degree of "official" Sun approval.
This new version of the book book has 1077 pages, nicely laid out with appropriate screen shots and diagrams but with zero wasted space or padding.. There are none of the multi-page rambling code examples that plague some books. Code examples are tight, readable and relevant. It was written for JDK 1.4 and so covers some of the new topics like regular expressions, the assert statement, and the new I/O (nio) classes. The book comes with a CD with some very interesting software, not all of it strictly Java related. It includes the Gnu C/C++ compiler, Emacs, TCL Perl and python language kits. I was slightly taken aback to discover the CD included a complete pure Java based database system called McKoi that I have never heard of before. I was taken aback because I read just about all the discussion forums, magazine articles, announcements I can find and I had never heard of this product before. It looks like Peter was reading more stuff than me. Check out the JdiskReport included on the disk, it is an excellent antidote to the creeping belief that Java is purely for server side work.
One of the good things about getting the source code included on the CD is that it avoids the possibility of code being scrambled between author and printed page. I'm not aware of any errors, but every non trivial technical book has them and Peter maintains errata pages for the book.
Peter is an excellent writer, he can bring a topic like Java to life, he writes in a way that blows the dust off. Each chapter has a light relief section with a story or insight into some aspect of the world of software. With a less talented or insightful writer this might run the risk of alienating the reader but with Peter it is an integral component and enhancement to the text.
I have been programming in Java since 1998 and I have the version of this book for JDK 1.1. I thought I was well up on developments in the language till I read this book. I read the popular Java related websites such as JavaLobby and JavaRanch but reading this book taught quite a few entirely new things whilst giving some terrific additional explanations of topics I was already familiar with. His insights into I/O and the portability of I/O are specially worth the purchase price.
To give an apparently trivial example Peter gives an excellent explanation of packages, access modifiers and directories. He gives an illuminating explanation of how packages are used to solve the problem of name conflicts and how internet domain names are usually used to come up with those names. Throughout the book Peter comes up with useful analogies from other areas of life to explain the concepts used in Java. When explaining the uniqueness of package names he compares with the uniqueness of street addresses.
A nice example of his laconic style of delivery is where he says "The Java Language Specification tells us that package names should be formed from Internet domain names. If an organization that is writing software for sale doesn't have an Internet domain name at this point, they should go into some other slower-paced line of work."
Another quotable quote is where Peter is explaining just how large are the numbers that can be represented by floating point primitives. "A googol is 10100 meaning that it is only a 1 followed by 100 zeros. Is the largest double precision number bigger than Madonnas capacity for self promotion?. No, we have to admit it probably isn't that big."
A single book cannot cover all aspects of Java in depth and Peter errs on the side of covering the basics in depth in the first half of the book and touching on other important Java technologies in the rest of the book. Thus in the first half issues such as Keywords, Types, I/O,Object Orientation, and threading. In the rest of the book some of the more "glamorous" advanced topics are covered in lighter detail such as JSP, EJB XML and JDBC. Many of the chapters have exercises at the end so you can check you really have absorbed the information and the book has heaps of URL's for looking up further information.
This is not an idiots or dummies book and no page is intentionally left blank.It is written with a single authors voice rather than a committee. If you don't know what a for loop is or have never come across an if statement this is probably not the place to start. If you have some experience with just about any other programming language, even just a few VBA macros and you have a desire to learn Java, this is an excellent place to start.