672329 members! Sign up to stay informed.

Sponsored Links


Resources

Enterprise Java
Research Library

Get Java white papers, product information, case studies and webcasts

News News News Messages: 22 Messages: 22 Messages: 22 Printer friendly Printer friendly Printer friendly Post reply Post reply Post reply XML XML XML

Article: Naked Objects 3.0

Posted by: Joseph Ottinger on October 01, 2007 DIGG
We are pleased to announce, today, the release of Naked Objects 3.0. 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.

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. By contrast Naked Objects neither requires, nor permits, the specification of Controllers: all business behavior must be encapsulated as methods on the domain entities.

For more information, read "Naked Objects 3.0."

Threaded replies

·  Article: Naked Objects 3.0 by Joseph Ottinger on Mon Oct 01 15:40:55 EDT 2007
  ·  GPL? by Antonio Petrelli on Tue Oct 02 03:41:36 EDT 2007
    ·  License is now Apache by Robert Matthews on Tue Oct 02 04:06:47 EDT 2007
      ·  Re: License is now Apache by Antonio Petrelli on Tue Oct 02 04:10:41 EDT 2007
    ·  I like NO by Marie Antoinette on Tue Oct 02 22:31:53 EDT 2007
      ·  NOF vs JMatter by Dan Haywood on Wed Oct 03 02:57:50 EDT 2007
        ·  Re: NOF vs JMatter by Javier Paniza on Wed Oct 03 05:25:24 EDT 2007
          ·  Re: NOF vs RomaFramework or OpenXava by Dan Haywood on Wed Oct 03 07:38:44 EDT 2007
            ·  N.O. != the rest by Remi Vankeisbelck on Wed Oct 03 10:38:38 EDT 2007
            ·  Re: NOF vs RomaFramework or OpenXava by Javier Paniza on Wed Oct 03 12:40:23 EDT 2007
            ·  Re: NOF vs RomaFramework or OpenXava by Javier Paniza on Wed Oct 03 12:45:54 EDT 2007
  ·  Controllers or not controllers ? by Javier Paniza on Tue Oct 02 03:51:53 EDT 2007
    ·  Consider using aspects to add other generic object capabilities by Richard Pawson on Tue Oct 02 10:42:37 EDT 2007
      ·  Re: Consider using aspects to add other generic object capabilit by Javier Paniza on Tue Oct 02 11:03:09 EDT 2007
        ·  Re: Consider using aspects to add other generic object capabilit by Richard Pawson on Tue Oct 02 11:24:24 EDT 2007
    ·  Java or XML ? by Daniel Serodio on Fri Oct 05 14:41:34 EDT 2007
      ·  Re: Java or XML ? by Javier Paniza on Mon Oct 08 06:09:31 EDT 2007
  ·  Kudos ! by Remi Vankeisbelck on Tue Oct 02 04:00:02 EDT 2007
  ·  Re: Article: Naked Objects 3.0 by Suresh Krishna on Tue Oct 02 16:28:17 EDT 2007
  ·  More Kudos by Per Lundholm on Wed Oct 03 03:42:18 EDT 2007
  ·  Please complete our online survey about Naked Objects by Richard Pawson on Wed Oct 03 11:04:53 EDT 2007
  ·  Re: Article: Naked Objects 3.0 by Mark Nuttall on Sat Oct 06 11:43:35 EDT 2007
  ·  Looks quite interestingar by Sarwar Bhuiyan on Fri Mar 07 11:26:27 EST 2008
  Message #240469 Post reply Post reply Post reply Go to top Go to top Go to top

GPL?

Posted by: Antonio Petrelli on October 02, 2007 in response to Message #240435
I think that many people will look at it and go away due to the GPL license.
It is an interesting project (it seems too good to be true :-) ) but since it is GPL, I think I won't even consider it for enterprise development.

Sorry if I seem rude.
Antonio

  Message #240470 Post reply Post reply Post reply Go to top Go to top Go to top

Controllers or not controllers ?

