The Java programming language is one the of most important languages today. Universities teach Java as the first language, Android developers write their numerous apps in Java, and thousands of backend developers resort to Java for their (micro)services. Here you’ll find the top five resources for getting started with Java.
Head First Java
I’d recommend to start 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 text book, so be prepared for having actual fun learning Java. Be suprised how much you’ll know after having worked through that book.
Java by Comparison
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.
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.
Head First Design Patterns
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 on that read with Head First Design Patterns. It features the similar learning style as Head First Java but teaches how to design your classes.
Functional Programming in Java 8
And last but not least, I recommend watching the unique Venkat Subramaniam explaining you how to program in a functional way in Java. Happy watching!
Simon has taught Java at University, co-authored a Java book, and brought Java applications into production in the real world.