There are many reasons to learn Java. It's without a doubt the most widespread and widely used programming language today.
It's being used in both small and enterprise applications all over the globe and can be used to create just about anything, thanks to the flexibility of the language.
According to Stackify, it's both the most used and most in-demand language of 2017:
And as of September 2018, Java is still at the top in both influence and demand according to TIOBE:
Since Java is considered somewhat more complex and harder to learn than some other languages, having good, clear, and concise literature to turn to is an absolute must.
Where to Find Java Books for Beginners and Experts
There are countless Java courses, tutorials, articles, and material about Java available online, but for some, having a book is still a necessity to learn. Learning from a book can be a game-changer for some, including me, and it's healthier to stare at a book than a computer screen.
Here are a few places where you can get some good books from:
- Packt Publishing - My personal favorite. Packt books never let me down and I'm always excited to get some new ones. Unfortunately, these books can be quite expensive but you can catch discounts, which aren't rare, and buy them for cheap - around $10-15 each.
- Amazon or eBay - These huge platforms provide both brand new and used books. Sometimes, these used books are sold for a really cheap price and you can get your hands on some great books that would usually cost a fortune, for small cash!
- O'Reilly Media - O'Reilly is also a good publishing company which releases tons of new books on various topics. They also published numerous free Java books which could be quite useful if you're on a tight budget. Though, their paid counterparts take the cake.
- Manning Publications - Manning published multiple books regarding Java which I found really informative and well written. They also published my favorite OCAJP guide! Manning offers books on various other languages and topics, so feel free to take a look at those as well.
- Bookstores/Libraries - Depending on where you live, there might be a local bookstore or library that has some good books. However, this option can be a hit-or-miss. These usually don't come in so many varying flavors and can be outdated. In my experience, some bookstores had up-to-date, great programming books and even some translated Packt books, within weeks of their release.
I'll dedicate this article to narrowing down the sea of material and books online, to a reasonable list of books I would recommend to any aspiring or well-seasoned Java developer.
Note: All prices listed below are as of the time of this writing and may be changed at any given time.
Best Paid Book
Effective Java, Third Edition by Joshua Bloch.
What makes it the best: Thought of as the best Java book ever by many, this book is a must-have for both beginner and intermediate Java developers. It's well updated and covers even Java 9 as of this moment.
Best Free Book
Think Java - How to Think Like a Computer Scientist by Allen B. Downey & Chris Mayfield.
Price: Free ($35 for paperback)
What makes it the best: This is a great entry level book published by O'Reilly. It covers all relevant topics in Java, from the most basic to the more advanced. As far as I've heard, it's being used on certain universities and highschools.
Best Beginner Book
Head First Java, 2nd Edition by Kathy Sierra & Bert Bates.
What makes it the best: This "Brain-Friendly Guide" is an ideal book or beginners. It doesn't require any pre-requisite knowledge and guides the readers through games and quizzes. It's sadly going a bit out of date and currently covers up to Java 8. This is perfectly fine for a beginner, of course, but it will need an update in the upcoming years. That being said, make no mistake, this book isn't outdated. Java 8 is still being actively used by a huge proportion of developers.
Recommendations by Category
1. Effective Java, Third Edition by Joshua Bloch
Amazon score: 4.8/5
GoodReads score: 4.5/5
Effective Java is a must-have book from this list. It contains numerous practical advice for both entry-level, as well as intermediate programmers. The book provides great explanations for things we encounter on a daily basis, leaving you with in-depth knowledge of your tools, from a new perspective. This kind of knowledge can change the way you look at things and can really feel empowering.
2. Java: Learn Java in One Day and Learn it Well by Jamie Chan
Amazon Score: 4.5/5
GoodReads score: 4.2/5
Don't be fooled by the low price-range of this book. Even though it's sold quite cheap it provides a great deal of useful information on Java. It focuses more on learning the basics than in-depth detailed explanations and aims to help people with little to no knowledge on the subject learn fast.
3. Spring in Action, 4th Edition by Craig Walls
Amazon Score: 4/5
GoodReads score: 4.2/5
Spring is without a doubt the most wide-spread and widely used Java framework nowadays, used by giant companies around the globe. Adding Spring as your skill can be very useful and quite frankly, fun. I found it a joy to start working with Spring and I'm currently mainly making projects with it. This book is a bit harder to understand than some listed here and isn't targeted at novice developers, so try to avoid it if you're not already familiar with the topics. It currently covers Spring 4, which isn't really ideal, but it's still a good book.
4. Java 8 in Action by Raoul-Gabriel Urma, Mario Fusco and Alan Mycroft.
Amazon Score: 4.7/5
GoodReads score: 4.3/5
Another great book written by Raoul-Gabriel Urma and published by Manning. It covers the new features in Java 8, which isn't the newest release but can help already experienced developers deepen their knowledge, especially if the theory isn't their strongest side. Even though Java 8 isn't the newest release, a lot of developers still didn't migrate even to Java 9, while Java 11 is soon-to-be.
1. Introducing Java 8 by Raoul-Gabriel Urma
GoodReads score: 4/5
This book is targeted at Java developers who still didn't enter the waters of Java 8. That being said, it's not the newest book, since Java 11 is soon-to-be, but it covers the biggest and most prominent upgrades from the previous version - Java 7, which some people still use. Java 8 is still being used in the regular, so it's not a miss to give this book a try.
2. Think Java - How to Think Like a Computer Scientist by Allen B. Downey & Chris Mayfield.
GoodReads score: 4/5
A book from the well-received series "How to Think Like a Computer Scientist". It's published by O'Reilly media as a free book. As far as I've been informed, it's used at universities to guide students into this language. The topics are quite informative and easy to follow. As other books from this series, it helps you think like a computer scientist and teaches you concepts that are applicable in other programming languages, not just Java.
3. The Java Language Specification by James Gosling, Bill Joy, Guy L. Steele Jr., Gilad Bracha and Alex Buckley
GoodReads score: 4/5
The official documentation for Java 10, as well as all other releases, and all upcoming releases written by the one and only James Gosling - the founder of Java itself. This book is a bit convoluted and perhaps too technical for some, so please don't attempt reading it if you're not already an advanced user of the language. It's completely different from all other books listed in this collection and it's not for everybody, but I think that reading it through can be useful for people who are seriously into this language.
1. Head First Java, 2nd Edition by Kathy Sierra & Bert Bates.
Amazon score: 4.2/5
GoodReads score: 4.2/5
The head first series of books is widely known for their "brain-friendly" approach. These books target complete beginners for these topics and do a great job introducing the readers to them with puzzles and quizzes. They are generally known for being friendly and simple to understand for beginners, so this is a great starting point.
2. Java: A Beginner's Guide, Seventh Edition by Herbert Schildt
Amazon Score: 4.4/5
GoodReads score: 4.6/5
The seventh edition of this book is well up-to-date and covers everything from the ground up, all the way to Java 9. Some people find this book a refreshing one, even for intermediate programmers, even though it's targeted at aspiring students and novice programmers. By explaining topics in a detailed manner while not straying away into too much detail, the students are engaged to think and understand the concepts and ideas.
1. Grokking Algorithms: An illustrated guide for programmers and other curious people by Aditya Y. Bhargava
Amazon Score: 4.6/5
GoodReads score: 4.4/5
Aimed at entry-level and intermediate programmers this book provides great practical examples that can improve your everyday work. Popular algorithms such as sorting and searching are important to know and are covered in this book.
Learn Java to Open New Career Possibilities
Java has held the first place as an influential programming language for years, and I doubt it's going to be thrown over soon. It's a great language to learn, and even though it's considered somewhat more complex than other, I think that most people should be able to start with Java without many problems.
It's also a great language to start learning if you've not made up your mind in which fields you'd like to work. Since Java can be used in pretty much any field, you can play around and see which one you feel the most complete working in.
Books are a great resource to learn about programming languages and other technical topics, but at Stack Abuse we've found that online courses are extremely useful to pick up on information quickly. For Java, one online course that is worth taking is the The Complete Java Masterclass
As for other types of langauges, Python has been gaining a lot of attention recently and just entered the top 3 languages, as reported by TIOBE.
If you're interested in reading about best Python books, we've got that covered too!