Posted by: Javier Paniza on October 02, 2007 in response to Message #240435
Hi,

I like NakedObject, developing using MVC frameworks is laborious. And if we want to simplify, you need to remove things and the model layers is the more beatiful. And NakedObjects have only the Model part, then it's productive and beatiful.

In the other hand, the controllers can have a useful role, because you can put in them the reusable logic for every object (CRUD, report generation, copy & paste, data exporting, etc). And you can adapt your application to your user without alter your model.

That is, if NakedObjects is a M frameworks, I prefer an Mc frameworks.
Also, you can see the discussion about this issue in Openxava forum:
OpenXava forum thread about MVC

Cheers
Javier Paniza

  Message #240471 Post reply Post reply Post reply Go to top Go to top Go to top

Kudos !

Posted by: Remi Vankeisbelck on October 02, 2007 in response to Message #240435
Congrats for this release !

Looks like you've been busy ! What a step forward compared to previous releases, it really becomes better and better.

You're doing something amazing, Naked Objects are a great concept ! So different than usual "CRUDish" frameworks that all look like new painting on an old house...

Of course, as a "competitor" (I'm behind another framework that shares lots of concepts with Naked Objects), I still think that some parts could be improved ;-P
But I must admit that this release is impressive ! You have really better integration now (the IoC feature looks pretty cool), and keep the whole N.O. concept, it looks really much powerful than the previous version.

Kudos to the team for this release, and keep up the excellent work !

Cheers

Remi

  Message #240474 Post reply Post reply Post reply Go to top Go to top Go to top

License is now Apache

Posted by: Robert Matthews on October 02, 2007 in response to Message #240469
As stated in the article the license is now Apache 2.0.

  Message #240475 Post reply Post reply Post reply Go to top Go to top Go to top

Re: License is now Apache

Posted by: Antonio Petrelli on October 02, 2007 in response to Message #240474
Great! Sorry, I went directly to the website and then to the Sourceforge site, where I read it still says GPL.
That's great news then!

  Message #240492 Post reply Post reply Post reply Go to top Go to top Go to top

Consider using aspects to add other generic object capabilities

Posted by: Richard Pawson on October 02, 2007 in response to Message #240470
Several of the capabilities you suggest are in fact provided automatically by the Naked Objects framework, but I accept the point that there may be other generic capabilities that you want to make available for all domain objects (or some significant subset of them).

But my preferred approach for doing that would be to use Aspects rather than controllers. Naked Objects and Aspects are complementary. If you use controllers, you provide too much of a temptation to developers to start dis-encapsulating the business logic from the domain model - we've seen it happen. Aspects gives much less temptation.

  Message #240493 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Consider using aspects to add other generic object capabilit

Posted by: Javier Paniza on October 02, 2007 in response to Message #240492
Hi Richard,

do you mean 'aspects' for simulating multiple inheritance ?

Using of controllers has also a philosophical motivation,
you separate the behaviour of the application from the pure business logic.
You can use the same business concept (encapsulate using a model class for example) in several cases. Each case need its own behaviour, but all the case share the same business logic. In this case you put the behaviour in the controller.

You can use controllers and still have a simple application structure. For example, in an OpenXava application with 100 model classes usually you only need to write 5 to 10 controllers.

Cheers
Javier Paniza

  Message #240494 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Consider using aspects to add other generic object capabilit

Posted by: Richard Pawson on October 02, 2007 in response to Message #240493
Javier

"do you mean 'aspects' for simulating multiple inheritance ?"

That's one possibility. I was thinking more generally. Our 'contributed actions' capability is an even easier way to simulate multiple inheritance.

Richard

  Message #240514 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Article: Naked Objects 3.0

Posted by: Suresh Krishna on October 02, 2007 in response to Message #240435
Wow...this is the first time i am looking at this product and it looks really great. Especially i like the UI and Persistence mechanisms.
Good to see the concept of Persistenc -> Domain Model -> UI.
The first thing that came to mind is the Eclipse Modeling Framework from Eclipse. Its does sound very interesting to see both of them.

  Message #240528 Post reply Post reply Post reply Go to top Go to top Go to top

I like NO

Posted by: Marie Antoinette on October 02, 2007 in response to Message #240469
I have been keeping an eye on NO for a while now, and it really loooks like its finally coming together neatly. Or maybe I just didn;t appreciate its usefulness in the past ;)

