Below is a list of references I have been using on my journey.
Introductory Book: Think Java: How To Think Like A Computer Scientist
For anyone considering learning Java, this is the first resource you should examine. It’s written by a computer science professor who was unhappy with the huge and complex textbooks first year computer science students were given. This book is only 266 pages (including appendices) and uses the Java language to introduce students to basic computer science ideas. Because it’s so short it can be read rather quickly so you get a quick overview of the syntax of the language.
This book was a great intro to Java, object oriented programming in Java, and basic problem solving with the language. The language is presented in a very elementary and thorough way so the basics are extremely easy to absorb. If you’re curious about the language and just want a quick peek to see if it’s something you want to learn I highly encourage you to give this book a read.
Text Book: Starting Out With Java
This is a text book used in universities for introductory computer science courses. Unlike the book above, this book is very thick (over 1000 pages) and chock full of detail. However, it is very easy to read. The concepts are presented in depth with accompanying illustrations. The end of the book also covers algorithms and data structures so this book can be used to prep for interviews.
I found myself using this book in tandem with the video course (listed below). Whenever a topic was presented in the video course I would look it up in this book to get more detail.
I have a hard copy of the book but the link above gives you access to the pdf version.
Video Course: Udemy Java course
When possible, I like to supplement my learning with a video tutorial from Udemy. I am a visual learner and it helps me to see another person writing code, making mistakes, and discussing their approaches to a problem.
This course covers everything from the basic syntax of the language to working with databases, networking, building unit tests, and more.
I am only about 30% of the way through this course but from what I have seen everything is explained thoroughly and the pace is perfect for someone very new to the language. Also, the instructor and his team have responded to questions in less than 24 hours.
As I said, I am just beginning my journey to learn Java so this list is only the beginning. If you have any recommendations to add to my list, please feel free to leave them in the comments below.