Created by: gwideman, Jun 1, 2012 5:36 pm
Revised by: gwideman, Jun 6, 2012 4:22 pm (3 revisions)

This page collects notes on getting oriented to desktop app structure in Java.

Frameworks for desktop applications

RCP = "Rich Client Platform"

Swing Application Framework (JSR 296)

Better Swing Application Framework BSAF:

Spring RCP

Eclipse RCP

NetBeans Platform


Tentative conclusion

The Swing conventions for components already provides a basic application framework, in that it includes a standard way to build a hierarchy of visual components, including management of their display, and event detection and dispatch. There are a number of higher-level services that a desktop app might need, but it seems that lack of agreement on what those should be has resulted in the open app framework initiatives (JSR 296 and spin-offs) stalling.
So that leaves some commercial Desktop App Frameworks (eg: JIDE), and the app frameworks that are the basis of particular IDE applications, namely Eclipse RCP and NetBeans RCP.

Controls, components



  • Swing is a highly modular-based architecture, which allows for the "plugging" of various custom implementations of specified framework interfaces: Users can provide their own custom implementation(s) of these components to override the default implementations using Java's inheritance mechanism. Swing is a component-based framework, whose components are all ultimately derived from the javax.swing.JComponent class. Swing objects asynchronously fire events, have bound properties, and respond to a documented set of methods specific to the component. Swing components are Java Beans components, compliant with the Java Beans Component Architecture specifications.


SWT (Standard Widget Toolkit)

  • According to the Eclipse Foundation, "SWT and Swing are different tools that were built with different goals in mind. The purpose of SWT is to provide a common API for accessing native widgets across a spectrum of platforms. The primary design goals are high performance, native look and feel, and deep platform integration. Swing, on the other hand, is designed to allow for a highly customizable look and feel that is common across all platforms."

JIDE Swing components

Java Beans

A JavaBean is a Java Object that is serializable, has a 0-argument constructor, and allows access to properties using getter and setter methods. (Swing visual components are Java Beans.)

Layout managers

"Layout manager" is the term for the component which positions and sizes the controls "on a form" (within a Frame? Panel?).

GUI form "designers" or IDEs


IntelliJ IDEA


  • The NetBeans Platform is a reusable framework for simplifying the development of Java Swing desktop applications. The NetBeans IDE bundle for Java SE contains what is needed to start developing NetBeans plugins and NetBeans Platform based applications; no additional SDK is required.



Data-aware components

Misc questions

In order to operate within a framework, controls or components presumably have to follow a particular convention (ie: offer a particular interface/API). What are the conventions?
How does Beans fit in here?