For those of you who haven’t heard of BlueJ, it’s a development environment designed for teaching Java. And it’s really, really shiny. This is really the first development environment I’ve seen for teaching programming that I would actually want to use as a teacher.
You start off designing your your class hierarchy graphically. You can define your inheritance by dragging arrows between classes — in this sense, it teaches some simple UML by the virtue of being able to see things graphically. You can also define abstract classes and interfaces and such. And here comes the kicker: you double click on any one of these class objects to edit the code in the class.
Other things that are neat are things we’ve had in Smalltalk: a code pad window, where you can write arbitrary Java expressions and evaluate them. Also, you can right click on any class in the class diagram and click “new object()” — this will then create a graphical representation of this newly created instance in a small window at the bottom of the IDE, where you can right click on the representation and send messages to it. What I mean by this is that a graphical window pops up asking for the arguments, you type those in and hit OK, and it returns the result, like in Smalltalk.
Even better is the integrated support for JavaDoc. This allows you to learn to use JavaDoc, but even better is the fact that the code view has a drop down box that lets you choose “Interface” where the JavaDoc rendered class documentation is immediately shown! And if that’s not enough, BlueJ has support for Unit testing so that you can learn testing methodology in parallel with Java programming and class documentation.
This is really such an amazing system that it’s worth a download just to play around with it.