More from the JEP 261 backlog

Jonathan Gibbons jonathan.gibbons at oracle.com
Tue Jul 23 22:09:08 UTC 2024


Stephan,

While the encoding used for `ct.sym` may be an internal implementation 
detail, the question you maybe should be asking is, "what is the 
content?" as in, "what are the modules (if any), classes, interfaces, 
and their members, that are deemed to be part of the "public" API for 
that release. If you start with modules (JDK 9 and later) beginning with 
`java.*` or `jdk.*` that do not include the word`internal`, and look for 
the public classes in the exported packages of those modules, you'll be 
off to a good start.

Once you have the filter, at least for releases using modules, should be 
easy enough to write an annotation processor that can list the relevant 
API in any given release of JDK. For releases before JDK 9, the 
top-level filter may be a little more ad-hoc.

-- Jon

On 7/23/24 6:30 AM, Stephan Herrmann wrote:
> Alex, Joe,
>
> From both your answers I learned that I was working from assumptions 
> that are not shared by Oracle. I apologize.
>
> Just to show where we are coming from, and to mention that all this 
> was done in the best of intentions to help the Java community at 
> large, some words of explanation:
>
> Back in the time of JEP 261, we - developers of the Eclipse compiler 
> for Java, who are not laywers - believed that we were required to 
> implement the --release option in order to claim support for Java 9. 
> Within the existing architectural context, using information from 
> ct.sym was literally the only possibility we saw.
>
> As of now the underlying problem remains, but we'll have to come back 
> with a different set of questions.
>
> regards,
> Stephan
>


More information about the amber-spec-observers mailing list