# NetBeans IDE

NetBeans IDE (oft auch nur NetBeans genannt) ist eine freie integrierte Entwicklungsumgebung, die komplett in der Programmiersprache Java geschrieben wurde und auf der NetBeans-Plattform läuft. Die NetBeans IDE wurde hauptsächlich für die Programmiersprache Java entwickelt, unterstützt jedoch auch C, C++ und dynamische Programmiersprachen. Die IDE ist vergleichbar mit der Eclipse IDE oder den kommerziellen Versionen von JBuilder oder IBM Rational Application Developer (basierend auf Eclipse).
NetBeans ist ein Open-Source-Projekt, das als Plattform für eigene Anwendungen verwendet werden kann.

## Geschichte

1996 entwickelten einige Studenten aus der Tschechischen Republik ein Projekt mit dem Namen Xelfi. Das Ziel dabei war es, Java-Entwicklern eine integrierte Entwicklungsumgebung zu bieten, die der damaligen Borland Delphi IDE ähneln sollte. Die Studenten setzten sich als Hauptziel eine IDE, die insbesondere eine grafische Entwicklung der Anwendungsoberfläche (GUI) stark vereinfachen sollte.
Das Studentenprojekt Xelfi wurde schließlich zur Firma NetBeans. Die ersten kommerziellen Versionen wurden dann unter dem Namen Developer 2.0 und 2.1 veröffentlicht. Im Mai 1999 kam die Developer Beta 3.0 auf den Markt. Allerdings erschien nie die endgültige Version des NetBeans Developer 3.0, da NetBeans im Oktober von Sun Microsystems übernommen wurde. Wenige Zeit später veröffentlichte Sun das Programm „Forté for Java Community Edition IDE“, das auf dem Developer 3.0 basierte. Der Name Forté wurde gewählt, weil Sun zu dem Zeitpunkt ebenfalls eine Firma für Komponentenentwicklung namens Forté akquiriert hatte. Im Juni 2000 wurde Forté wieder unter dem Namen NetBeans der Open-Source-Gemeinde zur Verfügung gestellt.
Zu der frei verfügbaren NetBeans-IDE-Version gab es weitere kostenpflichtige Versionen, darunter Sun ONE Studio und den Sun Java Studio Creator, die für spezielle Funktionen und durch Plug-ins für Web-Server-, HTML-Entwicklung, UML und SOA erweitert wurden. Seit November 2005 integrierte Sun alle Java-IDE-Produkte einheitlich in NetBeans als Plugin. Mit der Übernahme von Sun Microsystems im Jahr 2010 wurde neben OpenOffice und MySQL auch NetBeans von Oracle übernommen.
2016 begann Oracle damit, das gesamte NetBeans-Projekt an die Apache Software Foundation zu übergeben. Während des Übergabeprozesses wurde NetBeans zu einem Apache-Incubator-Projekt und der gesamte Quelltext sowie die Organisation des Projekts einer Überprüfung unterzogen. Der Quelltext wurde zudem nach Apache 2.0 Lizenz neu lizenziert. Dies führte dazu, dass zwischen der Veröffentlichung der Hauptversionen 8.2 und 9.0 fast zwei Jahre lagen und NetBeans 9.0 faktisch nur Java SE unterstützte. Die Unterstützung für weitere Sprachen kehrte dann in nachfolgenden Veröffentlichungen wieder zurück. Im April 2019 wurde NetBeans schließlich erfolgreich zu einem Top-Level-Projekt hochgestuft. Die Übergabe des Quelltextes von Oracle an Apache ist bis heute (Stand: Oktober 2019) noch nicht komplett abgeschlossen.

## Unterstützte Sprachen

Die NetBeans IDE unterstützt direkt die Programmiersprachen Java, C, C++, Fortran, JavaScript, Groovy und PHP. Durch Plugins kann Netbeans auch um Sprachen wie Ada, Adobe Flex, Clojure, Coco/R, Erlang, Fortress, Ruby, JavaMath, JavaFX, Perl, PL/SQL, Prolog, Python, Reguläre Ausdrücke, Scala, SmartFrog, Tcl, TeX und LaTeX, VRML und X3D erweitert werden.

## NetBeans IDE Download-Pakete

Bis Version 8.2 wurden für die IDE verschiedene Varianten als Download-Pakete angeboten, die sich auf einen bestimmten Anwendungsfall konzentrierten.

### Java SE

