Recently, we upgraded master to support java 8, there is definitely going some annoyances to developers working on other projects other than master. Below are some we are ware of:
- Devs are going to find themselves having to keep switching between JDKs whenever they are going to work on 1.10.x and 1.11.x branches, this also applies when working on modules that support older JDKs. Most modern IDEs will let you configure a different JDK for each run configuration so if you are not using the command line this will be less of an issue when working on module projects. We are trying to find ways to minimize the pain from this issue but we haven’t yet come up with a solution therefore we are welcoming any ideas from the community, it might involve writing some sort of script that can set set JAVA_HOME to the appropriate JDK at the beginning of each maven build, but am not 100% sure if this is actually possible or if it can be done via a plugin.
- It is possible for a module developer to mistakenly code against new APIs in java 8, compile and test functionality on java 8, i would think of this as being careless but i think it can happen.
- Java 8 is also very strict in some ways when it comes to transient dependencies as i mentioned on TRUNK-4583 in the comment on 2015-05-14 19:01:00, so DEVs might find their code failing to compile because of this. In summary, if i have projects A, B and C where B depends on A, C depends on B and C doesn’t directly reference any class from A, java 8 requires project A to be on the classpath when compiling C which is not the case for older JDKs.