Skip to main content

Spotlight: André van Kouwen on the GMVC Project and the MVC Design Pattern

Posted by editor on October 19, 2009 at 7:43 AM PDT

This week's Spotlight is an "Interview: André van Kouwen and the GMVC Project". A few weeks ago, I featured the GMVC project in a Java Today entry. Subsequently, I had some conversations with the project's founder, André van Kouwen, and we decided to do an interview, to get the word out on what André is working on.

First of all, GMVC stands for Generic MVC, with the MVC being the Model-View-Controller design pattern. As André states on the GMVC Project Billboard, the GMVC project is a working

Proposal to the existing Swing library ... to send out Generic Change notifications, not as currently as row numbers depending on the actual View type but the actual Object instance itself. A type safe Generic Table Model Change message, which is just a POJO, informs any listener about the Objects that are i.e. added, deleted or updated.

In our interview, André framed the problem this way:

I'm trying to solve is the problem of incorporating behaviour logic into often a generated fat client Swing-based GUI. Each View component has its specific interface to deal with, and I would like to have just one interface via only models, so that the Controller has no knowledge of the view used -- which is one of the most important aspects of project. I would like to have a Data model that sends out the object instances that have been changed, inserted or deleted; similarly, for components that can be selected, the model will be able to send out messages telling which object(s) instances are selected or deselected, and there will be an interface so that a controller can select or deselect certain objects instances in a view and an option to disable or enable any selection in the view. To give you an better idea: from a Controller a Table or Tree might behave exactly the same as a group of radio/checkboxes: it should make no difference to the Controller who is sending the message...

I asked why he considers it so important to address these issues. André's response:

The interfaces to deal with are complex even for more experienced Java programmers, because Swing has a vast number of public methods to choose from, and you get sort of lost in a lot of complex code. I want to make it very clear what needs to be done or what you need to do in order to control a View and Model combination properly. In J2EE you have a clear business layer and an ORM layer; why not have a similar solution for Swing GUIs, so that there is a general approach in terms of implementation?

André is actively seeking comments and discussion on his proposals, as well as assistance with the GMVC Project itself. Sample code is available in the project's Subversion, along with a README that describes the test application.

André concludes with:

I really really hope this approach will help to improve Swing's status as being a good platform for building Java based FAT clients, the industry complained that Swing was way to difficult, steep learning curve, etc., etc. I hope this will improve its reputation. Secondly I hope that this new approach will enable much less experienced developers to work on Swing GUIs, by lowering the complexity so that you don't need a Master's degree in order to develop a proper Java Swing GUI. Let's be honest, Swing is a real masterpiece, but for most Java programmers it's way too complex. I hope this GMVC will fill in gap. It is too bad that Java is used for a lot of very complex J2EE solutions, but there is no easy way of developing Java based GUIs.

Read the full interview for all the details.

In Java Today, peligri announces JSR 330 Approved - Dependency Injection for Java:

Executive Committee for SE/EE of the JCP has approved
JSR 330,
Dependency Injection for Java. This specification, led by Bob Lee @ Google and Rod Johnson @ SpringSource was submitted in May 09 and moved through the JCP process very quickly.
The final vote result
was 14-1-1. Congratulations to the leads and the EG on this important spec...

peligri also posted GlassFish GeoMap as JavaFX App:

James just posted his slides from
Oracle OpenWorld...
except that they are a JavaFX app.
For most of the prezo the App behaves as slides ( to move forward)
- except for the iconic JavaFX moving clouds -
but at one point he switches to a version of our
GlassFish GeoMap
including zooming (scroll wheel), panning (drag), dot-size calculation and dot aggregation...

Frank Sommers posted JetBrains Open Sources IntelliJ IDEA Community Edition, which includes an interview with Dmitry Jemerov of JetBrains:

