One thing I have learnt over the past 8 years teaching Java to high school students . . . do it fast and do it right. Teach OOP right away; out of the box – from lesson 101.
The approach of doing “one class, one main method” for the first year, in my opinion, does not serve the interests of the students. Why? Because it is just plain wrong. Nobody codes like that – and their Java exams will demand an OOP approach; so why teach anything different? In addition, OOP coding is a massive paradigm shift for them. Nothing else that they learn at high school is vaguely similar ; so teach it right, because the OOP journey is not easy for them. By contrast, . . . if then else, for loops, while loops, etc etc are easily taught; you dont need to dedicate one whole year to such fundamentally easy topics.
So here is my 40-page grade 10 (and grade 11) OOP Java textbook version 8 – well tested and totally successful with the average student who chooses IT as a matric subject.