Part of why the class takes so long to cover a HelloWorld program is that I explain each item, provide counter-examples (wrong class name, wrong signatures for main(), multiple main()s, adding other classes and methods to the file, etc. And seeing the error messages that come with different and interpreting them. We're not just copying a canned program off the board into a text editor (even at that, how good a transcriptionist do you think a 13 year old is? They can find _amazing_ new errors in 10 PRINT "HELLO".)
And yeah, there's still a lot of black magic. But I contain it, identify it, and cut away at it through the course of the class. Coming back repeatedly to the same subjects as I do so turns out to be a pretty effective way of fixing concepts in students' minds.
I appreciate that you might do it differently. Python was among the languages I considered for the class, I've blogged my reasons for going to Java. I revisit my choice of language after each school year. Each year so far, I've come back to Java as best serving the purposes of my classes from among the choices I have, warts and all it does the job.
I do expose the students to python, we go out to python.org and spend time on the online interpreter. We also try out ruby and C using online versions.
The sorts of expansions on the basic lesson that you describe are things that I already do. It just doesn't happen in the same class period as the HelloWorld program. There isn't time, and even if I did add more to one period, it then wouldn't stick, at least not in the class format I've got to use.
I also think you have some misapprehensions about how much material you can throw at a classroom full of kids using balky old computers. No matter what language I use, there's a limit to what you can reasonably expect to cover while still providing time for students to go through the mechanical parts of the exercise (typing and running the program, interpreting the results).
So far I haven't found Java to be an obstacle in that regard. And Java allows me to do what I want in class.
You also want to know why I use the tools I do in class. That's a whole different discussion. But the short answer is that we use the tools we already know, to keep the number of new things to a minimum at any one time. We'll be introducing an IDE later (Greenfoot.) I'll be using its facilities to teach object oriented concepts more fully than I can with text, as well. Plus, once we've gotten used to using it as an IDE, we'll be rolling in the elements of the Greenfoot framework. That will give us graphics and sound, which we'll use to get immediate feedback on the operation of our code.
I discuss my use of the command line when introducing programming in another of my posts. The purpose of the class is to know the system as well as they can from as many angles as they can, among them programming. This isn't a programming class, it's a general computers class that I've decided to expand beyond "keyboarding" and MS Office boredom.