Ship jdk7 ct.sym with jdk8?

Joel Borggrén-Franck joel.franck at oracle.com
Tue Mar 12 01:47:10 PDT 2013


Hi Jon, Martin, all,

On 03/12/2013 12:35 AM, Jonathan Gibbons wrote:
> On 03/11/2013 04:29 PM, Martin Buchholz wrote:
>> If you want to build some java software that targets jdk6, the natural way
>> to do it is via -target 6.  But then javac will complain it also wants
>> -source 6 (that's easy to fix) but also a bootclasspath for jdk6, which is
>> harder for the user to provide.
>>
>> One obvious way to make the user's life easier is to ship a ct6.sym,
>> ct7.sym, ct8.sym,
>> where each .sym contains the deltas relative to the previous version.
>>  Then we could have -target 6 default to compiling against ct6.sym, while
>> -target 8 will default to ct8.sym:ct7.sym:ct6.sym
>>
>> Perhaps you are already doing this kind of thing to support profiles in jdk8?
>
> It would be logistically hard to include binary products from earlier builds
> in the current build.
>

Why? It is just a file. If we want to make javac a more robust cross 
compiler (and I think we should) we should fix the logistics until we can do 
what we want.

> A better solution would be to verify that the @since tags are up to date (I
> know you did this for JDK 5) and then feed the @since info into ct.sym, so
> that the current ct.sym knows about when API was first available.  That way,
> the user could specify -target 6, and javac could use the appropriate subset
> of ct.sym.
>

As Martin notes this would make it better. However the limit of this 
approach is when we evolve the current API which I think is both where this 
is needed the most, and also something we (compatibly) want to.

cheers
/Joel



More information about the compiler-dev mailing list