Sun announced the JDNC at 2004 JavaOne Conference.
via JDNC
The goal of the JDesktop Network Components (JDNC) project is to significantly reduce the effort and expertise required to build rich, data-centric, Java desktop clients for J2EE-based network services. These clients are representative of what enterprise developers typically build, such as SQL database frontends, forms-based workflow, data visualization applications, and the like.
JDNC leverages the power of J2SE and Swing while providing a higher level API, as well as an optional XML markup language, which enables common user-interface functionality to be constructed more quickly, without requiring extensive Swing or GUI programming skill. Additionally, JDNC simplifies the task of connecting a rich client to a J2EE backend, including JDBC and WebServices.
Recognizing the broad range of developer skill-sets and predilections, JDNC has been constructed in 3 distinct layers that can be used independently or together. These layers are reflected as JDNC sub-projects so that each can evolve at its own pace. From bottom to top:
Swing Extensions: APIs which extend Swing to provide key features required by data-centric applications (sorting, filtering, data-binding, asynchronous data-loading, etc); makes life easier for Swing developers. The APIs are defined in the org.jdesktop.swing package.
JDNC API: Higher level Swing based components that leverage the Swing Extensions, but provide a simplified JavaBeans API for common functions, provide attractive default visuals, usability features, and data-binding out of the box; usable by developers who may not know Swing. These component APIs are contained in the org.jdesktop.jdnc package.
JDNC Markup Language: A simple, extensible XML-based markup language that enables developers to configure JDNC based clients using XML and deploy them either as Java Web Start applications or as applets in a standard browser. The XML markup language is specified using a Schema (.xsd) and the tag library API used to implement the schema is defined in the org.jdesktop.jdnc.markup package.