JDNC Objectives & Scope
The goal of JDNC based on the official project home page is:
to significantly reduce the effort and expertise required to build rich, data-centric, Java desktop clients for J2EE-based network services.
This statement implies that without additional framework components that goal could no be achieved. By meating differents Java developers of differents companies I reallized that a lot of peoples come to that conclusion a while ago. And since they did not have ,at the time, a project like JDNC they build there own libraries to improve there productivity and the richness of there application. I am not differents them.
During the last year I try to analyse what were my Swing framework needs and translate them into particular requirements. Same if JDNC address part of my needs I believe that JDNC only look at the tip of the iceberg.
I am sending this email to start a discussions about the differents requirements that meet the goal of the JDNC project but are currently not address by the current implementation. By identifing differents requirements this group could prioritize the development activities and provides the most important feature first.
This is a list of framework with short description that we needed for our rich application and that I think that could be nice in JDNC:
Thin-client Creational Swing Framework
Framework that sub-divided your complete application into components: model, view, controller,action.
The framework is reponsible to create, link and integrate all the previous component based on a XML descriptor.
This is done using a factory create your application based on that xml.This factory could use reflection mechanism to initialise components. This imply that your application become like building block and the composition of your application is not done at run-time instead of being done at compile time. The framework support stand-alone or thin-client application where the descriptor is localed either in a local storage or in a central server. Different descriptor could be used contextual to the authenticated user and its security.
For example, certain views, modules and controllers could be accessible only with the propert authorization.
All controllers are managed centrally by the framework so that we could implemented easilly security support and keymap support.
Thin-client Swing authentication and authorization module (compatible with JAAS or other security mechanism.)
Stand-alone version with file descriptor
Server side version with JAAS integration
Implement data-binding components
I won't go in a lot of detail because it is really similar to JDNC data-binding component.
The only think that we implement that is missing in JDNC implementation is that we are able to rebuild the xml that describes the view based on the current view. Today JDNC read the XML and render the Jtable. But they are not able from a rendered Jtable to re-generate XML.
We also had a user preference storage service where we could store preference for a given user. This allows the application to keep the preference of user same after the user close is thin-client.
A lot of the framework that we created are based on the struct paradigm. And I believe that this is where JDNC should go.
I am currently really impress with the first version of the JDNC and I think that providing Swing data-aware components is a good way to improve productivity. One of the most productive tools (in term of development cost) to manage information is MS-Access which does some kind of data-binding. But like you know ms-access is no a viable solution for a enterprise solution (portability, scallability, packaging, etc...) Borland also attemp fee years ago to address the same problem with there dbswing data-binding components. At the time the project did not raized enough interest so they stop there development. I believe that by seperating the data from the XML meta-info the JDNC group have taken a much more flexible and extensible approach than borland. The fact that they have a JNDC XML also is a big edge.
In conclusion,I am really happy to see that Sun started that new initiative. I really think that this initiative may fullfill a gap that has been for a long time ignore.
I would like to know which are the framework components would you like to see in JNDC. Also I would like to know if you are interested in any of the one that I have mentioned earlier.