Find JSRs
Submit this Search


Ad Banner
 
 
 
 

JSRs: Java Specification Requests
JSR 336: JavaTM SE 7 Release Contents

Original Java Specification Request (JSR)

Identification | Request | Contributions

Section 1. Identification

Submitting Member: Oracle

Name of Contact Person: Mark Reinhold

E-Mail Address: mark.reinhold@oracle.com

Telephone Number: +1 408 276 7256

Fax Number: -


Specification Lead: Mark Reinhold

E-Mail Address: mark.reinhold@oracle.com

Telephone Number: +1 408 276 7256

Fax Number: -


Initial Expert Group Membership:

Oracle
Ericsson
IBM
Red Hat
SAP

Supporting this JSR:

Eclipse Foundation
Ericsson
IBM
Red Hat
SAP



Section 2: Request

2.1 Please describe the proposed Specification:

The Java Platform, Standard Edition ("Java SE") is the core Java platform for general-purpose computing. In this release of the platform, Java SE 7, we intend to address a number of areas based upon trends in the programming community, trends in hardware architectures, and above all our continued commitment to ensuring the broadest possible success of core Java technology for years to come.

The Java SE 7 Platform Specification will build upon the Java Language Specification, the Java Virtual Machine Specification, and the Java SE APIs defined in Java SE 6 by JSR 270. The Platform Specification does not itself define new features, or enhancements to existing specifications; rather, it enumerates features and enhancements defined in component JSRs or through the JCP maintenance process.

The Java SE 7 Platform Specification will aim to support the creation of maintainable, scalable, and high-performance Java applications across a range of computing environments. We propose four main themes: Productivity, Performance, Universality, and Integration.

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

Java SE 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.

2.2 What is the target Java platform? (i.e., desktop, server, personal, embedded, card, etc.)

This JSR defines a release of the Java SE platform targeted at embedded, desktop, server, and cloud environments.

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 does not target a platform edition; it defines a platform edition, namely version 7 of the Java platform, Standard Edition. Members of the Java ME and Java EE communities have already been involved in preliminary planning activities for this release. We look forward to their continued involvement as work progresses.

2.4 Should this JSR be voted on by both Executive Committees?

No; SE/EE EC only.

2.5 What need of the Java community will be addressed by the proposed specification?

Continually improving the productivity of Java developers is critical to keeping the Java SE platform at the forefront of software development.

Exploiting the opportunities of multicore CPUs in a way that is safe and practical for developers is essential for all Java applications.

With the advent of new programming languages on the JVM it is important for the JVM to reflect the needs of language implementors, and that the Java language be able to interoperate with those languages.

In order to provide a competitive user experience Java applications sometimes need the ability to access and manipulate, in a controlled and testable fashion, the native semantics of the file system of the underlying platform.

2.6 Why isn't this need met by existing specifications?

While existing (in progress) JSRs and open-source projects have investigated the evolution of the Java language, the JVM, and the Java SE APIs, only a platform JSR can unite the results of these investigations into a new edition of the Java SE platform.

2.7 Please give a short description of the underlying technology or technologies:

The technologies that make up Java SE 7 will be described by the component JSRs enumerated in the Java SE 7 Platform Specification. We propose a candidate list of component JSRs in section 3.1.

2.8 Is there a proposed package name for the API Specification? (i.e., javapi.something, org.something, etc.)

The Java SE platform itself does not have a single package name. All of its requirements are reflected in the packages of its constituent Java SE APIs.

2.9 Does the proposed specification have any dependencies on specific operating systems, CPUs, or I/O devices that you know of?

No.

2.10 Are there any security issues that cannot be addressed by the current security model?

None are known at this time.

2.11 Are there any internationalization or localization issues?

None are known at this time.

2.12 Are there any existing specifications that might be rendered obsolete, deprecated, or in need of revision as a result of this work?

JSR 901 (Java Language Specification), JSR 924 (JVM Specification), and the specifications for certain java.*/javax.* packages will need to be revised as a result of this JSR.

2.13 Please describe the anticipated schedule for the development of this specification.

Expert Group formation: December 2010
Early Draft Review: January 2010
Public Review: March 2011
Proposed Final Draft: May 2011
Final Release: July 2011

2.14 Please describe the anticipated working model for the Expert Group working on developing this specification.

The Expert Group will communicate primarily via e-mail.

2.15 Provide detailed answers to the transparency checklist, making sure to include URLs as appropriate:

  • The public can read the names of the people on the Expert Group.

