Another Way of teaching Java
The traditional way to teach the language Java assumes that students already know programming concepts and are motivated to learn Java. One covers all aspects of each language feature in an orderly fashion. All (that I know of) Java textbooks are written in this way.
We are now teaching Java for middle/high school students and have developed what we think is an better method for teaching Java that should also be suitable for some undergraduates. It is based on a sequence of motivating examples, starting with graphics for visually-based programs, and progressing through more advanced concepts.
Language features are taught as they are required within the examples. And no effort is made to thoroughly cover every aspect of a feature that is not required at that time.
Template programs are given for more advanced features that need only be understood loosely the first time.
The art of this style of teaching lies in choosing examples that are interesting, but that use a minimal progression of features.