How does NO compare/contrast to JMatter?

  Message #240534 Post reply Post reply Post reply Go to top Go to top Go to top

NOF vs JMatter

Posted by: Dan Haywood on October 03, 2007 in response to Message #240528
As ever, there are pluses and minuses for both frameworks.

NOF has a pluggable viewer mechanism and as such supports a rich client viewer and a web viewer. With JMatter I believe only one viewer mechanism is supported, namely a Swing-based rich client. In JMatter's favour many would say its Swing UI looks a little nicer (certainly more conventional) that the NOFs, and it does have more out-of-the-box UI elements such as galleries. That said, work is well underway to provide an Eclipse RCP viewer for NOF, which will be extensible using Eclipse's extension point mechanism.

NOF has a very pure pojo-based programming model, which means that it is possible to prototype on NOF but deploy (if required) on some other JEE/Hibernate platform using a hand-crafted UI such as JSF/Struts for the front-end. That's an exciting prospect! In comparison the programming model for JMatter has much greater coupling, meaning (I believe) it is only really possible to deploy JMatter-developed domain models on JMatter itself.

The NOF also has a pluggable persistence mechanism with implementations for Hibernate, XML and in-memory. In comparison JMatter (like Grails, actually) only supports Hibernate. The in-memory pluggable object store is very useful for testing and prototyping; later as the domain model is becoming stable one switches to Hibernate.

The NOF has a dependency injection mechanism for all domain objects, whereas JMatter doesn't have anything similar so far as I know.

The NOF explicitly has repositories/factories as first-class objects, whereas JMatter (I think) uses static methods on classes. This is the way that NOF used to work, but it's hard to make dependency injection work in that model.

Proviso: I know much more about NOF than JMatter; hopefully Eitan Suez (author of JMatter) will correct me if I have misrepresented his framework at all.

  Message #240537 Post reply Post reply Post reply Go to top Go to top Go to top

More Kudos

Posted by: Per Lundholm on October 03, 2007 in response to Message #240435
Really good news to see that this project keeps rolling!

  Message #240545 Post reply Post reply Post reply Go to top Go to top Go to top

Re: NOF vs JMatter

Posted by: Javier Paniza on October 03, 2007 in response to Message #240534
Hi Dan,

interesting comparation!

Can you compare NO with romaframework or OX3 ?

I think all these frameworks have some things in common.

What do you think ?

Cheers
Javier

  Message #240550 Post reply Post reply Post reply Go to top Go to top Go to top

Re: NOF vs RomaFramework or OpenXava

Posted by: Dan Haywood on October 03, 2007 in response to Message #240545
Hi Javier,
Can't really oblige because I know very little about them. They both claim to be DDD frameworks so that is something all the frameworks do have in common.

It looks like Roma focuses on only web frameworks, so NOF is broader in scope than that because it also supports rich clients. I note that Roma has a dependency on Jasper so presumably has in-built reporting; NOF doesn't target that at all.

From the wording of the Roma tutorial it looks like different presentation technologies can be used in the UI (the tutorial uses Echo), so that might be something they have in common. However it seems to be mandatory to create a webflow in Roma (it reminds me of Grails here), whereas in NOF this is not only not required, but is not permitted (hence NOF being very opinionated).

I also can't see any mention in Roma of anything like dependency injection or contributed actions as supported in NOF.

It's hard to say much about OpenXava because the docs seem to be in Spanish. But since I see you are one of the developers, you are probably better placed to compare the frameworks than me?

  Message #240570 Post reply Post reply Post reply Go to top Go to top Go to top

N.O. != the rest

