FW (Sun): MVC, DCI, and NetBeans Platform Applications

MVC, DCI, and NetBeans Platform Applications

Jaroslav Tulach discusses the relationship between MVC and the NetBeans Platform and explains why the DCI approach offers a better understanding.

Share Button

One Reply to “FW (Sun): MVC, DCI, and NetBeans Platform Applications”

  1. Hi, guys,

    I think you guys have something confused in this very enthusiastic talk. DCI is not a new version of MVC. I think it also confuses some aspects of MVC: for example,
    it is easy to have a single view on multiple modules in MVC.

    I guess that Trygve Reenskaug and I were the ones whose Artima article you anonymously refer to. I think you found it to be a critique of MVC. Can you tell me where the article critiques MVC? MVC and DCI complement each other and in some sense are independent.

    You say in your talk here that DCI is the future of MVC. That’s kind of like saying that UML is the future of Java, or that MVC is the future of NetBeans, or some similarly arbitrary analogy.

    I can’t speak to the relevance of NetBeans or if one can do DCI in them. Some of the things you say about DCI are correct, in particular about our desire to separate algorithms and data. But algorithms / actions don’t operate on contexts; the context is the scope of the roles and their interactions between them. Contexts are not injected into actions; roles are injected into objects. I think the way you talk about the JDK action listener as the target of injected code is much different than the way we use injection as one way of doing DCI.

    This isn’t just POJO with some magic behind the scene. We won’t see the end of MVC. DCI is not intended to replace MVC. Interactions do not operate on contexts. The lookup library doesn’t do enough “morphing” to achieve the source code readability goals of DCI (and that’s the whole point).

    Trygve says, “MVC and DCI are two paradigms that are designed to be shared by me as a programmer and my program as represented in my code.” (http://heim.ifi.uio.no/~trygver/2008/commonsense.pdf). They are not exclusive. They accomplish different goals.

    Trygve also says: “The first paradigm, the Model-View-Controller is included here for completeness. The MVC paradigm separates the parts of a program that are responsible for representing the information in the system and the parts that are responsible for interaction with the user.

    “DCI is the paradigm underlying BabyIDE1. The goal of the paradigm is to minimize any gap that might exist between the programmer’s mental model of her program and the program that is actually stored and executed in the computer. In particular, it concretizes how the system realizes system operations as networks of communicating objects.”

    It’s very possible that NetBeans provide the facilities that make DCI possible in Java. If that were the case I’d be delighted, because it is apparently impossible to do DCI in native Java without the benefit of language extensions. If you’d like to learn more about the goals of DCI and what is and isn’t DCI, I’d be honored to correspond. Right now, your talk here misses the mark on several points. If I can give you any helpful feedback, please get in touch with me — I’m pretty easy to Google on the web.

    Jaroslav, I wanted to just send this directly to you but you keep your contact information well-concealed 🙁

Leave a Reply

Your email address will not be published. Required fields are marked *