|Re: [jakartaee-platform-dev] Java 11|
First of all, there are no reall APIs in the JDK aside from potentially the Collections API ;-)
Everything else are mostly implementations, there are no multiple implementations of e.g. java.time because of its design decisions.
Second, specifications don’t run anywhere, they are just the ASCIIDoc text, what runs are implementations of the Jakarta APIs.
APIs have no use for "var" because that’S not usable e.g. in a public method or interface, so the only place this could be used would be implementations. Implementations MAY use Java 11 specific language constructs or JDK elements, therefore the TCK should also run under Java 11 but like the API (thanks Rudy for the confirmation and pointer) it still needs to be backward compatible with Java 8.
Therefore the second assumption (if you Substitute "Specification" with the "API") is correct, the first one does not really make sense at least for "var", and if an API really did insist on using Java 9 or 11 specific elements, it MUST go down the rabbit-hole of Multi-release-JARs and still provide a Java 8 compatible default.
Recently it was decided that Java 11 will be mandatory for Jakarta EE 9.1, but I wonder what this actually allows / enforces. So please officially clarify (please only official decision but not "I think" or "My 2 cents are" or other non-binding comments…):
* Specifications MAY use Java 11 specific APIs and Java 11 key words like "var"?
* Specifications MUST still be able to be used on JRE 8?
Back to the top