Java remains one of the most popular programming languages to learn, thanks to its long history and reputation for being easy to pick up yet difficult to master. After you get through the initial tutorials and become more comfortable in the language, finding out how to progress further can be difficult. This article is intended to help with that, offering ten useful resources that will help you further improve your skills and work your way to becoming an expert programmer. Let's start.
Book, Joshua Bloch
The Effective series of programming resources are some of the most commonly recommended, thanks to their compartmentalised format that focuses on delivering well-explained lessons, complete with full source code.
Online or Book, Oracle
These official tutorials written by Java caretaker Oracle range widely, introducing everything from introductory topics to user interfaces, helpful APIs and generics. Language features and syntax are the highlight here. The book equivalent is called The Java Tutorial, A Short Course on the Basics. It's worth noting that the tutorials were written for Java 8, so the new features of Java 9 and 10 won't be covered — a common issue with resources for a language that has remained popular for much of its 23-year lifespan.
Book, Eric Freeman and Elisabeth Robson
Once you get past the painfully 2000s cover, Head First Design Patterns offer a handy rundown of commonly used patterns that will save you development time. The visual format and humorous tone should keep things interesting, too.
IBM's intermediate Java programming tutorial covers the more advanced tools that should be in any Java developer's toolkit, including potentially thorny subjects such as inheritance, abstraction, interfaces, regular expressions and so on. While the guide was written in 2005, it remains useful to this day.
Online, Jayaprabhakar Kadarkarai
The Codiva site provides a Java IDE and compiler, allowing you to write or investigate Java online, and it even works on your smartphone. More importantly, once you sign into the site, you can see a large number of Recommended Projects that show you how common tasks can be solved in Java. The website also has its own tutorials that are worth checking out, including Data Structures and Algorithms and Popular Algorithms.
One of the most common reasons to learn Java is to begin programming for Android. With that in mind, the Android Developer Guides can be a good way to get started with making your own real apps for smartphones. Similarly, Google's Codelabs project also provides a good range of tutorials on common Android topics.
Project, Richard Schneeman
As we mentioned in our rundown of essential Python resources for intermediate programmers, actually coding is one of the best ways to learn a language once you've mastered the basics. However, it can be difficult to know where exactly to get started if you don't already have an idea in mind. CodeTriage is a project designed to provide that direction, letting you find and join open source projects to solve bugs, answer questions and generally become involved with proper Java development.
Online, University of Helsinki
This Finnish-made, English language resource takes you through twelve weeks of learning object-oriented programming, using precisely the same content as those in the university itself. The first part is designed for beginners, but by the second part you may begin to find topics that you don't understand completely so it's worth at least cruising through the lessons until you get to one that you don't fully understand.
Online, Princeton University
This course is another good option, teaching important algorithms and data structures over a twelve week period. Rather than just text, this course includes videos, quizzes and projects to get your teeth into. Helpfully, while Java is used throughout, these lessons are applicable to many different languages and thus will be a boon for your future career.
Online, John Purcell
Prefer more visual learning, with people talking and animations and so on? This YouTube course starts slow, but builds into fairly advanced topics quite quickly. Have a look at the playlist and explore topics that you're not already familiar with.
What Java resources can you recommend? Let us know in the comments.