Igniters, We already had some discussion about using modern Java versions for Ignite 3.0 development [1] but we still don't have consensus. As I see from this discussion the strongest argument for Java 11 is the fact that Java 11 is the latest LTS release which will have premier support until September 2023. So I don't see any reason for preferring any other version of Java at this moment.
The purpose of this thread is to gather opinions about using Java 11 in the Ignite 3.0 project and, eventually, reach a consensus on this. I want to share my several arguments in favor of abandoning Java 8 and preferring Java 11: * Java 8 has gone through the End of Public Updates process for legacy releases. So it doesn't make sense to start new development on Java 8. * Java 9+ brings Jigsaw modularization which allows us to have more fine-grained structure of Ignite modules and APIs in the future. * Ignite actively uses Unsafe functionality which, firstly, isn't public, and secondly, leads to problems with running Ignite under Java 9+ (modularization which requires dozens of command-line options in order to forcibly export corresponding packages) and GraalVM. Such a situation could be described as bad user experience and we should fix it. Var handles [2] could be used for solving described problems. * Java 9+ introduces Flight Recorder API [3] which could be used in the Ignite project for lightweight profiling of internal processes. Please, share your opinions, objections and ideas about this topic. I hope we will not have serious disagreements and the consensus will be reached quickly. 1. http://apache-ignite-developers.2346864.n4.nabble.com/DISCUSS-Ignite-3-0-development-approach-tp49922p50295.html 2. https://docs.oracle.com/javase/9/docs/api/java/lang/invoke/VarHandle.html 3. https://docs.oracle.com/en/java/javase/11/docs/api/jdk.jfr/jdk/jfr/FlightRecorder.html