NetBeans is an integrated development environment for Java. NetBeans allows applications to be developed from a set of modular software components called modules. NetBeans is free and open source, it runs on Windows, macOS, Linux and Solaris.

Features

Fast & Smart Editing

Apache NetBeans is much more than a text editor. It highlights source code syntactically and semantically, lets you easily refactor code, with a range of handy and powerful tools.

Java, JavaScript, PHP, HTML5, CSS, and More

Apache NetBeans provides editors, wizards, and templates to help you create applications in Java, PHP and many other languages.

Cross Platform

Apache NetBeans can be installed on all operating systems that support Java, i.e, Windows, Linux, Mac OSX and BSD. Write Once, Run Anywhere, applies to NetBeans too.

What's New

Gradle

  • Support running classes from specific Gradle source sets in Gradle actions by @Achal1607 in #8897
  • Remove unmaintained Gradle HTMLUI Project Template by @lkishalmi in #9125
  • Revert gradle downloader TLS handshake workaround again. by @mbien in #9141
  • Upgrade Gradle Tooling API 9.3.0 by @lkishalmi in #9112

Maven

  • Fixes UnsupportedOperationException in maven RunGoalsPanel by @mbien in #8993
  • mavenembedder asm fix by @ebarboni in #9009
  • Resolve some internal maven embedder deprecations. by @mbien in #8939
  • CI: Start testing on JDK 26-ea by @mbien in #9017
  • Set --sun-misc-unsafe-memory-access=warn (JEP 498) by @mbien in #9021
  • Update bundled maven to 3.9.12 by @mbien in #9084
  • Fix editing java/maven/mavensrc (unify classpaths used in IDE and ant build) by @matthiasblaesing in #9120
  • Fix NBM wizard NPE when the pom properties section is missing by @mbien in #9131
  • Fix possible NPE in maven ModuleInfoSelector by @mbien in #9181

Ant

  • Upgrade the bundled Ant version to 1.10.15 by @lkishalmi in #9052

Java

  • Refactoring: Improve listClassPathHints() performance by @mbien in #8948
  • Bump FormDesigner module to JDK 17 and adjust javac task by @mbien in #8387
  • Find Usage performance: moved classpath merging out of the inner loop by @mbien in #8957
  • TreeUtilities: fix record span computation by @mbien in #8937
  • Highlight 'module' in 'import module' as keyword. by @lahodaj in #8975
  • Refactored configuration management for LSP module by @Achal1607 in #8514
  • Log warning and continue on java hint failure by @mbien in #8982
  • Prevent duplication of guard clause in switch expressions by @homberghp in #8971
  • Propagate refactoring problems to LSP client by @shivam71 in #8968
  • Fixes find-usages and call-hierarchy on enum constructors. by @mbien in #8991
  • Remove applet API usage and file templates for jnlp/applets. by @mbien in #9019
  • Round the completion item text width correctly by @mbien in #9032
  • Enable multiview for XJB (JAXB customization files) by @matthiasblaesing in #9030
  • Basic syntax coloring support for jflex grammar files by @haidubogdan in #8997
  • Make some refactoring warnings messages localisable by @shivam71 in #9007
  • Set end position for implicit class declaration tree part of a compact source file by @shivam71 in #8856
  • Remove Mylyn Integration by @lkishalmi in #9051
  • Improving handling of broken bootpaths with an implicit hardcoded --release by @lahodaj in #9048
  • apidoc font linked to main site by @ebarboni in #9045
  • Fix for issue 9018: Javadoc viewer shows HTML comments by @makiam in #9071
  • Upgrade nb-javac to JDK 26b27 by @mbien in #9044
  • Remove more Applet API usage. by @mbien in #9080
  • Debugger: Only add java specific InlineValueComputerImpl for JPDA sessions by @matthiasblaesing in #9073
  • Java ConvertToARM fix: Fix case where existing variable (without declaration) is guarded and other variables are used outside the new block by @matthiasblaesing in #9070
  • SemanticHighlighter support for context sensitive value keyword by @mbien in #9079
  • Adjust test data to java 21 api changes. by @makiam in #9083
  • apidoc css simplification by @ebarboni in #9076
  • Update embedded tomcat from 9.0.102 to 9.0.113 by @mbien in #9122
  • Preventing an NPE for compact source files inside test roots. by @lahodaj in #9003
  • Read classpath for the file, rather then for the directory, to help with cases where files have classpath, but directories don't. by @lahodaj in #9093
  • Hint/test stabilization: cannot keep TypeMirrors across javac context invocations. by @lahodaj in #9042
  • Use bundle value for inner classes fold text by @mbien in #9149
  • Update javac package list in APTUtils by @mbien in #8931
  • [GITHUB-9056] Using sharp(er) classpath when rename refactoring. by @lahodaj in #9069
  • java.api.common: Fix missing resource LBL_TestModuleFolder_DialogTitle by @matthiasblaesing in #9185
  • Fix possible CCE during auto completion of invalid code by @mbien in #9173
  • javadoc renderer: fix snippet rendering of deprecated sections by @mbien in #9175
  • StaticImport hint should support records and other class kinds by @mbien in #9174

