BlueJ is a closed source, no cost JavaLanguage JavaIde specifically designed for learning. It is fundamentally visual, you see all the classes in a project, and inheritance/composition relations displayed in a visual workspace. Also, there's no need to have a wrapper class for a main() method and I/O at all -- you can instantiate any object, any time, and those instances also appear visually on a workbench, and you call their methods directly via a context menu, inspecting the results. It hardly gets more interactive than that, and you can teach/learn OOP concepts and programming fundamentals without having to digress into API / support platform calls for a single second.
We had great fun playing around with BlueJ, but is there something like it for other languages?