Apache NetBeans IDE 29 Is Here – What the New Release Actually Changes for You
The final build of Apache NetBeans IDE 29 landed today, and it brings enough under‑the‑hood tweaks to make daily work smoother without promising miracles. This rundown highlights the most noticeable updates, points out a few oddball regressions, and tells you whether upgrading is worth your time.
Gradle and Maven – Better Compatibility, Some Noise
NetBeans finally lets you run classes from a specific Gradle source set directly in the IDE’s action menu. That means “Run Main” on a test‑only class no longer spawns the whole application; it just compiles that slice and executes it. For developers who keep integration tests in separate source sets, this cuts down on needless rebuilds.
The bundled Maven version has been bumped to 3.9.12, and a handful of embedder deprecations were cleaned up. Users reporting “UnsupportedOperationException” when opening the Run Goals panel will see that error disappear – a bug that showed up after the last JDK upgrade for many.
On the downside, the Gradle downloader TLS handshake workaround was reverted. A small subset of Windows users who run behind corporate proxies reported flaky dependency resolution in 28.x; the fix is back in 29, but you may still need to adjust your proxy settings manually.
Java Language Support – Faster Refactoring and Cleaner Syntax Highlighting
The refactoring engine got a performance boost: listClassPathHints() now runs in linear time instead of quadratic, which translates into snappier “Find Usages” on large codebases. The same team also moved classpath merging out of the inner loop for Find Usage scans – another invisible speed win.
Syntax highlighting received a modest upgrade. The keyword module is now highlighted inside an import module statement, and records get proper span computation so their generated code isn’t mis‑colored. If you’ve been annoyed by “record” appearing as plain text, that annoyance should be over.
A more controversial change: the old Applet API templates were stripped out. For anyone still dabbling with legacy JNLP launches, NetBeans now forces you to use a modern deployment method or add the missing files manually. The move makes sense for a forward‑looking IDE, but it also means a few hobby projects will need extra effort.
UI and Editor Polish – Subtle but Noticeable
The diff view finally got anti‑aliasing on conflict borders, which makes merge conflicts easier on the eyes (especially on high‑DPI monitors). The Favorites pane now remembers its last state on first launch, saving a click for users who keep their favorite files pinned.
Environment file support was added. If you store variables in a .env next to your Docker compose files, NetBeans will now treat them like any other source file – syntax highlighting and quick navigation work out of the box.
One gripe that remains: the “ideopen” command for the embedded terminal still fails on Windows due to path quoting issues. The bug was noted in the changelog but not fixed, so Windows power users will have to keep using an external script for now.
What This Means for Everyday Users
If you’re a casual Java developer who sticks to Maven and rarely touches Gradle, the upgrade feels like a maintenance release – no flashy new panels, just smoother refactoring and a cleaner UI. Power users who juggle multiple source sets in Gradle will notice the most immediate benefit.
The removal of obsolete Applet templates and the tightening of JDK compatibility (the platform cluster now builds against javac.release 17) signal that NetBeans is shedding dead weight. That’s good news for stability, but it also means older projects may need a quick dependency audit before the upgrade.
Overall, Apache NetBeans IDE 29 feels like a well‑trimmed build rather than a feature dump. The performance tweaks are real, the UI polish is welcome, and the few lingering quirks are manageable. For anyone still on 28.x, switching over should be painless – just back up your userdir, run the installer, and let NetBeans handle the rest.
Release Apache NetBeans 29
What's Changed Gradle Support running classes from specific Gradle source sets in Gradle actions by @Achal1607 in #8897

