Apache NetBeans has adopted an "LTS-1" policy for the JDK required to build and run the IDE and platform. Three JDKs are supported - the current JDK at release, plus the previous two LTS releases.

  • Apache NetBeans 18 will be the last release to support running the platform on JDK 8.

  • From Apache NetBeans 19, the minimum JDK required to build and run the IDE or platform will be JDK 11.

  • Future releases will take an "LTS-1" strategy for building and running (and CI testing) of the IDE and platform. Three JDKs will be supported at any one time - the current JDK, plus the previous two LTS releases. eg. NetBeans 20 and 21 (Nov 2023 / Feb 2024) will support JDK 11, 17 and 21. NetBeans 22 (May 2024) will support JDK 17, 21 and 22.

Implementation notes

  • Apache NetBeans users will continue to be recommended to use the current or latest LTS JDK to run the IDE.  The IDE will continue to support users developing projects for/with JDK 8, for as long as nb-javac and other dependencies allow.

  • This policy specifically doesn't address when the default bytecode level across the codebase is increased. This can happen when required, but non-optional modules are free to adopt the minimum JDK as they need to.

  • Optional modules may continue to require a runtime JDK higher than the minimum.  Should it become necessary, build time optional modules might be considered - eg. a build on the minimum JDK may exclude modules that will not run on that JDK at runtime.

  • Some modules that are of independent use (eg. lookup, utilities, etc.) might be nominated and advertised to continue JDK 8 support for the time being. This is not expected to cover the runtime container as a whole - https://netbeans.apache.org/tutorials/nbm-runtime-container.html
  • Once NetBeans 19 is released, the NetBeans 18 release branch could be used to backport and release JDK 8 supporting fixes, subject to any PMC members wanting to manage those releases.

  • The term "platform" is used in reference to the whole framework of modules that we release (eg. via Maven), not just the platform cluster.

Vote

This policy was voted on in April 2023 - (vote / result)


  • No labels

7 Comments

  1. Do we have a list of optional, non-optional modules ?

    1. Anything that can pass commit validation?!  (smile) Might have to look at the various dependencies of all the kit modules?  Possibly running netbeans --modules --list without ergonomics?  Perhaps that could be enhanced to show dependency chains?

  2. Should anything be mentioned on how future LTS and non-LTS support will be handled (i.e., planning for future non-LTS releases and future LTS)? 

    1. For the JDK?  It already is.  If you think the "LTS-1" information, in particular point 3, needs clarification, please say what you're unsure of.

      If you mean NetBeans releases, then there is no current plan to have any future LTS.

      1. After re-reading the above response that make sense. 

        I was trying to be forward thinking planning for future NB releases (maybe the "Release Schedule" could start adding future releases and the applicable compatibility requirements) and expected JDK compatibility. 

        I was also thinking about NB "JDK Source compatibility", but I realize now that the "minimum JDK" is basically that "JDK Source compatibility requirement".  So once a given "minimum JDK runtime/build" is supported, this means the NB code based can leverage new JDK features (i.e., Records, Simple Web Server, etc.). 

        Another concern was NB Source has a dependency on a JDK API which is being deprecated/removed then planning ahead to do work to find replacements for a given release may be needed.

  3. Should there be any link with the Apache NetBeans Releases or Apache NetBeans Release Roadmap page?  Although these pages do seem a little out of date.

    1. After re-reading some of the above, I think this is better a concern on the Release Schedule which appears to be getting updated for  more recent planned releases.