How to learn Java
Tags: learningtocode, cleancode, java, programming
Published: 2020-02-18 11:04:54

---
title: How to learn Java
published: true
date: 2018-11-08 16:44:02 UTC
tags: learning-to-code,clean-code,java,programming
canonical_url: https://medium.com/@simonharrer/how-to-learn-java-7301d7613eb6
---

![](https://cdn-images-1.medium.com/max/1024/1*FuUGVTsLFZ-eKARHbOb66Q.jpeg)<figcaption>Photo by <a href="https://unsplash.com/photos/2FPjlAyMQTA?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">John Schnobrich</a> on <a href="https://unsplash.com/search/photos/learn?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption>

Quite often, I’m asked: _Hey Simon, how to learn Java?_ Here are the top five resources I typically recommend. Happy reading. Happy learning!

#### Top 1: Head First Java

![](https://cdn-images-1.medium.com/max/425/0*vhXNsDVLyBe162NB.jpg)<figcaption>Head First Java by Kathy Sierra and Bert Bates</figcaption>

I’d recommend starting with _Head First Java_. I did the same 13 years ago and I still think this is the best book to start learning Java. It’s not your usual textbook, so be prepared for having actual fun learning Java. Be surprised how much you’ll know after having worked through that book.

#### Top 2: Java by Comparison

![](https://cdn-images-1.medium.com/max/404/0*fGfIVxfA3GahtdSD.jpg)<figcaption><a href="http://java.by-comparison.com">Java by Comparison by Simon Harrer, Jörg Lenhard and Linus Dietz</a></figcaption>

Next, I blatantly recommend reading the book I co-authored: _Java by Comparison_. We’ve taught Java for over six years at University, and from that experience, we’ve written _Java by Comparison_. Our audience in mind has been students knowing enough Java to write simple programs but lacking practice and a mentor that can guide them towards cleaner and more readable code. It features a unique before/after approach comparing bad code to better code, so you can learn step-by-step to transform code into even better code. It’s the book I wished I had when I finished reading _Head First Java_.

#### Top 3: Effective Java

![](https://cdn-images-1.medium.com/max/404/0*wK-9hbFPhvUkM9st.jpg)<figcaption>Effective Java: Third Edition by Joshua Bloch</figcaption>

Now, we move on to _the_ book on Java, the classic item-style book that provides uncountable insights how to use Java the right way: _Effective Java_. Just read that. It’s simply mandatory when you want to call yourself a professional Java developer.

#### Top 4: Head First Design Patterns

![](https://cdn-images-1.medium.com/max/432/0*Fn8gAiqTTsjJaUsc.jpg)<figcaption>Head First Design Patterns by Eric Freeman and Elisabeth Robson</figcaption>

When your programs start to become bigger, you’ll start to feel pain when organizing your code in methods, classes, and packages. That’s when you need to learn about software design. I began my journey with _Head First Design Patterns_. It features a similar learning style as _Head First Java_ but focuses on how to design your classes instead.

#### Top 5: Functional Programming Java 8

{% youtube 15X0qFtBqiQ %}

And last but not least, with more and more people adopting a more functional programming style in Java and everywhere else, I recommend watching the unique Venkat Subramaniam explaining how to program in a functional way in Java 8. Happy watching!

#### howtolearn.de

These [top 5 resources to learn Java originally appeared on howtolearn.de](https://howtolearn.de/books/videos/java/beginner/java). Feel free [to browse all the other topics there](https://howtolearn.de/) as well.