Proposed implementation of JEP 182 in JDK 11: drop javac support for -source/-target/--release 6

forax at forax at
Thu May 10 21:05:14 UTC 2018

----- Mail original -----
> De: "Ben Evans" <benjamin.john.evans at>
> À: "Remi Forax" <forax at>
> Cc: "joe darcy" <joe.darcy at>, "jdk-dev" <jdk-dev at>
> Envoyé: Jeudi 10 Mai 2018 20:56:26
> Objet: Re: Proposed implementation of JEP 182 in JDK 11: drop javac support for -source/-target/--release 6

> Hi Remi,

Hi Ben,

> I'm going to take issue with both of your reasons. Sorry about that :)


> 1. That Android chose an approach to their ecosystem (adoption over
> everything else) is scarcely the fault of the mainstream Java
> community, and we shouldn't sacrifice our forward progress for their
> potential marginal convenience.

I do not think it slow our forward progress, if you take a look to the past,
at some point in the past, some people decide to stay on 1.4, while others were already use 6,
we end up with more choices, each library developers decide if it makes sense for their library to still be compatible with 1.4 or not.
Some new libraries emerge, been developed for 6 from the beginning, using using generics, annotations, offering even more choices.
Back in the nowadays world, some libraries will choose to stay on 6 while some moved to use lambdas, default methods, that's doesn't slow us but offer us more choice.     

> Gentle additional pressure on older Android users to upgrade and stop being walking security liabilities is IMO a good thing.

That's another discussion. My wife as a fully patched Android that only support 1.6.

> 2. This is a major milestone, and I would argue that it is important
> that it lands on an LTS release & avoid baking the capability to
> generate Java 6 bytecode into the ecosystem for another LTS cycle
> (which are quite long).

This is exactly the kind of change i would like to appear at the beginning of a new LTS cycle than at the end,
so library maintainers have the time to think how to deal with that instead of rushing a support at the end of a LTS cycle.

We need to move forward, everybody agree with that, but there is no need to rush, we only need to wait 4 months. 

> Thanks,
> Ben


> On Thu, May 10, 2018 at 7:38 PM, Remi Forax <forax at> wrote:
>> Hi Joe,
>> this is really a big change, there are two good reason to not do that now:
>> - There is really a good chance that it will split the ecosystem because while
>> Android as now adopted the OpenJDK, there are few phones that support the
>> Android version built on top of the OpenJDK. As a library writer, i do not want
>> to have to support two version of my library, the one compatible with 6, the
>> once compatible with a more recent version of the OpenJDK.
>>   I agree with you that 6 is an old release but we should not base our decision
>>   only on the release date of 6 but also on the current state of the ecosystem.
>> - This is the kind of change that should be done at the start of the development
>> of a release, with a notice before, and not in the middle of the development,
>> here, you are changing the whole story of how to migrate to 11, i think
>> developer deserves to be aware of this kind of change in advance.
>> The good news is that we are now only 4 months from the start of the development
>> of 12, which is plenty of time to announce that the support of 6 in the
>> compiler will be remove in 12 and not a long time to wait before actually doing
>> the actual change.
>> regards,
>> Rémi
>> ----- Mail original -----
>>> De: "joe darcy" <joe.darcy at>
>>> À: "jdk-dev" <jdk-dev at>
>>> Envoyé: Jeudi 10 Mai 2018 19:56:03
>>> Objet: Proposed implementation of JEP 182 in JDK 11: drop javac support for
>>> -source/-target/--release 6
>>> Hello,
>>> As background, JEP 182 "Policy for Retiring javac -source and -target
>>> Options" ( puts forth a "one plus three
>>> back" policy for the supported range of -source and -target arguments to
>>> javac. (As of JDK 9, a matching range of arguments is supported for the
>>> --release option.)
>>> This policy was formulated under the old release model before the six
>>> month release cadence.
>>> Under this policy, support for the 5/1.5 argument was removed in JDK 9.
>>> JDK 10 added support for a 10 argument and retained all the older values
>>> that were supported under JDK 9.
>>> JDK 6 first shipped at the end of 2006, which will be nearly 12 years
>>> before the planned JDK 11 GA date. JDK 7 first shipped in 2011.
>>> Given the age of JDK 6, I think it is reasonable in 2018 for JDK 11 to
>>> drop support for -source/-target/--release 1.6/6, leaving support for 7,
>>> 8, 9, 10, and 11. This provides support for four rather than three older
>>> versions in JDK 11, but better matches the time span of releases
>>> discussed in the JEP.
>>> Future code reviews of the implementation of this removal and related work
>>>     JDK-8028563: Remove javac support for 6/1.6 source and target values
>>>     JDK-8173606: Deprecate constructors of 7-era visitors
>>> would take place on compiler-dev.
>>> Comments?
>>> Cheers,
> >> -Joe

More information about the jdk-dev mailing list