I love how the book explains the concepts and includes step-by-step tasks to practice programming in Java. It's a pretty comprehensive book, though I would recommend the beginners to start with Headfirst Java and delve into this book afterwards.
I usually ration the number of 5s I give, but this one is particularly deserving. There is a crazy amount of online support for this book, so I think someone with an online package, especially with Revel, can master the basics of the Java language. The explanations are straightforward. It requires focus and concentration, but it's pretty comprehensive. I like CS books written by English-Second language authors because they remove language complexity from the already complex concepts of CS. I used this last year, and I still remember how good it was compared to books I used afterwards. There's a lot of practical implementation here. Yeah, one-stop shop for introductory computer science using Java - learning Java also helps with other languages, like C and Kotlin (a Java derivative); verbose, but it's a great pedagogical language for training purposes.
One piece of advice in a CS program, if you don't use a language for a while, you'll forget it (just like real languages). So, don't take breaks in a CS program or in sequential classes requiring the same languages.