This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
<pre>Author/s : Cay S. Horstmann, Gary Cornell Publisher : Prentice Hall PTR Category :Beginning Java Review by : Jeanne Boyarsky Rating : 9 horseshoes</pre> "Core Java, Volume I -- Fundamentals" is meant to teach Java to developers who already know another language. Or as they put it, "serious programmers ... with a solid background in a language other than Java." This is important as the book assumes a knowledge of programming concepts. As such, the authors can explain OO rather than how a loop works. The syntax diagrams and flow diagrams offer concise explanations.
This edition (the eighth of the book) covers Java 6. I liked that each section was updated to reflect changes to the languages. The authors didn't just tack on some chapters about the new features. They integrated features as they made sense. More importantly, they updated existing examples to reflect the way they would be written if they were initially written today. This gives the reader appropriate exposure as to when to use new features. At the same time, the authors point out what was added in Java 1.4 so you can use it with an older version. There was even a screenshot of Windows Vista in the getting started section.
The book is about 800 pages. Some of this is long classes and API extractions. The authors do highlight important code snippets with explanations first, so it is possible to skip these parts. I did like the feature of the API extractions that showed when methods were introduced.
The authors explain Java in practice well including caveats. There are a few carefully labeled sections that are quite advanced. (proxys and new classloaders.) This is definitely not just an intro book! There was a bit of premature optimization. I don't see a need to worry about whether ArrayList<Integer> is efficient unless it is a problem. At the same time, it is important to know why things work the way they do.
I recommend this book if you are looking to learn Java or have only used certain pieces of it. Just be sure to read the TOC carefully as the authors branch out. For example, the inheritance chapter covers var args and reflection.