JSRs: Java Specification Requests
JSR 296: Swing Application Framework
Section 1. Identification
Submitting Member: Sun Microsystems
Name of Contact Person: Dr. Danny Coward
E-Mail Address: danny.coward
Telephone Number: +1 408 276 7049
Fax Number: +1 408 276 7209
Specification Lead: Hans Muller
E-Mail Address: hans.muller
Telephone Number: +1 408 394 9836
Fax Number: +1 408 276 7209
Initial Expert Group Membership:
Supporting this JSR:
Section 2: Request
2.1 Please describe the proposed Specification:
Well written Swing applications tend to have the same core elements for startup and shutdown, and for managing resources, actions, and session state. New applications create all of these core elements from scratch. Java SE does not provide any support for structuring applications, and this often leaves new developers feeling a bit adrift, particularly when they're contemplating building an application whose scale goes well beyond the examples provided in the SE documentation.
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. Desktop applications deal with a set of common resource types beyond message strings, notably images, colors, and fonts. Resources can also be specific to the platform or to the application's "branding".
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.
2.2 What is the target Java platform? (i.e., desktop, server, personal, embedded, card, etc.)
2.3 The Executive Committees would like to ensure JSR submitters think about how their proposed technology relates to all of the Java platform editions. Please provide details here for which platform editions are being targeted by this JSR, and how this JSR has considered the relationship with the other platform editions.
This JSR targets Java Standard Edition. We anticipate supporting implementations for current Java releases as well as Java SE 7 (code name "Dolphin").
Should this JSR be voted on by both Executive Committees?
2.5 What need of the Java community will be addressed by the proposed specification?
The lack of a basic application framework has made Swing application development difficult, particularly for new developers. A standard base for applications will reduce the work required to get applications off the ground and improve their average quality.
2.6 Why isn't this need met by existing specifications?
This particular aspect of Java SE hasn't been addressed before.
2.7 Please give a short description of the underlying technology or technologies:
This specification will define a simple application framework for Swing applications. The core of the framework is an Application base class that defines an extensible launch/startup/shutdown lifecyle. An Application singleton will provide access to localized/branded/platorm-specific resources, persistent session state, and ephemeral session state. A set of classes for managing Actions will also be provided.
2.8 Is there a proposed package name for the API Specification? (i.e., javapi.something, org.something, etc.)
2.9 Does the proposed specification have any dependencies on specific operating systems, CPUs, or I/O devices that you know of?
2.10 Are there any security issues that cannot be addressed by the current security model?
2.11 Are there any internationalization or localization issues?
2.12 Are there any existing specifications that might be rendered obsolete, deprecated, or in need of revision as a result of this work?
2.13 Please describe the anticipated schedule for the development of this specification.
The intention is to deliver this JSR as a component of Java SE 7 (code name "Dolphin"). Early Draft Review would occur in the second half of 2006, Public Review in the first half of 2007, and Proposed Final Draft in the second half of 2007.
2.14 Please describe the anticipated working model for the Expert Group working on developing this specification.
It is anticipated that most work will be done by e-mail, with conference calls if needed.
2.15 It is important to the success of the community and each JSR that the work of the Expert Group be handled in a manner which provides the community and the public with insight into the work the Expert Group is doing, and the decisions that the Expert Group has made. The Executive Committees would like to ensure Spec Leads understand the value of this transparency and ask that each JSR have an operating plan in place for how their JSR will address the involvement of the community and the public. Please provide your plan here, and refer to the Spec Lead Guide for a more detailed description and a set of example questions you may wish to answer in your plan.
An implementation of the spec will be developed on a public java.net project. As part of the java.net infrastructure a public web page will be regularly updated with questions specific to the implementation.
All questions and concerns raised by the community will be answered in a timely manner. As necessary, questions will be forwarded to the EG mailing lists.
2.16 Please describe how the RI and TCK will de delivered, i.e. as part of a profile or platform edition, or stand-alone, or both. Include version information for the profile or platform in your answer.
The RI and TCK will be initially delivered standalone. However Sun also hopes that the JSR will be bundled into a future Java SE platform release (Java SE 7, codename 'Dolphin'). From that point on, the RI and TCK for future revisions of this JSR would only be delivered as part of the Java SE platform.
2.17 Please state the rationale if previous versions are available stand-alone and you are now proposing in 2.13 to only deliver RI and TCK as part of a profile or platform edition (See sections 1.1.5 and 1.1.6 of the JCP 2 document).
2.18 Please provide a description of the business terms for the Specification, RI and TCK that will apply when this JSR is final.
Sun will licence the RI binary for this JSR free of charge.
Sun will license the standalone TCK for this JSR for a flat fee of $50 K. In addition, Sun will make the standalone TCK available for no charge to Java SE TCK licensees, qualified individuals and not for profit organizations.
As described in section 2.16, at such time as the JSR is incorporated into the Java SE platform, the RI and TCK will be also be delivered and licensed as part of the RI and TCK for Java SE 7.
Section 3: Contributions
3.1 Please list any existing documents, specifications, or implementations that describe the technology. Please include links to the documents if they are publicly available.
3.2 Explanation of how these items might be used as a starting point for the work.