Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Systems Similar to NakedObjects?

A while ago I read the book on Naked Objects and was excited by the ideas. Writing only my core business logic and having the UI automatically generated? Sign me up!

Further, the potential goes beyond that. This can be a great tool in domain modeling. With the ability to directly invoke one's objects, one is encouraged to directly use one's domain objects, whereupon one can discover...

  • Flaws
  • Useful interaction patterns (for UI implementation, particularly pertinent if one holds the view that a UI is basically "scripting the domain objects")
  • New features.

To this end, I'm interested in any systems similar to Naked Objects. I did some leg-work, such as searching for hits under strings like "Direct Manipulation UI", but haven't found anything useful.

Do you know of any work along similar lines? I'd prefer something in PHP or JavaScript and that doesn't assume I'm running a Linux box. I know of NakedPHP and Spiro (can't find documentation for that), but they're both basically Naked Object implementations for PHP and javascript, respectively.

Do you know of any other systems?

like image 602
R. Barzell Avatar asked Feb 24 '15 20:02

R. Barzell


2 Answers

As co-author of the Naked Objects book, I would like to add my view.

It is not uncommon that people really like the concept of the naked objects pattern, but don't like the particular UI. You didn't say how long ago you looked at the implementation, or indeed, which one. The two main open source implementations (there are a few others, but less established) are:

  • The Naked Objects Framework, for the .NET platform
  • Apache Isis, for the Java platform

both of these have more than one UI. But, let's presume that you have looked at all the default UIs and are not happy with any of them. First, most people who use either framework in an enterprise setting end up customising the default UI quite a bit, whether using just .css, or with additional JavaScript - but still keeping to the concept of a 'generic' UI that is created dynamically.

More recently, Dan Haywood and I took the idea of the naked objects pattern much further forward with the introduction of theRestful Objects specification - an ultra-pure REST API that works for any rich domain model. Both the two naked objects implementations now also implement the Restful Objects specification. The point about this is that using the RO API it is now relatively easy to design new, radically different, UIs (generic, or fully bespoke) that talk to a server implementation of RO. In other words, it is relatively easy to create your own client-side implementation of the naked objects concepts, re-using either of the two main server-side implementations.

Spiro, which you mentioned, is our first attempt to create a library of building blocks for creating such a UI, using JavaScript (TypeScript, actually) and Angular.js. And the cool thing about using the RO spec, is that you could run the same client against any server implementation. I recommend you take a good look at it.

like image 72
Richard Pawson Avatar answered Oct 23 '22 00:10

Richard Pawson


I hit upon a few other possible key terms and found a few, although not all are in javascript.

These seem to be better fits...

  • Metawidget
  • OpenXava
  • JMatter

Metawidget is especially interesting. It supports javascript, and is easy to use. You can just provide it your domain model (a JSON object) and it can generate a UI for it. Further, it doesn't take over your page, so it can live in a pre-existing UI, and it allows UI customizations.

They also include a comparison page with similar products.

Another interesting one is BlueJ; it's an educational platform based on (the idea of?) Naked Objects, but can be used for smaller projects. Basically you can graphically create instances of your class via a context menu, then you can inspect and invoke the resulting object methods via the same way (potentially creating more objects in the process).

Going further afield, to looking towards any UI auto-generation, there are CRUD visualizers which are tied to the database.

  • Scito
  • SQLMaestro
  • Xataface
  • groceryCrud

I'm still researching these, especially the object ones, and am open to other suggestions.

like image 27
R. Barzell Avatar answered Oct 22 '22 23:10

R. Barzell