Historically NetBeans rely on (nb-)javac to provide Java editing features, refactorings, etc. This has some positive aspects, but also some downsides.
...
Distributing GPLv2+CPEx licensed component in Apache software is hard
it would be way easier to use plain `javac` from a JDK
- nb-javac is downloaded by end-user on demand via autoupdate
On demand download is problematic
user needs internet connection
- server needs to be on (nb-javac isn't yet on Maven central)
e.g. sometimes download fails
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 javacnobody likes forks
ironically Arvind's team is part of JDK organization - e.g. it maintains own fork of JDK's `javac`
- Upstream JDK javac hasn't been IDE ready up to JDK15
- see below for details
- Without NbJavac one needs to run NetBeans on latest JDK to get latest language features
- Serious disadvantage compared to competitors IDEs
- They have their own Java parsers and support latest features on any JDK
What is nb-javac?
"nb-javac" consists of two libraries (nb-javac-api.jar and nb-javac-impl.jar) that provide a NetBeans-specific fork of the Java JDK Java compiler.
...