Mit der NetBeans IDE für Java SE kann man Anwendungen auf Basis der NetBeans-Plattform entwickeln. Es bietet Unterstützung für die Entwicklung von graphischen Java-Desktop-Anwendungen, Kommandozeilenanwendungen oder Java Applets. Das Java SE Download-Paket bietet eine JavaDoc-Integration, die die Kommentierung des erstellten Codes unterstützt und über eine Analysefunktion bestehende Kommentare auf Vollständigkeit und Fehler überprüft. Für die Testfallgeneration integriert das Java SE Download-Paket JUnit 3 und 4. Als Project Build-Systeme werden Apache-Ant- und Maven-Skripte unterstützt.

### Jakarta EE

Das Jakarta EE Download-Paket dient der Erstellung von Web- und Enterprise-Anwendungen auf Basis von Jakarta EE 8. Dies umfasst die Entwicklung von Webseiten, Servlets, Web Services, Enterprise Java Beans (EJB 3.1), JSF, JPA und bietet Unterstützung für den JSR 299 (Support for Contexts and Dependency Injection).
Web Frameworks
Der Projektwizard umfasst Java Server Faces (JSF), Spring, Struts und Hibernate. Dadurch ist es möglich, Projekte zu erstellen, welche diese Frameworks nutzen. NetBeans erzeugt automatisch alle notwendigen Konfigurationsdateien und kopiert alle benötigten Bibliotheken in die richtigen Verzeichnisse. Damit entfallen aufwendige Anpassungen der Buildskripte per Hand. Die automatische Vervollständigung unterstützt alle notwendigen Erweiterungen für diese Konfigurationsdateien. Der New File Wizard enthält Templates für JSF Managed Beans, Struts Actions oder Struts Form Beans. In bereits bestehende Projekte kann der „Framework support“ hinzugefügt werden.
Web Services
Mit der Unterstützung für Web Services ist es möglich, entsprechende Clients in J2SE-Applikationen zu erzeugen. Die für die Erzeugung und den Betrieb solcher Clients notwendigen Bibliotheken werden mit NetBeans ausgeliefert. Des Weiteren wird ein direkter Aufruf eines Web Service aus einer JSP unterstützt, ohne den Umweg über ein Servlet. Abgerundet wird das Paket mit einem neuen Wizard, der direkt in der IDE das Erstellen einer WSDL-Datei ermöglicht, die wiederum für die Generierung von speziellen, für einen Web Service relevanten Dateien genutzt werden kann.
Anwendungsserver
Um der Apache-Lizenz zu entsprechen, wurde die standardmäßige Unterstützung der Applikations-Server JBoss und WebLogic entfernt.
Standardmäßig sind nur noch GlassFish v5.0.1 und Payara enthalten.

### C++ und C

Das Download-Paket für C++ und C ermöglicht es, mit der Netbeans IDE auf C++, C oder Fortran basierende Anwendungen zu erstellen. Dabei können neue Projekte von Grund auf, aus existierendem Code oder aus Binärdateien erzeugt werden. Die Codevervollständigung für C++ und C wird automatisch konfiguriert, indem für jede Quelldatei die Erstellungsregeln aus dem zugehörigen Makefile oder Projekteigenschaften analysiert und die Abhängigkeiten ermittelt werden. Der Editor unterstützt Syntax- und Semantik-Highlighting, automatische Einrückung und Formatierung, Code-Templates und Kommentierungsunterstützung. Wie bei anderen IDEs auch können verschiedene Konfigurationen und Make-Ziele angelegt und verwaltet werden. Als Compiler werden standardmäßig die GNU-, Cygwin- und MinGW-Compiler unterstützt. Durch den Benutzer können weitere Compiler hinzugefügt werden.
Test und Deployment
Auch für in C++ oder C geschriebene Quellen können Unit-Tests direkt aus der IDE erstellt werden. Dabei wird eine grafische Unterstützung ähnlich wie JUnit aus dem Java-SE-Paket geboten. Die kompilierte Anwendung kann automatisch im tar-, ZIP-, SVR4-, RPM- oder Debian-Format bereitgestellt werden.
Debugger
Der Debugger für C++- und C-Projekte basiert auf dem GNU Debugger, es können jedoch auch andere Debugger eingebunden werden. Es werden Mehrfach-Debugger-Sitzungen unterstützt, ebenso wie Linien- und Funktions-Breakpoints. Sämtliche Debugger-Funktionen sind in der IDE integriert.
Qt-Unterstützung
NetBeans bietet eine vollständige Unterstützung von Qt, wodurch alle Qt-Dateitypen erstellt und bearbeitet werden können (also Qt-Files, GUI-Forms, Ressourcen und Translation-Files). Die Standard-Qt-Werkzeuge wie Qt Designer, Qt Linguist oder qmake sind vollständig eingebunden.
Remote-Development
Eine Besonderheit ist die vollständige Unterstützung von Remote-Development für C++- und C-Projekte. Dies bedeutet, Projekte vollständig auf einem entfernten Rechner zu entwickeln, bauen, ausführen und debuggen. Für den Benutzer unterscheidet sich die Handhabung dieser Projekte nicht von der lokalen Entwicklung.

