Naked Objects, unveiled at OOPSLA in November 2002, is a groovy open source framework for developing Java software that exposes objects and their methods directly to users. Using reflection, the objects and their methods are discovered and made available in a generic user interface (screenshot).
The goal is to create software that consists of "behaviorally complete" objects which genuinely embody the principles of object-oriented programming. Developers Richard Pawson and Robert Matthews have written a great book, available in full text on the Web, that documents the project and explains their motivations.
The approach is controversial, as you might expect -- usability guru Larry Constantine makes it sound like the death of all he holds holy -- but there's a definite appeal in creating objects that can be used immediately, making flaws in the design evident.
I'm still undecided on the overall usefulness of the framework, but even if the generic interface is too wonky for wide use, it looks like a great boon in several areas:
- Teaching object-oriented programming
- Designing objects for the model portion of a model-view-controller application
- Hacking together quick Java applications for personal use