Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News JSR 296 Swing Application Framework Prototype Release

JSR 296 Swing Application Framework Prototype Release

One of the common developer complaints with Swing since its inception has been where is the application framework. The API provides a large number of features at the widget level but has traditionally been lacking in supporting API's at the application level. Some solutions that have been created to address application level framework concerns include Netbeans Plaform and Spring RCP. However, nothing "official" has been proposed or endorsed from the Java Swing team itself until the creation of JSR 296 - Swing Application Framework. From the JSR:

This specification will (finally) fill that void by defining the basic structure of a Swing application. It will define a small set of extensible classes or "framework" that define infrastructure that's common to most desktop applications: - The essential application lifecyle, startup and shutdown, with well defined milestones so that applications can insert startup or shutdown work when the application has reached a well known state.

Support for loading localized resources...

- Persistent session state. Most applications need a way to persist things like top level window geometry across sessions. Automatic support for such common cases as well as for loading and storing arbitrary session data at startup and shutdown time, would be useful in most Swing applications.

Actions define the behavior of Swing application from the user's perspective. In all but the smallest applications, it's useful to be able to loosely couple an Action's (localized, branded, etc) presentation from its implementation. Action implementations often must perform some work asychronously wrt to the Swing event dispatching thread. The application framework would provide support for doing so and for providing GUI feedback while significant work is being done on the user's behalf.

This week specification lead Hans Muller has released the first prototype implementation of the JSR. Features include:

  • Application lifecyle, notably GUI startup and shutdown.
  • Support for managing and loading resources, like strings, formatted messages, images, colors, fonts, and other types common to desktop applications.
  • Support for defining, managing, and binding Actions, including Actions that run asynchronously (in the "background").
  • Persistent session state: support for automatically and selectively saving GUI state from one run of an application to the next.

Since the JSR has not reached early draft, the expert group has agreed to make the prototype public to give interested members of the Swing community the opportunity to provide feedback. This version is a snapshot of the ongoing design process and likely to change substantially in the coming months.

Rate this Article