Swing Application Framework

The Swing Application Framework (JSR 296) is a Java specification for a simple application framework for Swing applications, with a graphical user interface (GUI) in computer software. It defines infrastructure common to most desktop applications, making Swing applications easier to create. It has now been withdrawn.

Features
The JSR 296 specification defines the basic structure of a Swing application. It defines a framework as a small set of extensible classes that define infrastructure common to most desktop applications:
 * management of application life-cycle, startup and shutdown;
 * support for loading localized resources;
 * persistent session state;
 * support for loosely coupling actions to their presentation.

Status and roadmap
Development of an open-source Reference Implementation called "appframework" began in 2006. It was originally expected that this implementation would be the means for integrating JSR 296 into the upcoming Java SE 7 (Dolphin) version of Java, and the project was scheduled to be included in milestone 5 of the Java Development Kit JDK7 development. However, in August 2009, it was announced that the project would not be included, due to an inability to reconcile design flaws and achieve consensus among the JSR 296 team before the milestone 5 deadline.

The original Swing Application Framework implementation has been put on hold indefinitely. It was later withdrawn at the Spec Lead's request in June 2011. The last public release of the appframework project was version 1.03.

Forks and alternatives
Several forks of the original implementation have been started by open-source communities, and several other application framework libraries have been created to achieve goals similar to those of JSR 296.

Last release BSAF 1.9.1 was 2012. BSAF is still available at SourceForge, which has a button that says "This project can now be found here," that takes you to the now defunct project Kenai.
 * Better Swing Application Framework
 * The Better Swing Application Framework project, or BSAF, is a fork of version 1.03 of the original appframework project. BSAF was created at Project Kenai in September 2009 and is currently the most active of the forks. Its goals are to eliminate bugs and execute small design fixes on the original appframework implementation while maintaining compatibility with version 1.03.


 * Guice Utilities & Tools Set
 * The Guice Utilities & Tools Set, or GUTS, is an implementation of JSR 296 that combines the appframework with the Google Guice Dependency Injection library. Like BSAF, it is also hosted at Project Kenai. Unlike BSAF, GUTS is making a break-away from the "problematic singleton" pattern. This project began in June 2009, and is currently not active (version 0.1 stuck 2010).


 * Swing Application Framework Fork
 * The Swing Application Framework Fork, or SAFF, is a fork of appframework 1.03. It is currently hosted at GitHub. However, this project has been dormant since October 2009.


 * TreasureMap
 * TreasureMap is a library providing standalone use of appframework 1.03's ResourceMap implementation.


 * NetBeans Platform
 * The NetBeans Platform is a robust Swing application framework, with many more features, as well as much more documentation. Because of the JSR failure/hold, SAF has been removed from Netbeans as of version 7.1. The developers seem to have no desire to provide any alternative, and suggest that the Netbeans platform is the right mechanism for porting SAF projects to a supported platform.
 * Eclipse RCP
 * Eclipse RCP is a big SWT (an alternative to Swing) application framework, for bigger projects, needs more time for understanding.


 * jGAF - Java Generic Application Framework
 * jGAF is a simple and compact library to quickly build full-featured Java Swing Application. This free open-source framework provides APIs to handle application life cycle, menus, configuration, OS integration, application data persistence, application protection, wizards, preferences, etc.