### PHP

Dient zur Erstellung von Web-Applikationen. Unterstützt JavaScript, CSS3 und, ab Version 7.3, auch HTML5-Syntax-Highlighting. Ebenso werden auch das Zend Framework, Symfony2 und das Symfony1-Framework unterstützt.

### All

Das Download-Paket All umfasst alle vorgestellten Download-Pakete sowie die Unterstützung für Groovy und die Entwicklung von Java-Anwendungen für mobile und eingebettete Geräte.

## NetBeans IDE im Detail
### Plugins

Es gibt eine Reihe von Erweiterungen für NetBeans, sogenannte „Plugins“, die der IDE spezielle Techniken oder Tools hinzufügen. Die kommerziellen oder freien Plugins können über die Projektseite oder direkt aus der NetBeans IDE heraus bezogen werden. Über eine einfache Funktion werden sie anschließend in die IDE integriert. Die Modularisierung der NetBeans IDE geht so weit, dass sogar das komplette Projektmanagement ausgetauscht werden kann. So ist es zum Beispiel möglich, ein Maven-Plugin zu installieren und darüber Java-Projekte zu verwalten.

### Debugging

Mittels des grafischen Debuggers können Haltepunkte direkt im Quelltext (auch während der Laufzeit) aktiviert und deaktiviert werden. Haltepunkte können fest, bedingt oder signalorientiert sein. Bedingte Haltepunkte werden nur ausgeführt, wenn ein berechneter boolescher Ausdruck erfüllt ist. Signalhaltepunkte reagieren zum Beispiel auf bestimmte Ausnahmen (Exceptions) oder Einstiegs- und Ausstiegspunkte von Methoden. Außerdem beherrscht der Debugger interaktive Haltepunkte (Run to Cursor und Run to method).
Zu beobachtende Variablen können mittels Code Completion (wie im normalen Editor) eingegeben werden. Während der Laufzeit können beliebige Java-Ausdrücke berechnet werden, und Variableninhalte können zur Laufzeit geändert werden. Eine besondere Übersicht vereinfacht es, große beobachtete Arrays darzustellen. Im Quelltext kann per Tooltip der Variableninhalt angezeigt werden.
Ab dem JDK 5.0 können auch Methodenblöcke während der Laufzeit modifiziert werden.
Der Debugger ist multisession- und multithreadingfähig, das heißt, es können gleichzeitig mehrere Programme und in jedem Programm mehrere Threads überwacht werden.

### GUI-Builder

Der Matisse-GUI-Builder ermöglicht eine grafische GUI-Gestaltung, ohne dass es nötig ist, sich mit den Eigenarten von Swing-Layoutmanagern auszukennen. Er bietet zudem einen eigenen Layoutmanager (GroupLayout), der mit Version 6 Teil der Java Platform, Standard Edition wurde, und kann das Layout in das null-Layout konvertieren. Mittels Drag & Drop können die Komponenten der Form hinzugefügt werden, wobei Ausrichtung, Größe oder andere Eigenschaften einfach anpassbar sind bzw. durch die IDE automatisch vorgegeben werden. Textelemente können direkt in dem GUI-Builder bearbeitet werden. Matisse unterstützt JavaBeans als Komponenten und Container. Alle beschreibenden Texte können internationalisiert und aus Übersetzungstabellen (Resourcedateien) eingelesen werden.

### Quelltexteditor
#### Editorfunktionen

