Naked Objects
The Idea
MVC vs Naked Objects
Richard Pawson
- Original idea behind MVC was to .."bridge the gap between the user’s mind and the computer held data"
- Original MVC was later modified .."to become a technical solution that separated input, output and information... User's mind was somehow forgoten."
- Naked Objects appear as an extension and implementation of original MVC idea and also as an important and independent contribution.
- "...objects present themselves to the user in a standardized way."
- "...user gets into direct contact with the model since the objects are shown without being cluttered or camouflaged by fancy graphics."
Naked Objects
- Introduced by Richard Pawson in his PhD thesis
- Also often described by Dan Haywood
MVC vs Naked Objects
TODO
Definition
Software Architecture pattern which:
- Encapsulates business logic onto domain objects
- UI is a direct representation of the domain objects
- UI is fully created by the definition of domain objects using Reflection
First frameworks
"Perfection is finally attained not when there is no longer anything to add...
...but when there is no longer anything to take away...
...when a body has been stripped down to its nakedness."
There are other Frameworks for Java, .NET, C++ and PHP
Benefits
Limitations
- Faster development cycle
- Greater agility
- Empowering style of user interface
- Easier requirements analysis
The auto-generated OOUI is:
- suitable for sovereign apps
- but not for transient apps
Antoine de Saint-Exupery
Definition
- Direct encapsulation of business logic onto domain objects
- UI is a direct representation of the domain objects
- Reflection is used to create automatically the UI from the definition of domain objects
Limitations
- A faster development cycle
- Greater agility
- A more empowering style of UI
- Easier requirement analysis
The auto-generated OOUI is:
- suitable for sovereign apps
- not for transient apps
Naked Objects
What is Apache Isis?
Thanks for your attention
Part One
Naked Objects
Our Presentation
Part Two
Apache Isis
- A Java framework that creates domain-driven apps
- Allows users to concern only about domain objects
Based on Naked Objects
Literature and References
- http://www.nakedobjects.org
- http://incubator.apache.org/isis/index.html
- http://en.wikipedia.org/wiki/Naked_objects
Use Cases
Isis in real world
- It’s great for rapid prototyping
- You can easily gain stakeholder feedback
- Using Isis for your domain model helps prevent business logic creeping into adjacent layers
Schema
As webapp
fully-functional webapp are generated dynamically at runtime just from the domain model classes
Limitations
- Not useful for big projects with need of customized user interfaces
- Backend as it's just "reflecting" the domain model behaviour
RESTful webservice
- allow a custom UI to be built against the RESTful API
- REST is designed to be machine-readable, and so is an excellent choice for synchronous data interchange scenarios
Web Technologies – WS 2012/13
Domain Objects
Isis Programming Model
Time for examples...
Small live demo
Thomas Eck, Jelena Markovic, Bogdan Rebedeu, Spyridon Papadopoulos
Questions?
Apache Isis