JDK 9 is not (yet) Feature Complete -- how will we get there?

mark.reinhold at oracle.com mark.reinhold at oracle.com
Fri Jun 10 14:24:37 UTC 2016

The JDK 9 schedule [1] lists a date for the Feature Complete milestone
of 2016/5/26, about two weeks ago.  There's been some concern that this
means that the JDK 9 (and hence Java SE 9) feature set is somehow frozen,
but that's not the case.

The milestones listed in the JDK 9 schedule are condition-driven rather
than date-driven, as noted along with the milestone definitions [2].  We
try our best to reach the goal of each milestone by its scheduled date.
If we miss a date then we don't just blindly constrain further work so as
to fit the date, we instead manage the remaining changes relevant to the
milestone so as to reach its goal in a reasonable time frame without
putting the final GA date at undue risk.  When we finally do reach the
goal then we declare the milestone on that date.

The goal of the Feature Complete milestone is to get all of the planned
features, i.e., JEPs, and smaller enhancements integrated into the JDK 9
master forest, together with their unit tests.  As of today most JEPs
targeted to JDK 9 have been completed [3].  Fifteen JEPs remain, and a
number of small enhancements are listed as intended for JDK 9 but are
still either open or in progress.

To manage the remaining JEPs and small enhancements so that we can reach
the Feature Complete state in a timely fashion I hereby propose the
following process:

  - If you own a JEP or a small enhancement that is not yet complete then
    you can request an FC extension as follows: Update the JBS issue to
    add a comment whose first line is "FC Extension Request".  In that
    comment describe the remaining work to be done, the risk level, a
    brief justification, and your best estimate of the date by which the
    feature will be complete.  Add the label "jdk9-fc-request" to the

  - The Area Leads, relevant Group Leads, and I will review such requests
    on a regular basis, at least weekly if not more often.  One of us
    will take one of the following actions:

      - Approve the request by adding the label "jdk9-fc-yes".

      - Reject the request by adding the label "jdk9-fc-no", along
        with a comment describing the reason for this action.

      - Request more information by adding the label "jdk9-fc-nmi"
        ("nmi" = "needs more information"), along with a comment
        describing what information is requested.

  - If you're asked to provide more information for an FC extension
    request then please do so in a new comment in the issue, and then
    remove the "jdk9-fc-nmi" label so that we see that it's ready for

  - If your request is approved then update the issue's due date to the
    expected completion date.

  - If you own a JEP that's targeted to JDK 9, but won't make it, then
    please propose to drop it [4]; this will move the JEP back to the
    Candidate state unless there are strong objections.  If you own a
    small enhancement whose fix version is 9, but won't make it, then
    please clear the fix-version field.

If a JEP has been granted an FC extension then enhancement issues that
block the JEP's issue are automatically considered to have FC extensions.

If a JEP has not yet been targeted to JDK 9 then you can still propose to
target it to the release, but going forward the bar for accepting new
features will be increasingly high.

For the record, the Area Leads are Mikael Vidstedt (VM) and Brian Goetz
(Language and Libraries).  The relevant Group Leads are as follows, per
the Census [5]:

  Artem Ananiev - AWT
  Alan Bateman - Core Libraries
  Tim Bell - Build
  Daniel D. Daugherty - Serviceability
  Jonathan Gibbons - Compiler
  Vladimir Kozlov - HotSpot
  Michael McMahon - Networking
  Sean Mullan - Security
  Masayoshi Okutsu - Internationalization
  Pavel Porvatov - Swing
  Phil Race - 2D Graphics & Sound
  Dalibor Topic - Porters

JDK 9 Committers are invited to comment on this process proposal.  If no
serious objections are raised in one week's time, by 15:00 UTC on 17 June
2016, then this is the process that we'll use.

In anticipation that we will use this process, more or less, I encourage
owners of not-yet-complete JEPs and small enhancements to go ahead and
request extensions as described above, if desired, so that we can move
quickly once the process is in place.

- Mark

[1] http://openjdk.java.net/projects/jdk9/
[2] http://openjdk.java.net/projects/jdk8/milestones#definitions
[3] http://j.mp/jdk9-features-jbs
[4] http://cr.openjdk.java.net/~mr/jep/jep-2.0-02.html#Proposed-to-Drop
[5] http://openjdk.java.net/census

More information about the jdk9-dev mailing list