* Javatipps, die bei der Quelltexterstellung helfen
* Komponentenpaletten zum einfachen Einfügen von Codeschnipseln (z. B. HTML, JSP oder SQL) via Drag & Drop in eine JSP- oder HTML-Seite
* Fehlermarkierung, die anzeigt, ob die Datei kompilierbar ist oder nicht, und einen Überblick über alle Fehler, Warnungen, Todos und Bookmarks im Quelltext gibt
* Umschließen eines selektierten Statements mit einem try/catch-Block
* SQL-Editor mit Syntaxhervorhebung
* einfaches Hinzufügen von XML-Dateien, wie Dokumenttypdefinitionen (DTD) und Schemata (XSD), für die Nutzung bei der Code Completion und die Validierung
* Einführung einer Möglichkeit, aus vorgegebenen Sets für Tastenkürzel oder Farbschemata (z. B. im Emacs-Stil) zu wählen oder diese nach eigenen Wünschen anzupassen

#### Codevervollständigung von Java-Quelltext

Für das Vervollständigen von Klassen, Methoden und Feldern können durch die Codecompletion-Box Codeschnipsel aus folgenden Bereichen neu erzeugt werden:
* Code von konfigurierbaren Vorlagen
* Getter und Setter
* Anonyme innere Klassen
* Methodenkörper für Methoden, welche überschrieben oder implementiert werden
* try/catch-Blöcke mit passenden Exceptions
Zusätzlich kann durch die Verwendung bestimmter Abkürzungen (Camel Case Identifier) Code erzeugt werden. So kann beispielsweise die Eingabe von AIOOBE automatisch durch ArrayIndexOutOfBoundsException ersetzt werden.

### Refactoring

Der Java-Editor beherrscht folgende Refactorings inklusive Wiederherstellen und Vorschau der Ergebnisse:
* Rename – Umbenennen von Paketen, Klassen, Methoden und Variablen
* Extract Method – Quelltextabschnitte innerhalb von Methoden zu neuen Methoden extrahieren
* Change Method Parameters – Signatur einer Methode interaktiv verändern (Parameterreihenfolge ändern)
* Encapsulate Fields – Direktzugriffe auf Objektfelder in Getter- und Setter-Methoden wandeln
* Pull Up – Eine Methode in die Superklasse verschieben
* Push Down – Eine Methode in eine Subklasse verschieben
* Move Class – Eine Klasse in ein anderes Paket verschieben
* Move Inner to Outer Level – Eine innere Klasse in eine normale Klasse wandeln
* Convert Anonymous Class to Inner – Eine anonyme Klasse in eine benannte innere Klasse wandeln
* Extract Interface – Aus der Klassensignatur ein Schnittstellengerüst erzeugen
* Extract Superclass – Aus einer Klasse eine Superklasse extrahieren
* Use Supertype where Possible – Casts auf Superklassen umstellen
* Safe Delete – Testet vor dem Löschen von Feldern, Methoden und Klassen, ob Verwendungen existieren
Natürlich werden alle Referenzen im gesamten Projekt angepasst, wenn ein Refactoring durchgeführt wird. Wenn also per Change Method Parameters die Reihenfolge von Parametern geändert werden soll, wird im gesamten Quelltext jeder Aufruf entsprechend angepasst. Verschiebt man eine Klasse in ein anderes Paket, so passen sich mit dem Refactoring-Vorgang alle import-Befehle an.
Außerdem kann die Verwendung von Variablen, Parametern, Methoden und Klassen aufgelistet werden (Find usages). Mittels Fix Imports können Import-Anweisungen automatisch und interaktiv dem Quelltext hinzugefügt werden.
Zusätzliche Module erlauben das Auffinden von ungenutzten Variablen, leeren catch-Blöcken oder toten Methoden. Durch diese Module kann die bereits sehr mächtige Refactorfunktionalität von NetBeans weiter ausgebaut werden.
Das Refactoring für andere Sprachen wie C++ und C ist im Moment noch nicht so mächtig. Jedoch soll in den nächsten Versionen auch bei diesen ein vergleichbarer Funktionsumfang erreicht werden.

### Profiler

