Using the pattern, you only need to write the domain objects, everything else is autogenerated by the framework.We are pleased to announce, today, the release of Naked Objects 3.0.All you need to do is provide a property (actually just a setter) for the type of service that a domain object needs access to and Naked Objects will inject an instance of that service type whenever the domain object is brought into memory.
Going back to touch on Constantine's point about the UI being vital; end users these days are not expecting a good UI as apposed to a good functionally sound domain implementation, or even vice versa - they want both.
The Naked Objects architectural pattern is well suited for rapid prototyping.
How does Naked Objects differ from other frameworks that can auto-generate a user-interface and/or persistence layer from POJOs, such as Ruby on Rails, or Grails?
The answer is that most such frameworks employ the MVC pattern, with the result that much of the business behavior ends up in the Controllers that sit on top of the domain entities.
If the UI generated by the framework is rigid in structure and not intuitive to users, this could limit the adoption of Naked Objects frameworks such as Naked Objects MVC.
My previous observation of having a sound domain model and not necessarily having a good UI should be qualified by the times in which this software was written.
I am not entirely unsympathetic to their stance and I certainly think a good UI helps, but without a sound domain model a fancy UI is worthless.
The same cannot be argued for the reverse (I know since I've developed a few such apps, a good few of which were deemed a success and are still in operation today).
For those not familiar with earlier versions, Naked Objects is an open-source Java-based framework that takes a POJO domain object model and turns it into a complete, executable application.
It auto-creates a user interface that is a direct reflection of the domain model, offering the option of either a rich-client interface or a pure HTML interface as shown below (you can view both on our online demonstration application); and it auto-creates a persistence layer using Hibernate.