Hi, Igniters!

Following the recent migration of the Ignite 2 master branch to JDK 17 and
the decision to drop JDK 11 support starting with 2.19.0, I'd like to start
a discussion about the usage of newer Java language features in the Ignite
2 codebase and whether some conventions should be documented in coding
guidelines [0].

Examples include:


   - var
   - pattern matching for instanceof
   - records
   - text blocks for multiline strings
   - other language features introduced between Java 11 and Java 17

The goal is to understand which features we want to encourage, which should
be used with limitations, and whether any rules should be enforced through
coding guidelines or code style checks in CI.

Questions for discussion:

   1. Which Java 17 language features should be allowed in new Ignite 2
   code?
   2. Are there features we should avoid despite them being available?
   3. Should any conventions be added to coding guidelines?
   4. Would it make sense to enforce some of them via Checkstyle?

As a reference, [1] is a summary of language changes across Java releases:

[0] https://cwiki.apache.org/confluence/display/IGNITE/Coding+Guidelines

[1] https://javaevolved.github.io

Reply via email to