JavaFX

  • Update OpenJFX to 21.0.9 (for linux-aarch64 version 21) by @matthiasblaesing in #9119

Groovy

  • Update groovy to 3.0.25 by @matthiasblaesing in #9059

PHP

  • PHP: Added folding for heredoc and nowdoc by @troizet in #9054
  • fix ifinite loop caused by php brace matcher in embedded lexer context by @haidubogdan in #9023
  • PHP: Fixed an issue where a trait used in an anonymous class was defined as being used in a wrapper class by @troizet in #8883

C/C++

  • Download launcher binaries as produced by #8756 by @jtulach in #8959

Enterprise

  • Improve Add Database Connection dialog for SQLite, DuckDB, BigQuery, and Snowflake by @eirikbakke in #8189
  • Enable parsing of JSP 3.0 (Jakarta) based sources by @matthiasblaesing in #8976
  • Add "Edit context.xml" action to Tomcat menu by @NicolaIsotta in #9068
  • Removed unused commons fileupload wrapper. by @mbien in #9121
  • Avoid using of javac-related instances outside of the javac context that created them. by @lahodaj in #9127

Web

  • CSS include support for image-set by @haidubogdan in #8981
  • JavaScript: Detect duplicate private class elements and invalid constructors by @matthiasblaesing in #9027
  • fixes parser error for css ::host and ::sloted pseudo-elements by @haidubogdan in #9135

Versioning

  • Update DefaultGitHyperlinkProvider to support codeberg projects. by @mbien in #9111
  • Update jgit from 7.2.0 to 7.2.1 by @mbien in #9114
  • Git: Improve handling of ambigous ID input in checkout dialog by @matthiasblaesing in #9123
  • Fix git file history log order by @mbien in #9128

Editor

  • Improve LazyProject initialization performance by @mbien in #8955
  • Improve editor tooltip mouse ignore area computation. by @mbien in #9028
  • Fix rare CCE in the interface selector UI of the new-java-class wizard by @mbien in #9050
  • Fixes Grammar template folder position in the file create wizard form by @haidubogdan in #9058
  • Fixes jflex coloring display for macro values splitted on multiple new lines by @haidubogdan in #9063
  • Support for env files by @haidubogdan in #9075
  • Include apache license on env file module for antlr generated files by @haidubogdan in #9115
  • Enhance behaviour of showing Favorites on first editor usage by @neilcsmith-net in #9186

UI Changes

  • NotificationCenterManager: Ensure filtered list manipulation is synchronized by @matthiasblaesing in #8960
  • wakefield: MainWindow WLToolkit CCE fix by @mbien in #9004
  • Improve diff display (anti-aliasing for conflict view and incomplete drawing of diff border) by @matthiasblaesing in #9002

Platform

  • Make sure netbeans in embedded terminal means itself by @jtulach in #8756
  • Fixed RequestProcessor FixedRateTask initialDelay by @wintama-roberto in #8932
  • Remove use of deprecated Integer constructor in NotifyDescriptor by @neilcsmith-net in #8799
  • Master Filesystem Valhalla compatibility by @mbien in #8964
  • PersistenceManager deserialization logging improvement by @mbien in #8962
  • Bump platform cluster to javac.release 17 by @mbien in #9012
  • Fixes most layer position warnings and improves logging by @mbien in #8916
  • Update Options Panel Controller template by @makiam in #9106

Language Server Protocol

  • Replaced codicons in Change Method refactoring UI with Unicode characters by @Achal1607 in #8952
  • Update LSP4J to 0.24.0 and Xtend/Xtext to 2.32.0 by @dasTanmoy0096 in #9104
  • lsp.client: Fix breadcrumb rendering by @matthiasblaesing in #9116

Maintenance

  • use default sdk/parameter to build lib.profiler by @ebarboni in #8970
  • Bump actions/download-artifact from 5 to 6 by @dependabot[bot] in #8965
  • Bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in #8966
  • Remove deprecated ProgressUtils and ProgresHandleFactory usage by @mbien in #8927
  • Bump actions/checkout from 5 to 6 by @dependabot[bot] in #9037
  • Bump actions/cache from 4 to 5 by @dependabot[bot] in #9088
  • Bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in #9089
  • Bump actions/download-artifact from 6 to 7 by @dependabot[bot] in #9090
  • Editor Utilities to LineDocumentUtils migration by @mbien in #8940
  • cleanup: remove deprecated TheadGroup methods by @BradWalker in #9096
  • Fix and disable masterfs lockfile test which is failing since 17u18 by @mbien in #9178

Other Changes

  • Use absolutize_paths to make userdir and path absolute by @jtulach in #8998
  • NetBeans terminal provides "ideopen" command to open a local path this fails on windows by @matthiasblaesing in #8996
  • Fix high CPU load in grid customizer (GH9060) by @neilcsmith-net in #9066
  • Rust improvements by @matthiasblaesing in #9117
  • Update NOTICE to 2026 by @ebarboni in #9156
  • languages.env: Add missing resource bundle keys by @matthiasblaesing in #9188