We intend this to be the case.

  • The Expert Group business is regularly reported on a publicly readable alias.

We intend this to be the case.

  • The schedule for the JSR is publicly available, it's current, and I update it regularly.

We intend this to be the case.

  • The public can read/write to a wiki for my JSR.

Rather than a wiki which the Expert Group must take time out to visit, we intend to implement a pair of mailing lists following the approach of JSR 294 and JSR 330. First, Expert Group business will be carried out on a mailing list dedicated to Expert Group members. Second, an "observer" mailing list which anyone may join will receive the traffic of the Expert Group list. The observer list allows the public to follow Expert Group business, and is writable to allow the public to make comments for other observers to see and make further comment on. Expert Group members are under no obligation to join the observer list and partake in public discussion. In addition to these lists we will maintain a private Expert-Group-only list for administrative and other non-technical traffic.

  • I read and respond to posts on the discussion board for my JSR on jcp.org.

In lieu of tracking the jcp.org discussion board, and in light of the considerable public attention that the observer list is likely to receive, the Java SE 7 Platform Specification Lead (or his designates) will read the observer list and respond directly as appropriate.

  • There is an issue-tracker for my JSR that the public can read.

Since the majority of Java SE 7 is developed in component JSRs, it is intended that the public track those JSRs according to whatever mechanisms are offered by the JSRs' specification leads.

  • I have spoken at conferences and events about my JSR recently.

Yes. The Java SE team at Oracle, as well as external contributors, have spoken and written about planned enhancements for some time.

  • I am using open-source processes for the development of the RI and/or TCK.

The source code for most of the Reference Implementation is being developed in the JDK 7 Project within the OpenJDK Community. Many of the features and enhancements described here have already been prototyped and are available for anyone to test and review in the weekly and milestone binary releases published at http://download.java.net/jdk7. We intend to continue this practice as we move toward the Final Release.

  • The Update tab for my JSR has links to and information about all public communication mechanisms and sites for the development of my JSR.

We intend this to be the case.

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 will be the Java Development Kit (JDK), version 7. The TCK will be the Java Compatibility Kit (JCK), version 7.

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).

N/A

2.18 Please provide a description of the business terms for the Specification, RI and TCK that will apply when this JSR is final.

Specification license
Reference Implementation license
TCK license





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.

The following JSRs will be proposed for inclusion as components of the Java SE 7 Umbrella JSR. The final Java SE 7 Platform Specification might not include all of these JSRs, and it might include some JSRs not listed here.

  • JSR 203: More New I/O APIs for the Java Platform ("NIO.2")
  • JSR 292: Supporting Dynamically Typed Languages on the Java Platform
  • JSR 334: Small Enhancements to the Java Programming Language (OpenJDK Project Coin)

Consideration of the following JSRs, while of interest to many in the Java community, will most likely be deferred to future Java SE releases:

  • JSR 260: Javadoc Tag Technology Update
  • JSR 295: Beans Binding
  • JSR 296: Swing Application Framework
  • JSR 305: Annotations for Software Defect Detection
  • JSR 308: Annotations on Java Types
  • JSR 310: Date and Time API

The following core JCP specifications will be enhanced under the auspices of the Java SE 7 Umbrella JSR:

  • JSR 901: Java Language Specification — Maintenance Review to incorporate fixes since Java SE 5.0 and changes from the above JSRs
  • JSR 924: JVM Specification — Maintenance Review to incorporate changes made in Java SE 6.0 and JSR 292
  • Java SE APIs — Maintenance Review to incorporate changes made by routine maintenance and small-scale enhancement

Changes defined in Maintenance Reviews of various bundled stand-alone JSRs will also be included:

  • JSR 199: Java Compiler API
  • JSR 206: Java API for XML Processing (JAXP)
  • JSR 222: Java Architecture for XML Binding (JAXB)
  • JSR 224: Java API for XML-Based Web Services (JAX-WS)
  • JSR 269: Pluggable Annotation-Processing API

In addition to the JSRs listed above, a number of smaller enhancements are planned:

  • Thread-safe concurrent class loaders
  • Unicode 6.0
  • Enhanced locale support (IETF BCP 47 and UTR 35)
  • TLS 1.2
  • Elliptic-curve cryptography
  • JDBC 4.1
  • Translucent and shaped windows
  • Heavyweight/lightweight component mixing
  • Swing Nimbus look-and-feel
  • Swing JLayer component

3.2 Explanation of how these items might be used as a starting point for the work.

See section 2.1.