-1

Background: http://wiki.apidesign.org/wiki/Portability


Alternative:

- I will maintain what ever needs to be maintained to keep JDK 8 CI tests 
running

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

- The minimum JDK to run and test the NetBeans Platform and modules up to 
VSCode & Jackpot remains JDK 8.

- Usage of JDK11, JDK17, etc. API is possible in dedicated modules via http://
wiki.apidesign.org/wiki/AlternativeImplementation


Justification:

Writing in Java (a language designed to write once and run everywhere) greatly 
increases portability. However there is another axis hurting portability - the 
supported JDK version. Of course, should a library be widely used, it has to 
support as oldest JDK as possible. These days it is JDK8 - the primary reason 
being that Android supports JDK8 - as such, should a library aspire to be used 
on Android (as well as regular Java), it needs to stick to version eight.

There's transitivity of non-portability - the portability of the final 
application cannot be bigger than portability of the least portable library 
used. This applies also to 3rd party dependencies a framework or library has: 
again their non-portability may negatively affect portability of such framework 
or library. 

Of course, writing portable libraries is harder. It requires more work from 
the API author, more self-control, more suffering. However such suffering is 
justifiable. There is usually a single API writer, but there are many users to 
it. What matters is to simplify and improve experience of those API users - 
own author suffering doesn't matter that much.

> # Proposed policy
> 
> * 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.
> 
> ## Background
> 
> The Apache NetBeans IDE has officially required JDK 11 to build and
> run since NetBeans 13 in March 2022. The platform (and unofficially
> the IDE) have continued to support running on JDK 8 - all modules
> requiring a higher JDK must currently be optional. Various tests have
> continued on JDK 8.
> 
> This situation is causing issues as workarounds must be found for
> currently non-optional features that have dependencies or other
> requirements for running on a higher JDK (eg. Maven indexing / Lucene
> [1]). It's causing delays, complications and missed testing time in
> integration of new features (eg. problems merging support for EE 10
> [2]). Supporting an increasing range of JDKs is causing increasing
> workload, both for people and CI. Meeting the challenges of deprecated
> (for removal) features in the JDK is also complicated by the
> additional JDK requirements.
> 
> ## 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 proposal specifically doesn't address when the default bytecode
> level across the codebase is increased. This can happen when required,
> but non-optional modules would be 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.
> 
> [1] https://github.com/apache/netbeans/pull/4999
> [2] https://github.com/apache/netbeans/pull/4692
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@netbeans.apache.org
> For additional commands, e-mail: dev-h...@netbeans.apache.org
> 
> For further information about the NetBeans mailing lists, visit:
> https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists




---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@netbeans.apache.org
For additional commands, e-mail: dev-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists



Reply via email to