Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compatibility with merged JDK 9 mainline [SPR-13344] #17928

Closed
spring-projects-issues opened this issue Aug 12, 2015 · 4 comments
Closed

Compatibility with merged JDK 9 mainline [SPR-13344] #17928

spring-projects-issues opened this issue Aug 12, 2015 · 4 comments
Assignees
Milestone

Comments

@spring-projects-issues
Copy link
Collaborator

@spring-projects-issues spring-projects-issues commented Aug 12, 2015

Juergen Hoeller opened SPR-13344 and commented

As of 4.2.1, the core Spring Framework is fully compatible with mid-2015 JDK 9 builds already, at runtime as well as for running the framework build.

For 4.3, we aim for full runtime compatibility with the merged JDK 9 mainline, including the current state of the Jigsaw module system which has been developed in a parallel branch for a long time. Note that this not include any actual support for JDK 9 modules yet; this remains a Spring 5 topic.


Issue Links:

  • #18289 Stable module names for Spring Framework jars on JDK 9 module path ("is depended on by")
  • #17778 Upgrade core framework build to JDK 11 ("is depended on by")
  • #19211 Out-of-the-box build compatibility with JDK 9 build 136 ("is depended on by")
  • #19138 Upgrade build to Gradle 3.0
  • #19148 Document Spring recommendations/restrictions for Java 9 module setups
  • #19642 Remove use of Boolean constructors in tests
  • #19643 Avoid use of double constructor of BigDecimal in tests
  • #19055 Avoid deprecated Class.newInstance in favor of constructor-based instantiation
  • #19056 SerializableTypeWrapper should reobtain type accessors from declaring interface
@spring-projects-issues
Copy link
Collaborator Author

@spring-projects-issues spring-projects-issues commented Mar 25, 2016

Juergen Hoeller commented

Gradle doesn't build on JDK 9 build 111, not finding javac for the compile tasks. I'm afraid we'll have to wait for an upcoming Gradle release to address this... which might take a while :-(

@spring-projects-issues
Copy link
Collaborator Author

@spring-projects-issues spring-projects-issues commented Apr 13, 2016

Juergen Hoeller commented

Since our remaining timeframe does not allow for proper JDK 9 b111+ setup in Spring Framework 4.3 RC2 anymore, let's rather move this to the 5.0 timeline. I've dropped our previous - now outdated - JDK 9 build support from build.gradle for the time being, both in 4.3 RC2 and in 4.2.6, in particular restoring standard use of AspectJ 1.8.9 over AspectJ 1.9 beta 3 (which is actually older than 1.8.9).

It is still a goal for the Spring Framework 4.3 line to be compatible with JDK 9 in general. We might cover this with integration tests from now on though, not attempting to make that framework generation buildable on JDK 9 anymore. At the same time, we still intend to build Spring Framework 5.0 on JDK 9 (#17778), although even that might not happen before the later milestone phase (~M3).

@spring-projects-issues
Copy link
Collaborator Author

@spring-projects-issues spring-projects-issues commented Jun 15, 2016

Sam Brannen commented

FYI: see my related comments in #17778 regarding building with JDK 9 EA and Gradle 3.0 nightly builds.

@spring-projects-issues
Copy link
Collaborator Author

@spring-projects-issues spring-projects-issues commented Jul 27, 2016

Juergen Hoeller commented

As of 5.0 M1, with AspectJ upgraded to 1.9 beta 5 and our build script revised to explicitly list dependencies beyond the java.base mode, the codebase and the setup is fundamentally compatible with current JDK 9 builds. This is not just about runtime compatibility, it is about the build executing on JDK 9, and all tests passing (with the notable exception of our JRuby integration test for web script templating).

At the moment, beyond pointing JAVA_HOME to a JDK 9 installation, one needs to do gradlew wrapper --gradle-version 3.0-milestone-2 first since Gradle 2.14 is not able to find the Java compiler on JDK 9 otherwise. Then just do gradlew clean test for a standard run. Once Gradle 3.0 is generally available (expected later this year), we'll upgrade to it by default; at that point it'll literally remain a switch in JAVA_HOME.

For more advanced efforts, consider changing sourceCompatibility and targetCompatibility to 1.9 in our build.gradle script. Compilation also passes but - as per 5.0 M1 - AspectJ and EclipseLink tests are going to fail at runtime. Note that we do not intend to actually switch our build to 1.9 bytecode level in the 5.0 generation, not even for the tests; we might upgrade the latter for 5.1 eventually.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants