I have been a programmer since I was a young child in the Gifted and Talent Program in Rutherford, NJ back in 1979. I started programming on Commodore PETs – 4 bit. And then Apple IIs, Commodore 64s and some others. Basic, then Pascal, Fortran, C, C++, Java, JavaScript and more. I am a Senior Field Engineer with Pivotal. Tim is a DZone MVB and is not an employee of DZone and has posted 59 posts at DZone. You can read more from them at their website. View Full User Profile

Core Java - Volume I - Fundamentals

02.13.2013
| 3536 views |
  • submit to reddit
Published by: Prentice Hall
ISBN: 0137081898

Reviewer Ratings

Relevance:
4

Readability:
4

Overall:
4

Buy it now

One Minute Bottom Line

I've a very good reference book for developers new to Java.

Review

Core Java™
Volume I—Fundamentals
By Cay Horstmann, Gary Cornell
Ninth Edition

Find Core Java Volume 1--Fundamentals, 9th Edition at InformIT.

Introduction

The introduction chapters have good details on the background of the development of Java and setting up a development environment. This is really good for someone with little to no programming knowledge or experience and no exposure to Java.

Body

The book follows a very logical flow that would work very well for learning Java and programming. In fact, I can see this book being used as a text book for freshman learning Java in college, I would recommend this to any college student looking to learn Java and enhance their library. The book starts with a good introduction to Java, then the basic programming environment, the fundamental programming structures, objects and classes, inheritance, interfaces and inner classes. The next four chapters deal with Swing and graphics which really seem dated at this point. These probably are left over from previous versions of the book and should probably moved to the end of the book as optional.

A quick introduction to web or Android programming seems more currently relevant and more interesting to beginning developers. There is a very thorough chapter on exceptions, assertions, logging and debugging, which most developers should jump to before graphics programming, This is very helpful to know how to debug and handle errors when you are first programming in a language, it's also helpful to get developers to start thinking Test Driven. The last three chapters are excellent. Generic Programming, Collections and Multithreading are all extremely important topics and are covered very well here. For these three chapters alone I would buy this book.

There are a few items that every developer can learn and even a quick read of a few sections of this book will yield gems like:


Map map = Thread.getAllStackTraces();
for (Thread t : map.keySet())
{
     StackTraceElement[] frames = map.get(t);
     // .. analyze frames
}
I have a few minor issues with the book.

Unfortunately some of the examples are from 2007 and could use some updates. A nice upgrade for this book would be for the sample code to be uploaded to Github.
The book support web site needs a drastic update as it is very out of date.

Some enhancements that would be great to see:

  • This book could use a section on new features / differences in Java 7 in depth.
  • Some mention of items that are coming for Java 8.
  • I also think some in-depth discussion on the JVM would be insightful as an advanced section.
  • Also the mentioned addition of Android or web programming would be a nice touch.


Conclusion
If you haven't programmed in Java before this is a very thorough reference to all the basic the language has to offer. It is also great for C++ developers looking to move over to Java. If you are experience this would best serve as an occasional reference on variety of java topics from collections, synchronization to various Java class libraries. It is very well written and formatted, making it easy to read and to find the sections you need. I enjoy the format with the C++ Notes, Tips and other Notes.
I recommend this book to anyone learning Java or in need of a thorough basic reference. It's amazing to see a book grow and be relevant after so many years and revisions, much the way that Java the language has done so.

Published at DZone with permission of Tim Spann, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Tags: