Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[jpa-dev] Background on why SPEC APIs can compile with an earlier Java SE version than the Jakarta EE Platform SE minimum requirement

Jakarta EE SPEC APIs need to be binary compatible with the minimum (Jakarta EE Platform) Java SE version but that doesn't require compiling with the minimum Java SE version as you can use an earlier SE version and still have classes that are bytecode compatible with the minimum Java SE version.  We get this for free with Java, as long as the related Java SE versions are compatible in the sense that the minimum Java SE must not break anything that the earlier SE version depends on. 

Another interesting related fact is that for Jakarta EE 9.1, we improved the TCK signature test tool [1] to support -IgnoreJDKClass for making it possible to ignore certain JDK classes that we used to validate SPEC APIs against.  This means that we still validate that the SPEC API classes depend on the right JDK class name but we no longer validate the JDK class fields/methods.  This means that in general we can run TCK signature testing against newer JDK versions and expect that to mostly work due to [2].  This was done by including a list of JDK classes to pass to -IgnoreJDKClass (the list cannot be changed by users as its embedded in our TCKs).  I'd like us to improve our signature testing further to be more future (JDK) proof but this is a good enough change for now.  If future JDK versions include new classes that might need to be excluded, we can always release a TCK service release with an updated list of JDK to exclude.

Scott

[1] https://github.com/jtulach/netbeans-apitest
[2] https://github.com/jakartaee/platform-tck/issues/156


Back to the top