JSR 336: Java SE 7 Proposed Final Draft Specification
This specification defines the seventh edition of the Java Standard
Edition platform.
As an “umbrella” JSR this document indirectly specifies significant
features, which are themselves specified in related new component JSRs and
in maintenance reviews of existing component JSRs. This JSR directly
specifies smaller features, enhancements, and bug fixes that are not part
of any component JSR. The specifications of those changes are contained in
two accompanying documents: Annex 1 is a detailed change summary
and Annex 2 is an annotated API
specification showing the exact differences relative to
Java SE 6.
This specification also includes updated versions of the Java Virtual
Machine Specification and the Java Language Specification in Annex 3.
Please send comments on this document to
jsr-336-comments@mreinhold.org.
Contents | |
---|---|
1 | Themes |
2 | Definitions |
3 | Component JSRs |
4 | Related maintenance reviews |
5 | Feature summary |
6 | Feature details |
A | Change history |
The feature set for Java SE 7 is driven, in large part, by a set
of themes.
The themes describe the main focal points of the release. Some themes
are fairly abstract guiding principles; others are more concrete in that
they identify particular problem areas, significant new feature sets, or
specific target market segments.
The themes are not prioritized, except that the first one is the most
important.
Compatibility As the platform has matured, yet
continued to evolve, many community members have naturally come to expect
that their investments in Java-based systems, whether large or small,
will be preserved. Any program running on a previous release of the
platform must also run—unchanged—on an implementation of
Java SE 7. (There are exceptions to this general rule but they are
exceedingly rare, and they typically involve serious issues such as
security.)Productivity Java SE 7 will promote best coding
practices and reduce boilerplate code by adding productivity features to
the Java language and the Java SE APIs. These features will increase the
abstraction level of most applications in a pragmatic way, with no
significant impact on existing code and a minimal learning curve for all
developers. We propose to enable, among other improvements, the
automatic management of I/O resources, simpler use of generics, and
more-concise exception handling.Performance The Java SE platform has traditionally
offered developers a range of features for writing scalable
multi-threaded applications, for example with monitors in the Java
language and VM and the concurrency utilities defined in JSR 166.
To keep up with the inexorable trend toward multicore CPUs, Java SE 7
will add new concurrency APIs developed by Prof. Doug Lea and the JSR 166
community. These include, in particular, a Fork/Join Framework which can
adaptively scale some types of application code to the available number
of processors. Java SE 7 will further enable I/O-intensive applications
by introducing a true asynchronous I/O API as part of JSR 203.Universality Building upon the initial work in Java SE
6 to support scripting languages, Java SE 7 will introduce, via
JSR 292, a new “invokedynamic” bytecode instruction and related
APIs which will accelerate the performance of dynamic languages on the
Java Virtual Machine.Integration The Java SE Platform provides developers
with a wealth of capabilities, but Java applications do not operate in
isolation. A specific pain point for many years has been that of
interacting with native filesystems, where a good user experience often
requires exposing some details of the underlying platform. Java SE 7
will include a new, flexible filesystem API as part of JSR 203
which will provide portable access to common filesystem operations yet
also allow platform-specific code to be written when desired.
Not every feature in the release is associated with a theme. The
themes outline the primary focal points of the release, but they are not
meant to be exhaustive. Not every theme, likewise, translates into a set
of features. For example the first theme, Compatibility, captures a
critical constraint on the further evolution of the platform.
Additions to the Java SE platform specification are categorized as
either features or enhancements. A feature is, roughly speaking, an
addition of which at least one of the following statements is true:
- It requires two or more weeks of engineering effort to design and
implement, - It is significant in size (e.g., a JSR), or
- It is in high demand by the Java community.
Any addition that is not a feature is considered an
enhancement.
There is, obviously, quite a bit of room for interpretation in reading
the above definition. In order to maximize the visibility of platform
revisions we have generally tended to consider borderline items to be
features rather than enhancements.
Each large new component of the release is specified in its own
separate JSR. All features, JSRs and otherwise, are described in more
detail below, but for ease of reference the component JSRs are enumerated
here along with their JCP status at the time of writing.
Consideration of the following JSRs, while of interest to many in the
Java community, will be deferred to future releases:
Several components of the previous version of the platform are still
available separately or have significant specifications themselves.
Changes to these components will therefore be covered in their own
individual maintenance reviews:
As a convenience, each feature description includes links to relevant
online specifications when such documents exist. These links are not a
normative part of this specification.
the java.util.Locale class
to support IETF BCP 47 (Tags for Identifying Languages)
and UTR 35 (Local Data Markup Language)
Proposed Final Draft
-
Added Annex 3, which
contains the updated JVMS and JLS
Public Review, 2011/5/16
-
Features that are not whole JSRs, together with all enhancements
and bug fixes, will be specified directly by this JSR. The EDR draft of
this JSR stated that they would be specified in concurrent maintenance
reviews of JSR 270, the umbrella JSR for
Java SE 6. -
Updated the list of related maintenance
reviews: Added JSR 114: JDBC Rowsets and
JSR 221: JDBC 4.0; removed JSR 206: Java API for XML Processing 1.4 and JSR 222: Java Architecture for XML Binding, since
they did not change. -
Clarified the summary description of JSR 292
to make it clear that the VM, language, and API specifications are all
being extended by that JSR.