Learning programming languages for free: GitHub's best guides for Java developers

The 10 highest-ranked, English-language repositories on GitHub designed to help those learning Java.

The most in-demand programming languages and developer jobs across the globe These coding languages are the most in-demand among companies, according to a Hired report.

If you want to learn an in-demand programming language then Java has been a safe bet for many years.

As an enterprise mainstay and web fixture, Java is likely to remain popular among employers for a long time to come.

Though Java may have taken a hit on the mobile recently, with Google announcing it will prioritize Kotlin over Java when making tools and guides for Android developers, Java is still widely used for Android development.

It's perhaps no surprise then, that Java is still ranked as the most popular programming language by the TIOBE index and as one of the programming languages most sought after by employers.

The pace of change in Java has also never been faster, with new releases of the language now being pushed out every six months and plenty of interesting changes in the pipeline, which will tackle everything from improving how the language handles concurrency to optimizing regularly called code.

SEE: Python is eating the world: How one developer's side project became the hottest programming language on the planet (cover story PDF) (TechRepublic)    

There are plenty of free guides out there for learning Java, but if you're looking for a place to start you could do a lot worse than GitHub, which has an array of tutorials, primers, and code examples.

Here are the 10 highest-ranked, English-language repositories on GitHub designed to help those learning Java.

1. Java design patterns

Design patterns offer a template for how to structure code for common software development tasks, based on years of best practice.

This repo provides diagrams illustrating how to implement a wide range of software design patterns in Java, with patterns classified as beginner, intermediate and expert difficulty.

Note, the author recommends reading up on software design principles such as KISS (Keep It Simple, Stupid) and YAGNI (You Ain't Going to Need It) before delving into the design patterns.

2. Interview guide

Badged as "everything you need to know to get the job", this overview of common technical topics has racked up more than 36,000 GitHub stars.

The repo offers a mix of text and diagrams explaining typical data structures, algorithms and more, as well as linking to useful books and tutorial videos. Even though it's tagged as Java-related, the explanations would be useful to anyone learning about computer science.

3. The algorithms

Implementations of common sort, merge and other algorithms in Java, alongside one paragraph explanations, diagrams and demonstrations of the algorithms in action.

4. Android clean architecture

For those looking for guidance on using Java to build Android apps, this offers a sample application built using the clean code approach espoused by well-respected programming guru Robert C. Martin, better known as 'Uncle Bob'. 

The repo links to an accompanying walkthrough explaining the approach taken in more detail and a video showing the application in action.

5. A guide to Java 8

Java 8 may no longer be the most modern version of the language, but with so many developers and organizations still using it, this guide to the essentials should be useful.

6. Better Java

This opinionated list sets out the libraries, practices, and tools that the author perceives as most useful.

7. Android tips and tricks

A cheat sheet of advice for developers using Java to build Android apps, drawing on years of shared experience.

8. Awesome test automation

For those interested in test automation, this list rounds-up frameworks, tools, libraries and software that will come in handy.

9. Algorithms and data structures

An overview of how common algorithms and data structures are implemented in Java, alongside examples of how to answer interview questions.

10. Leetcode answers

Leetcode offers a platform for developers to hone their skills and to prepare for coding tests in interviews. This extensive list gathers up accepted answers to many different Leetcode challenges using Java.

Also see