Historically NetBeans project relies on (nb-)javac for Java editing features, i.e., parsing and lexing, for features such as syntax coloring, code completion, refactorings, and the like. This has some positive aspects, but also some downsides. Read more about nb-javac in Differences: nb-javac.
NetBeans 13 uses Javac from JDK 17!
Approved
Jira server ASF JIRA columns key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution serverId 5aa69414-a9e9-3523-82ec-879b028fb15b key LEGAL-563 - PR-3206 integrates the below proposed solution into NetBeans 17.
- PR-1 makes sure only Classpath exception covered files are used in the
nb-javac
generated binary - PR-3251 includes the here-in proposed Javac in all NetBeans complementary binaries
- PR-2783 allows compilation against JDK-17 Javac API - removes need for (reflection & co.) hacks
Pros:
- Adopting latest Java language features is simple(r)
- Errors, hints, warnings in the editor match exactly the command line build
- Close co-operation with JDK language team
...
On demand download is problematic
user needs internet connection
- download server needs to be on (finally nb-javac is at least hosted on Maven central)
e.g. sometimes download fails
- Code is complicated
- NetBeans code in
java.source
& related modules if full of reflection - NetBeans is using internal API of javac (Trees API) and it changes incompatibly with every release
- NetBeans code in
Testing matrix is complicated
each supported JDK needs to be tested twice - with
nb-javac
and withoutnb-javac
Every bug/problem one needs to know whether
nb-javac
was or wasn't in useRecent version
nb-javac-15
isn't really stable
nb-javac
is a fork of JDK's javacApproved
Jira server ASF JIRA columns key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution serverId 5aa69414-a9e9-3523-82ec-879b028fb15b key LEGAL-563 - PR-3206 integrates the here-in proposed solution into NetBeans (post 12.6).
- PR-1 makes sure only Classpath exception covered files are used in the nb-
nobody likes forks
ironically Arvind's team is part of JDK organization - e.g. it maintains own fork of JDK's
javac
Status
javac
Eliminating the need for nb-javac
...