How I am Going to Learn Java

December 13, 2019

I work in web development. I’m a full-stack developer that leans more front-end. This means that I primarily code in one language: JavaScript.

JavaScript has grown into an ecosystem in and of itself — learning a new JavaScript library is akin to a Java developer picking up Go.

I’m familiar with ES5, ES6, Vue, React, and Node.js. This is a lot of variety in one language.

I enjoy it, but I need to move outside of JavaScript in order to learn JavaScript better. I also want to prepare for the JavaScripocalypse, when WASM or Rust or whatever finally take us over and I’ll regret that I was mostly a one-trick pony.

So, I have decided to learn Java without the benefit of relevant work projects to guide me. This is how I’m going to go about doing that.

Why Java?

JavaScript is an imperative language. This is great… sometimes, but it makes it almost impossible to learn either OOP or FP from first principles. I believe the best way to about doing that is to learn something that everyone recognizes as an OOP language first, then someday down the line, I’ll learn an FP language. Most people recommend I learn OOP before FP.

So, why Java over Ruby, C++, or Python? Because it seems that most enterprise web-focused companies use Java on the back-end. My company included.

Java also has a plethora of both academic and non-academic material on the language, and is an assumed default in a lot of writing. I believe that if I learn Java, I should be able to read C++ fairly easily, just like JavaScript has let me read Python fairly easily.

Java is a broad language that is a great gateway to a lot of different languages. If I know Java and JavaScript, Python will be a breeze to pick up after. I can’t say the same for learning Python and JavaScript.

It’s just a good general-purpose language that has a lot of paradigms that are harder to learn in JavaScript.

Stage 0: Tooling

Devin said use IntelliJ. IntelliJ is a LOT. It's extremely comprehensive and very good at being an IDE. In the course I ended up doing, we're required to use NetBeans, and honestly, the simplicity of it is a little bit more appealing right now. I highly recommend using an IDE for Java because you can compile and see your output by clicking one button, but that doesn't mean you should use all the features that autofill an immense amount of code for you. Write every line yourself.

You also need to install a JDK (Java Development Kit). Luckily, this has gotten easier with OpenJDK. Download the latest LTS version, and default for whatever other settings are there.

That's all you need to start writing Java.

Stage 1: Syntax

It's very difficult to find Java courses that are up to date. I originally started going through a course that covered Java 7, but Devin said there have been substantial changes between Java 7 and Java 8. The minimum Java version to start with today is Java 8. This generally means that you need to look for courses that were made past 2014-2015.

I couldn't find any I liked, so I turned to reddit. People were raving about this course from the University of Helsinki. I wasn't going to try it because it's not a video course, but I'm very glad I did.

The link for that is here. I highly recommend it. It's thorough, yet practical.

If you need to use video courses, there's this highly recommend course on Udemy.

Stage 3: Practice

I’ll be practicing by going through the Java track on Exercism.io.

I will also be making a bunch of practice projects afterwards. I'll probably start with Robert Heaton's Programming Projects for Advanced Beginners.

Stage 3: Academia

The possibilities of MOOCs and formal, academic online education really open up when you know Java. I really want to go further into OOP and also learn about algorithms and data structures.

Stage 4: Capstone Project

This is still a complete unknown for me.


If you liked this post, get updates about new posts by signing up to my infrequent newsletter.