Der Profiler wird ab Version 6.0 mitgeliefert.
Um eine sichere, skalierbare Anwendung zu erstellen, benötigen Java-Entwickler Informationen über das Laufzeitverhalten ihrer Anwendung. Der NetBeans-Profiler stellt diese Informationen zur Verfügung. Innovative Techniken erlauben es dem Entwickler, seine Anwendung mit wenig Aufwand zu messen. Die Ergebnisse des Profilers sind klar strukturiert und einfach zu interpretieren. Die zu messenden Anwendungen können sich auf dem lokalen oder einem entfernten System befinden.
Folgende Funktionen beherrscht der Profiler:
* Überwachung der CPU-Last, CPU-Geschwindigkeit und CPU-Ausführung
* Speicherbenutzung
* Speicherüberwachung mit Speicherlecktests
* Überwachung von nebenläufigen Prozessen (Threads) und deren Status
* Unterstützung für das JDK 1.4.2, JDK 5.0 und JDK 6.0
* Profiling von laufenden Anwendungen
* Speichern von Profiler-Abbildern für die nachträgliche Bearbeitung
* Profiling von entfernten VMs (über Netzwerkprotokolle)
Durch die Integration in die IDE erlaubt es der Profiler, Performanceprobleme und Speicherprobleme aufzuspüren.
Der Profiler basiert auf einem Forschungsprojekt der Sun Laboratories, das sich speziell mit Analysetechniken für Java-Anwendungen beschäftigt. Der Profiler nutzt diese Methoden, um zur Laufzeit dynamisch den Bytecode zu untersuchen und auszuwerten. Dadurch kann er auch komplexe und große Java-Anwendungen behandeln.
Der Profiler nutzt für eine geringe Belastung der Laufzeittests eine dynamische Laufzeit-Instrumentalisierung. Dabei bleibt das gespeicherte Programm unangetastet. Die Profiler-Marken für die statistischen Auswertungen werden vor dem Ausführen im Arbeitsspeicher hinzugefügt. Mit dynamisch ist gemeint, dass die Instrumentalisierung jederzeit aktiviert und deaktiviert werden kann, ohne eine Anwendung beenden oder neu starten zu müssen.
* Schlanker Messprozess – Durch den Profiler können gezielt einzelne Abschnitte der Anwendung gemessen werden. Die restlichen Programmteile laufen ohne Beeinflussung des Profilers. Die zu messenden Teile der Anwendung und die Untersuchungsaspekte (CPU, Speicher,… ) können zur Laufzeit geändert werden.
* Keine Beeinflussung der Programmausführung – Die Anwendung kann wie gewohnt gestartet und ausgeführt werden, ohne auf den Profiler Rücksicht zu nehmen. Der Profiler kann jederzeit zur Programmausführung hinzugeschaltet werden. Wenn der Messvorgang beendet ist, verbleiben keine Instruktionen innerhalb des Anwendungscodes.
* Aufgabenbasiertes Profiling – Das Messen des Laufzeitverhaltens einer Anwendung ist nicht einfach zu handhaben. Der NetBeans-Profiler bringt einige Vorgaben mit, die Standardaufgaben (Monitoring, Speichernutzung,…) im Profiling bereits abdecken. In diesen Voreinstellungen sind bereits die wichtigsten Konfigurationen getroffen, und es bedarf nur noch wenigen Anpassungen. Erfahrene Nutzer können selbstkonfigurierte Messungen durchführen.

### Ant-Unterstützung

Das Projektsystem basiert auf einer starken Integration von Apache-Ant-Skripten. Diese können angepasst und auch mit einem Debugger untersucht werden.

### Versionskontrolle

Durch NetBeans werden folgende Versionskontrollsysteme direkt unterstützt:
* Concurrent Versions System CVS
* Apache Subversion (SVN)
* Mercurial
* Git
* ClearCase (als Plug-in)
Die Unterstützung fügt sich in den typischen Programmierworkflow ein und versteckt die abstrakte Bedienung mittels bekannter Befehle. Die IDE erkennt automatisch Arbeitsverzeichnisse und listet alle geänderten Dateien im Versioning Window auf. Die Versionsunterstützung ist ebenfalls in das Projektsystem und in die Refactoring-Funktionen integriert.
Typische Funktionen des Versionskontrollsystems sind direkt über das Kontextmenü zu erreichen. Die Verwaltung mehrerer Repositories und Branches ist auf einfache Weise möglich. Das Versioning Window zeigt einen Überblick über den Status von Dateien, Ordnern, Paketen und Projekten. Mit dem Kommando Diff können Unterschiede zwischen einzelnen Versionen angezeigt werden. Zusätzlich zum Quelltext können auch Projektmetadaten verteilt werden.
Zusätzlich zu den entfernten Versionkontrollsystemen führt NetBeans für jeden Quelltext eine sogenannte Local History. Diese erlaubt, auch ohne die Unterstützung einer Versionskontrolle Änderungen am Quelltext zu verfolgen und gegebenenfalls rückgängig zu machen.

### Developer Collaboration