JetBrains' IntelliJ IDEA, one of the leading Java IDEs, has pioneered features such as extensive refactoring support, integration with libraries, and highly sophisticated code completion. JetBrains announced today that will make available IntelliJ IDEA Community Edition, a full-featured Java, Scala, and Groovy IDE under the Apache 2.0 license. In this interview with Artima, JetBrains' Dmitry Jemerov discusses what motivated JetBrains to open-source IntelliJ, and how this move will benefit Java developers...

In today's Weblogs, John Ferguson Smart present JSF2 Facelet Tag Handlers:

A good build script should be self-contained, self-booting and portable. You should be able to check it out of source control and run it. No buts. Period. The rules (or tips) that follow should be self-evident and applied everywhere. Unfortunately, they are not. The following "rules" are based on issues I've encountered in existing real-world build scripts.

Rule 1 - No hard-coded paths. Hard-coded paths are the bane of the portable build script. Just say no.

Rule 2 - avoid OS-specific scripts. ...

Santiago Pericas-Geertsen talks about the Telematics Demo at Oracle World:

The Sun Mobility Platform Telematics demo, co-developed by Oracle and Sun, was showcased at Oracle Open World this week. It was shown as part of a presentation on Monday and at the Berkeley DB (BDB) booth for the rest of the week. The demo shows a simulation of vehicles synchronizing events collected on a local database (BDB) to a back-end Oracle database. Events collected from vehicle sensors are stored in an embedded BDB database and periodically synchronized; in addition, critical events are reported immediately using the dynamic capabilities of the Mobility Platform. A JavaFX front-end was developed to increase the demo's coolness factor...

And Jim Driscoll announces Slides for JSF 2 up on Slideshare:

I've posted the slides for the talk that Andy Schwartz and I did at Oracle Open World up on Slideshare...

In the Forums, eenogoodatcs is having trouble with Deploying WAR with web.xml and sun-web.xml security: "No one on the netbeans forum can help me. This is really important. Please help if you can: Hi all, I have spent too much time trying to find the answer to this so i'm just going to ask. I have followed several netbeans..."

galovesongs is seeing an error, Exception Description: predeploy for Persistence Unit failed: "Hi, I'd encountered this error ever since I tried writing a new entity class. This happens when I run or deploy. Deploying application in domain failed; Exception [TOPLINK-28018] (Oracle TopLink Essentials - 2.1 (Build..."

And scottval is trying to figure out Graduated shading and shininess of primitive faces: how do they do it?: "Hello-I've been experimenting with the usage of the geometry primitives, as well as creating my own shapes. I've noticed the attractive, graduated shading and shininess some of the primitive objects, and I don't know how it's done..."

Our current Spotlight is the JavaFXpert RIA Exemplar Challenge. The JUGs Community reports: Java Champion Jim Weaver has a serious JavaFX contest going on. "Create an application in JavaFX that exemplifies the appearance and behavior of a next-generation enterprise RIA (rich internet application)". Entries must be submitted in the form of a NetBeans project by 00:00 GMT on 10 January 2010.

The new Poll asks Is Oracle good for Java? The poll will run through next Thursday.

Our Feature Articles include Manish K. Maheshwari's Sweeping the File System with NIO-2, which describes how JSR 203 (NIO-2), which is being implemented in the OpenJDK project, is shaping the future of I/O in the upcoming JDK 7. We're also featuring John Ferguson Smart's article Working with Maven in NetBeans 6.7.1, which shows why, if you are a NetBeans user working with Maven, you're in luck with NetBeans 6.7.1.

The latest Java Mobility Podcast is Java Mobile Podcast 89: David "Left" Schlesinger on Open Source: David "Left" Schlesinger, Director of Open Source Technologies at Access, shares his views on open source with Terrence Barr.

Current and upcoming Java Events:

Registered users can submit event listings for the Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.

Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of it will be archived along with other past issues in the Archive.

-- Kevin Farnham

O'Reilly Media

Related Topics >>