0. Theory is important too

Theory, of course, is also very important. Suppose physicists never systematized their theoretical knowledge, but instead exclusively engaged in experiments. That would be a lot of fun, but hardly very useful! Programming is no different. On CodeGym, we have focused mainly on practice and hands-on tasks that let you make progress as quickly as possible. But you can (and we strongly recommend it!) draw knowledge from other sources, above all — from books.

Everybody is different: some people can just read one short lesson on CodeGym and everything is immediately clear; others are more comfortable relying on a variety of sources, synthesizing information and drawing conclusions as they go.

Here are the best Java programming books that you can use in conjunction with your studies on CodeGym. Each of them is tried and true and will definitely not be a waste of your time or money.

1. Head First Java

Kathy Sierra, Bert Bates

By far the best Java book for beginners! Head First is a series of dozens of books on various programming languages. The authors have an original presentation style, which makes the book a quick and easy read. You can also write code and solve problems right in the book!

You can start reading it at any level of CodeGym, even level zero :)

2. Thinking in Java

Bruce Eckel

A Java programmer's bible. This is no exaggeration — every Java developer should read it. It is quite thick, and there's a reason for that. This book is aptly named: it not only deals with specific Java topics, but also explains the Java language's philosophy and ideology, i.e. why Java's creators did things their own way and not like in other languages.

It's not suitable for entirely newbie programmers, but after you can tackle it after completing half of the CodeGym course.

These are the main books for you to read about Java (although there are many more). But beyond learning the language, books can broaden your understanding of programming in general. Below is a list of books that are perfect for this.

3. Java: The Complete Reference

Herbert Schildt

This book is also good for beginners. It differs from the previous one mainly in how the material is presented: here the presentation is more strict and consistent (many people prefer just such an approach). It undoubtedly excels at "chewing up" the material into the smallest bits, sometimes many times.

4. Code: The Hidden Language of Computer Hardware and Software

Charles Petzold

The rave reviews and high Amazon ratings for this book (4.7/5) speak for themselves.

An excellent book for anyone who never took computer science in high school forgot it long ago. Important aspects of a computer's operation and code are explained right in your fingertips. For example, how does a computer actually execute the code written by a programmer? And how does the code tell the computer what we want it to do?

This classic book answers every question. It is the perfect study aid for anyone learning to program without the benefit of a specialized education.

5. Grokking Algorithms

Aditya Bhargava

Algorithms and data structures are essential topics. Much of a programmer's time is spent using them, and it should be effective! For example, how can you sort 1000 random numbers?

Well, there are tons of ways to do this! But they are all far from equally effective. Plenty of books and courses are dedicated to algorithms and data structures, but for people who have just started to learn programming, Bhargava's book is by far the best. It has simple language, detailed explanations with pictures, and it isn't very large volume — just what you need to get started!

Of course, life doesn't stand still: new versions of Java, new books, and new translations are constantly being released. Reviews and collections of new books regularly appear on the CodeGym website, so stay tuned!

Learn Java on CodeGym, read books, and get involved in the CodeGym community, and the rest will follow.