Posted by: Remi Vankeisbelck on October 03, 2007 in response to Message #240550
They both claim to be DDD frameworks so that is something all the frameworks do have in common.


Well, IMHO, they are completely different.

It's not because you use POJOs for representing your Domain Model that the framework is "Domain Driven"...

Take RoR or Grails for example : they are nothing but code generators that help you to get started. They don't carry the same semantics than N.O *at all* !

If you think about it, when using Grails or RoR, you have nothing more than the usual "stack" : MVC + Persistent POJOs. Once you have passed the "scaffolding" stage, then you write controllers and views, just like back in the old days... The only advantage is that you stay on track easily with all the tools that they add. But they are clearly not implementing the N.O. pattern, or any other one than the good old MVC.

In contrast, N.O. applies its own concepts, which are completely different than regular MVC architectures. And damn it's sexy :-)

In the end, IMHO, there is 2 main tendencies for the moment :
* "revamped" MVCs (RoR, Grails, Roma, etc.) : just some eye candy (and lots of marketing) on old technlology (I don't claim theyr'e useless, I just think they don't bring any new concept, only productivity tools)
* Naked Objects (N.O.,JMatter) : a completely different way to design and implement OO applications

I really think there is a global confusion around the term "DDD". I think Grails, RoR and the like should call themselves "RAD", instead of DDD... They help you do the old things faster, but once again, they don't do it in a new way.

Anyway, in the end, I think the two main "tendencies" (MVC vs N.O.) are completely different beasts. And I really think it's the reason of the "N.O. failure" : you have to change your mind quite a lot to unlearn everything and see the light ! To me N.O. style frameworks are clearly the future, but I think the audience isn't ready for it yet... I can't understand the RoR hype when considering N.O., but it's a fact : everybody talks about RoR as somthing new, and only a few even know about N.O., which has been around for a while now.

Now, for a taste of "new shit", has anyone of you DDD folks looked at Woko ?

We try to do it different there... We inspire a lot of N.O. for the "automatic UI rendering" part, but have a completely different approach for implementing it, and more important, to *extend* the default behavior(s) of the framework, via "facets"...

A third way ? Yeah, I think so... It's called "Facet Driven Development" :-)

Cheers

Remi

  Message #240571 Post reply Post reply Post reply Go to top Go to top Go to top

Please complete our online survey about Naked Objects

Posted by: Richard Pawson on October 03, 2007 in response to Message #240435
As an open source organisation it's tough to get information about how people are using Naked Objects or why they aren't. We've composed a short (max 10 questions) online survey, and would really appreciate any responses:

http://www.surveymonkey.com/s.aspx?sm=BbsGHdcGbFkHkLVUZpE_2b8w_3d_3d

Thanks

Richard

  Message #240587 Post reply Post reply Post reply Go to top Go to top Go to top

Re: NOF vs RomaFramework or OpenXava

Posted by: Javier Paniza on October 03, 2007 in response to Message #240550
I see you are one of the developers, you are probably better placed to compare the frameworks than me?


Yes, but surely I will not be very objective.

The main philosophical issue is the use of controllers.
OpenXava derives the user interface from the model, but
it uses controllers for the user actions.

And of course, other secondary issues as that in OX3:
- The model classes are defined using JPA annotations.
- The result are JSR-168 applications.
- The User Interface is as in a typical business application.

Anyways, I think that the better comparation is from a developer that have worked with NakedObject and OpenXava.

Cheers
Javier

  Message #240588 Post reply Post reply Post reply Go to top Go to top Go to top

Re: NOF vs RomaFramework or OpenXava

Posted by: Javier Paniza on October 03, 2007 in response to Message #240550
OpenXava because the docs seem to be in Spanish.

I need to do a little correction.
OpenXava documetation is in Spanish and English.
Moreover, all labels and messages of OX are in English, Spanish, German, Polish, Indonesian, French, Catalan and soon in Japanase

Cheers
Javier Paniza

  Message #240776 Post reply Post reply Post reply Go to top Go to top Go to top

Java or XML ?

Posted by: Daniel Serodio on October 05, 2007 in response to Message #240470
Javier, IMHO the main difference between Naked Object and OpenXava is not about Controllers, but that Naked Objects are written using pure Java, while OpenXava business components are written (mostly) in XML.

  Message #240800 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Article: Naked Objects 3.0

Posted by: Mark Nuttall on October 06, 2007 in response to Message #240435
Congratulations! I am very thrilled about the new release and the license changes. I've been a fan for quite a while. I hope this opens the door for more people to use it.

  Message #240821 Post reply Post reply Post reply Go to top Go to top Go to top

Re: Java or XML ?

Posted by: Javier Paniza on October 08, 2007 in response to Message #240776
Javier, IMHO the main difference between Naked Object and OpenXava is not about Controllers, but that Naked Objects are written using pure Java, while OpenXava business components are written (mostly) in XML.


Hi Daniel,

Since version 3 (still in beta) OX allows you to use POJO + JPA annotations + OX annotations to define business components, in addition to the classic XML format of OX. You can see it on:
http://www.gestion400.com/web/guest/ox3
and also in the wiki:
http://openxava.wiki.sourceforge.net/

That is, you can develop a model using POJOs for Naked Object, and after you have your application finished you can move your model to OpenXava and see the result; and vice versa.

This is a very interesting issue, because with a little of colaboration between "model driven" frameworks developer we can facilitate the migration to a framework to other of the applications. Maybe, simply using a minimun common sets of rules or annotations, this can be achieve.
For example, I see that NakedObject has the annotation @Hidden, and OX3 has also the annotation @Hidden
with an alike sematics.

With a group of annotations (and its sematics) in common within "Model Frameworks" we can improving the portability of applications within them.

Of course, this is only a vague idea.
What do you think ?

Cheers
Javier Paniza

  Message #248636 Post reply Post reply Post reply Go to top Go to top Go to top

Looks quite interestingar

Posted by: Sarwar Bhuiyan on March 07, 2008 in response to Message #240435
I think this looks interesting for those developers who want to go bid for work that the can do quickly for smaller clients. As long as the way to customize and add functionality is not tremendously effect.

I recently went to a presentation on AppThena (http://www.appthena.com/) and that had the same intention. Only, in AppThena they did away with the whole model class altogether and started from the database. This might not look ideal to us model driven programmers but if you think about how many organizations have some database or other over which to modify or build applications on, that is probably a wise approach. The application uses MVC but does not replicate the model classes in pojos or anything like that. You lose in having strong types for the model objects but you gain in that you have an instant application that offers crud and searching. Also similar to OpenXava, AppThena does not generate any code.

It'd be interesting how these frameworks evolve hereon.

Sarwar Bhuiyan
Software Engineer
Morse Group Ltd.

New content on TheServerSide.comNew content on TheServerSide.comNew content on TheServerSide.com

Dependency Injection in Java EE 6 - Part 2

Reza Rahman continues to explore the features of the proposed JSR 299, Contexts and Dependency Injection for Java EE (CDI). When approved, it promises to be a key feature of Java EE 6. (January 21, Article)

Ted Neward Q&A: What you must know about JavaScript, Scala and more

Ted Neward is an independent consultant specializing in high-scale enterprise systems, and an authority in Java and .NET technologies. He is the author and co-author of several books, including Effective Enterprise Java. At TheServerSide Java Symposium in March, he will be presenting sessions on pragmatic architecture, ECMAScript and Scala. (January 15, Article)

Developers split on open sourcing Java

Now that Oracle is absorbing Sun Microsystems, there mixed views on what should come of the Java Community Process (JCP). While some say Oracle should become the new steward of Java and keep the JCP much as it was, others argue that it may be time to open-source this widespread language. (November 24, Article)

Dependency Injection in Java EE 6 - Part 1

Reza Rahman explores the features of the proposed JSR 299, Contexts and Dependency Injection for Java EE (CDI). When approved, it promises to be a key feature of Java EE 6. (November 2, Article)

SAML: It's Not just for Web services

SAML is an XML-based standard for exchanging authentication and authorization data between security domains. The single most important problem that SAML was created to solve is the Web browser Single Sign-On problem. Many organizations are debating whether to stay with version 1.1 or move to 2.0. This article makes observations about both options. (September 28, Article)

Programming is Also Teaching Your Team

Joe Ottinger takes a look at how people learn, and applies it to the practice of programming. He notes that understanding how people learn is an essential part of working in a programming team. (September 22, Article)

Can Java EE Deliver The Asynchronous Web?

Stephen Maryka gave us an article about the Asynchronous Web and posed a number of questions that get examined like an approach to delivering Asynchronous Web capabilities through extensions to existing Java EE technologies. (July 14, Article)

JSF Flex

JavaServer Faces Flex goal is to provide users capability in creating standard Flex components, part of flexSDK which is open sourced through MPL license, as normal JSF components. This article by Ji Hoon Kim will provide an overview of creating a simple multilingual JSF page consisting of JSF Flex tags. (June 29, Article)

The Rules of SOA - A Road to a Successful SOA Implementation

In this session Jeff explores the key characteristics of successful SOA projects. He covers some of the patterns, and anti-patterns, tool sets, and strategies that he himself learned the hard way. Last, he provides a strategy and blueprint for achieving a high likelihood of success in your SOA project. (June 23, Tech Talk)

Ari Zilka Talks About Terracotta 3.1

Ari Zilka, CTO of Terracotta, Inc., talks about the new features in Terracotta 3.1, announced during JavaOne and available now. (June 15, Tech Talk)

Enterprise Application Integration, and Spring

In this Tech Talk, Josh Long explores an integration challenge using Spring Integration and walks through the implementation, employing and expanding on the basic patterns of Enterprise Application Integration to tie together components into a function integration solution, and then demonstrates how Spring Integration helps address the integration requirements. (June 15, Tech Talk)

Google Web Toolkit: An Introduction

In this Tech Talk, David Geary teaches you: The basics of Google Web Toolkit; How to implement Ajax-enabled applications in Java; Internationalization; Hooking into the browser history mechanism; Remote procedure calls. (June 4, Tech Talk)

Just Enough Early Architecture to Guide Development

Jon Kern discusses the best architecture/technical solutions and ensure that they are repeated by all developers. By tackling the architecture up-front in a serial manner, subsequent parallel development will be much more manageable and predictable. (May 28, Tech Talk)

Productive Programmer: On the Lam from the Furniture Police

This keynote describes the frustrations of modern knowledge workers in their quest to actually get some work done, and solutions for how to guard yourself against all those distractions. Neal Ford talks about environments, coding, acceleration, automation, and avoiding repetition as ways to defeat the misguided attempts to sap your ability to produce good work. (May 26, Tech Talk)

Auto-Scaling Your Existing Web Application

Gil demonstrates how new, aggressive uses of already abundant compute capacity by common applications offer competitive value for application designers. (May 21, Tech Talk)

Automating Hibernate Mapping and Queries For Java Web Development

Chris Keene introduces WaveMaker as a new way to automate the ability to generate Hibernate classes in order to more quickly bring OR mapping into an application. (May 19, Article)

Free Book PDF Download: Mastering EJB Third Edition

Mastering EJB was one of the original and most influential EJB books in the industry. Mastering EJB III now returns with two new expert co-authors, updated for EJB 2.1 and 30% new chapters including security, integration, best practices, open source, and more.
(Book PDF Download)

Application Server Matrix

The Application Server Matrix is a detailed listing of J2EE vendors and their application server products, with information on latest version numbers, J2EE spec support and licensing, pricing, platform support, and links to product downloads and reviews.
(Application Server Comparison Matrix)

News | Blogs | Discussions | Tech talks | Patterns | Reviews | White Papers | Downloads | Articles | Media kit | About
Java Solutions
All Content Copyright ©2007 TheServerSide Privacy Policy
Site Map