rr808
I'm a Java programmer who's been at it for 20 years. Its really difficult to find a definitive modern Java guide right now because there are multiple paradigms that are popular.

There is the old school - everything has an interface, with a concrete implementation and test implementation. OOM ORMs probably Hibernate. Lots of long winded naming.

Add some functional features in Java 8, streams, lambdas but still kind of a hybrid. Scala & Kotlin distracted much of the purely functional people but has influenced Java a lot to complicate what normal Java looks like.

Spring has a huge influence and probably is still the defacto framework to build in.

Sprinkle in some Clean code culture - (4 line functions) which got really popular but has died off.

Add reactive programming. You need async in single threaded languages like JS and Python, and you need async in high performance applications. Its toxic for most projects but has nonetheless been enthusiastically adopted and corrupted many a code base.

I like Vertx because its a complete break from Spring and much simpler with less magic, but it hasn't really gained enough popularity.

Java 17/21 added a bunch of new concepts like Records which some people have adopted Java into DDD style that is completely new.

So "Java" can mean so many different styles now its impossible to have one recommended textbook. Bloch you can't go wrong but is kinda basic construction rather than higher level guidance. I like "Vert.x in Action" but in general its not a good standard Java text. I'm kinda curious what others will suggest.

dcminter
Can I commend "Effective Java" (3rd edition seems to be the latest) by Joshua Bloch ?

I thought it was one of the pithier books & it gives both good advice and explanations of why it's good advice in each case.

goostavos
My $0.02: I cut my teeth on Liang's Introduction to Java Programming (9th edition). I think it's a fantastic book. The course I was taking only covered the first few chapters, but I ended up working my way through the whole book. I recall all the exercises nailing that sweet spot of being within reach with what I knew, but still challenging and rewarding.

There's some stuff that felt dated even for its time. For instance, GUI programming with AWT / Swing. It's super disappointing to spin up a GUI and have it look... well, like Java GUIs do. As a student, it can be a bit demoralizing to spend a bunch of time and effort only to end up with something that looks so stupid and unfinished.

On the whole, though. Great book.

Tomte
Cay Horstmann‘s books are great. The latest edition has just been completed, and if the two?volume set is too wordy for you because you already know a programming language or two, get Core Java for the Impatient.
dgfitz
You got a job teaching Java and you’re not confident in your Java? Was there like… an interview?
steve1977
I would maybe start with current editions of these books, not outdated 15 years old ones.
tealpod
For understanding Core Java, especially OOPS this book greatly helped me.

'The Java Programming Language' - by James Gosling.