<div dir="ltr">Hi all,<br><br>I've shared this with some folks separately, but it's at the point where it's "partially topic complete" enough that I think I can share it more widely.<div><br>I have been writing a book for covering Java as a first language assuming all the anonymous main class changes have landed.<br><br><a href="https://javabook.mccue.dev">https://javabook.mccue.dev</a><br><br>I still need to go back and integrate println, readln, etc. (and obviously go further)<br><br>I am sharing it here partially because I assume some general interest, but mostly to highlight the section where I transition from single files with anonymous main classes to full classes in their own files.<br><br><a href="https://javabook.mccue.dev/multi_file_programs">https://javabook.mccue.dev/multi_file_programs</a><br><br>If it's going to be how this goes, I think I need advice on how to also include enough pre-work so that <font face="monospace">import static java.io.IO.*; </font><font face="arial, sans-serif">and </font><font face="monospace">import module java.base; </font><font face="arial, sans-serif">won't be a jumpscare.<br><br>This blurb from my README I think suffices for additional context<br><br></font>My primary goals with this are<br><br><font face="monospace">* Get the ordering of topics right. By this I mean that every topic covered should have had its prerequisites covered in the topics previous. While "lesson 1: Inheritance" is clearly wrong in this regard, some things are more subtle.<br>* Be a template for other people. This is a book. Not everyone likes books, some like youtube videos, some like over priced udemy courses, some attend College, etc. Everyone has different learning paths. I hope this to be of use to anyone looking to make a more up to date Java curriculum and hope that the vague order of things (which I consider superior to the content<br>produced with the Java of years' past) is carried through.<br>* Write as if the newest Java wasn't new. It's obvious when a book was written before Java 8<br>because it always has newer additions with "addendum: brand new stuff in Java 8." But <br>the order language features were introduced is hardly a good order to teach them. You have<br>to pretend that Java 21 has always been *the* Java. Does it really make sense to show terrible<br>C-style switch statements way before switch expressions?<br>* Write as if the words Object Oriented Programming, Functional Programming, etc. didn't exist.<br>While I understand that these all have definitions and are useful concepts to know about, introducing them early seems to lead to either dogma, rejection of said dogma, or some<br>mix thereof. None of them are actually needed to understand the mechanics of and motivation<br>behind what we would call "object oriented" or "functional" techniques. They certainly don't<br>work as justification for adding getters and setters to every class.</font><font face="arial, sans-serif"></font></div></div>