This "tutorial" clearly has some glaring faults. I must confess I ignored it almost completely because some of those you mention:
"This book claims to be aimed at both new programmers, experienced object-orientated programmers and programmers experienced with procedural languages."
Beware of any book that makes this claim. 99.99% of the time they are completely unable to fulfill it. If they use the terms "definite reference" at any point as a description of their book, make that 100%.
"The first downside is that the tutorial is practically useless without Internet access. Many sections refer you to the Java API documentation on the Sun web site for further information. Not being able to refer to the web site will leave you confused in the coming sections of the book. All of the answers to the exercises are on the Sun web site so you need that access to validate your solutions. Don't even bother to try working through this book on the train!"
There's not much you can fault the book for here. Java is almost useless without the API documentation at hand, and the API documentation is almost useless unless in Javadoc-style hypertext form.
Java is not C. It's not a systems programming language whose power is mostly in the minimal core functionality. It's an object-oriented application programming language, whose power is in great part due to an extensive standard library and the core objects on which its built.
Most bad Java books I know duplicate the Javadocs in the text as a sorry excuse to charge for an extra 400 pages. If you really need a hard copy of the Javadocs, buy one, but the usual practice is to keep either an open Internet connection or a downloaded copy (or both) and check it as you work.
"Next, the book does not introduce concepts and build on them. Many of the better programming tomes that I have read introduce each concept and then build on those."
The most glaring fault of this and almost any other introductory book or "tutorial" I have read on any programming languages. In particular, this is why I almost instantly dropped the Dietel & Dietel "How to Program Java" book on Java my college required and picked a better book.
Any book that starts asking you to do something complex before you understand the basics, much less what you're doing, is an immediate failure as an introduction. Unfortunately, it seems some authors are worried that unless you get the readers to code some GUI at once on the screen they will not be motivated to learn, but then why would they have picked up the book in the first place?
"My last big problem with this book is the quality of the code in the examples ... These formatting problems include non-indentation between braces and other issues that will confuse a new programmer."
Worse than that, they will encourage new programmers to follow those bad habits. After all, it's in the book, and it will take them some time before they stop imitating the style of the book.
There are better introductory books out there, but the best recommendation I think has already been made, but I'll repeat it anyway: get "Thinking in Java" by Bruce Eckel, from his "Thinkin in *" series (C++, Python, now C# and who knows what else).
I downloaded that book "to start with", planning to buy some O'Reilly books and sell my cursed Dietel&Dietel, and it was the only reference I needed (besides the Javadocs) to learn Java as a language. I still keep it in my hard disk, along with "Thinking in C++" which I got as well to supplement my old C++ reference.
Note that these are good Introductory Books (TM), and while they do that job extremely well (IMO) they are not complete references or deal properly with advanced topics. They are not meant to.
You'll have to get some books on specific topics (threading, awt/swing, maybe jdbc, j2ee, etc) after you get a decent command on the language, and the O'Reilly books are a good supply of those, but I don't think their books are as good tutorial/introductions as these.
Freedom is the freedom to say 2+2=4, everything else follows...