Das Developer Collaboration erlaubt es Entwicklern und Programmieren, zeitgleich und in Echtzeit in einer Art Chat-Modus an einer Anwendung zu entwickeln (synchrone Collaboration). Die angemeldeten Teammitglieder können jede Änderung direkt mitverfolgen, per Chat besprechen, Code Reviews durchführen oder auch das Projekt kompilieren. Wenn ein Teamserver in NetBeans konfiguriert ist erlaubt dies zusätzlichen Informationsaustausch mit Hilfe von Trackern, Documentshares und Foren (asynchrone Collaboration).

### Entwicklung von NetBeans-Modulen

Die IDE bringt Assistenten für die Entwicklung von Modulen für NetBeans IDE und anderen auf der NetBeans-Plattform basierenden Anwendungen mit. So ist es sehr einfach möglich, komplexe Fat Clients zu entwickeln, die auf der NetBeans-Plattform gründen, oder auch Befehlserweiterungen für NetBeans zu programmieren. Jeder Benutzer kann eigene Module entwickeln und diese über den NetBeans Plugin Catalogue anderen zur Verfügung stellen.

## Plattform

Die NetBeans Platform ist eine Anwendungs-Laufzeitumgebung und kann als Basis für generische Desktop-Anwendungen auf Basis von Swing genutzt werden (zum Beispiel die NetBeans IDE). Da die meisten Anwendungen ähnliche Anforderungen haben, wie zum Beispiel Menüs, Dokumentenmanagement, Änderungen von Einstellungen und ähnliches, stellt die NetBeans-Plattform entsprechende Funktionen zur Verfügung. Der Entwickler erzeugt den Anwendungscode als ein oder mehrere NetBeans-Module und fügt diese der Plattform hinzu. So kann der Entwickler sich auf die Programmierung der Geschäftslogik als wesentliche Aufgabe konzentrieren. Die entstehende Anwendung ist plattformunabhängig.
Einige Eigenschaften der Plattform:
* User Interface Management – Fenster, Menüs, Symbolleisten und andere Komponenten werden zur Verfügung gestellt. Wie in Swing üblich, kann die Plattform auch um eigene grafische Komponenten erweitert werden.
* Daten- und Gestaltungsmanagement – Die Plattform stellt eine große Palette an Werkzeugen zur Verfügung, mit denen Daten angezeigt und manipuliert werden können.
* Editor – Der NetBeans-Editor kann durch die Anwendung genutzt werden. Die Werkzeuge des Editors lassen sich schnell und einfach erweitern und in den Menüs passend zusammenstellen.
* Einstellungsverwaltung – Durch die NetBeans-Dateisysteminfrastruktur können abstrakte Daten verwaltet werden. Egal ob Dateien lokal vorliegen oder entfernt, via FTP, CVS oder in einer Datenbank, der Zugriff darauf ist transparent und kann durch eigenen Arten der Datenspeicherung für die Plattform ergänzt werden. Alle Anwendungen, die auf der NetBeans-Plattform erstellt wurden, sind internetfähig.
* Das Wizard Framework – Die NetBeans-Plattform bietet einfache Werkzeuge, um erweiterbare, anwenderfreundliche Assistenten zu erstellen, die den Anwender durch komplexe Sachverhalte leiten.
* Konfigurationsmanagement – Durch die NetBeans-Plattform werden sich wiederholende Aufgaben, wie der Remotedatenzugriff, das Management und die Speicherung, von Benutzerkonfigurationen übernommen. Somit besteht die Anwendung aus der Plattform und dem logischen Code, der die eigentliche Funktionalität bereitstellt.
* Speichermanagement – Das Speichermanagement beruht auf der Abstraktion eines dateibasierten Datenzugriffs. Dateien oder „Files“ sind im NetBeans-Konzept lokale Dateien, entfernte Dateien auf einem FTP-Server, in einem CVS Repository oder in einer Datenbank. Durch die Abstraktion des Datenzugriffs ist der Zugriff auf Dateien für alle anderen Module transparent, sprich diese müssen sich nicht um den eigentlichen Datenzugriff kümmern, sondern können dies über das Speichermanagementmodul der Plattform realisieren.
* Plattformunabhängigkeit – Da die Applikationsbasis, wie die NetBeans-IDE, vollständig in Java geschrieben ist, sind Anwendungen, die darauf basieren, von Natur aus nahezu unabhängig von einem Betriebssystem (soweit eine VM dafür portiert wurde). Dadurch laufen sie auf allen Systemen, die mit einer zu Java 2 kompatiblen virtuellen Maschine (1.3 und höher) ausgerüstet sind. Dies spart Entwicklungszeit und Kosten für Migrationen und erleichtert die Wartung sowie den Support für die Anwendung.