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.