Author: Cay S. Horstmann & Gary Cornell
Publisher: Prentice Hall
Aimed at: Java programmers wanting to master associated technologies
Reviewed by: Alex Armstrong
This second volume in the Core Java series, which deals with advanced topics, has been updated for Java 7 in its ninth edition.
For the revision outdated material has been removed and the latest Java APIs are covered in detail.
The new edition also benefits from the inclusion of a bullet point list at the start of each chapter outlining what it covers, numbered sections and subsections, an enhanced, slightly "looser" layout; the net result being the addition of almost a hundred pages.
There is one major change to the book's structure in that the chapter on scripting, compiling and annotation processing now comes ahead of the one on distributed objects. I can't see any particular rationale for this and the chapter outline in the Preface preserves the previous order.
What do you expect from a book whose title states Advanced Features?
Some programmers would say topics like generics and exceptions. However that isn't what is implied here. Rather the book looks at the whole collection of associated technologies that aren't really core to the Java language but could just about qualify on the grounds that they are commonly used.
The book starts with streams and files. Chapter 1 covers the APIs for input and output including the new file I/O API and has in-depth discussion of the Path and File classes added in Java SE 7. The chapter concludes with a look at regular expressions and Java 7's NIO2 library which makes common operations such a reading all the lines in a file very convenient.
Next we have XML and how to load, validate and parse it - both SAX and XPath are covered and we are shown how to generate XML documents with and without Namespaces. The chapter rounds out with XSL transformations.
Networking from sockets to email is the topic of Chapter 3 and then the JDBC approach to database access is explored in depth in Chapter 4 amd Chapter 5 is on Internationalization, which Java provides wide ranging support for.
Chapter 6 is devoted to "Advanced Swing" which roughly speaking means tables, trees, progress bars, component organisers etc. Following on we have Advanced AWT - mostly how to get around its limitations.
Chapter 8 brings us to JavaBeans, Chapter 9 focusses on security and Chapter 10 deals with scripting - getting a scripting engine and using annotations. Chapter 11 covers distributed objects and looks at RMI (Remote Method Invocation) in detail. Finally the book rounds off with a look at implementing native methods an interfacing with C in particular.
Like its companion Core Java Volume I Fundamentals this book isn't for the beginner. Rather it is aimed at the professional Java programmer. Both books include a good deal of code. Some listings in this volume extend over ten or more pages so it is good to note that the code can be downloaded from the books' support website.
The two books together cover the language and the technology and provide a firm foundation for any Java programmer. This second volume is as well written as the first and is characterized by the same intelligent discussion. How useful it is to you depends on which of the technologies and techniques it covers that you want to know about. Each of the chapters provides a good introduction to the basics of the subject. It takes you far enough for you to continue on to a book dedicated to the topic.