I have been a programmer for going on twenty years. I started with Basic, Fortran and a bit of Small Talk. Mixed in there were the more popular C and C++. Over the years I have kept up my knowledge learning C# and Visual Basic, pretty much be programming in Visual Studio for about the last decade or so. However recently I had to learn Java for a big contract I was working on.
The good news? It is not dissimilar to C and the other C derivatives languages, if you have programmed in one of these languages you are on good footing to learn Java. Yeah the syntax is different, but the data structures and declarations will look familiar and be easy to adapt to.
I could have done a course to learn Java, however I have always been a learn at my own pace type of guy, so went looking for the best books around to teach me. Below are the ones I would recommend, there are a few that did not make the list, because there are some really bad Java books out there.
The first book I opened was “Starting Out with Java: From Control Structures through Objects with Video Notes on CD ” by Tony Gaddis. Why did I choose this one? Well I cheated a little, I have a son at a prestigious university known for their IT graduates, so asked him to find out what books the college was recommending for learning Java, and this was it.
I wasn’t disappointed, the code examples were excellent, the exercises just the right side of challenging, while teaching you the basics. Even the end of chapter questions were great. It can be a little slow if you are use to programming syntax already, but it is for anyone that wants to learn from scratch.
The second book I would recommend is “Absolute Java” by Walter J. Savitch. This is a step up in skill, while the book covers the basics well, it is not as strong as the above recommendation. If you already have some basic programming experience then you could jump straight in to this one. It covers all the basic topics, pretty fast, but then starts to get dirty with some harder concepts, such as copy constructors and their use. I also felt the code examples were more real world, closer to the stuff I have been required to do over the last couple of decades.
As your skill level improves the third book I would recommend is “Effective Java” by Joshua Bloch. I would not start with this book if you have never seen Java before, it is more about making you a better Java programmer.
A significant number of advanced concepts are covered really well, such as “Enums and Annotations”, “Concurrency” and “Generics.” You must have covered the basics before throwing yourself in to this one, but it will be worth it. A number of lessons and recommendations in the book I used effectively in active projects, including some gems that guys with years of experience had missed.
If you are looking for “Best Practice Java Programming” look no further.
The final book to put on your shelf is one I still refer back to on a regular basis, “Java The Complete Reference” by Herbert Schildt. As the name suggests, this is a great reference guide. I made the mistake of trying to start with this book, it was the first Java book I purchased, but I really struggled. It is not going to help you learn Java, but once you have the basics down, you are on to a winner with this one. The section on “Multithreading” was particularly good as were the User Interface references.
If you make it through those four books, you will be a Java Ninja! I was and now am on my third big Java project. If you have any other recommendations, drop them in the comments below.