The Basic NetBeans™ Platform Series

The NetBeans™ platform: module overview

Volker Rautenberg

Created on 15 July 2007, last updated on 01 June 2009

This article is a quick platform guide, as it provides a tabular overview of all platform modules corresponding to the NetBeans™ platform as of IDE version 6.0. You will also find statistics of inter-module dependencies of the platform.

Introduction

In the previous articles we have already mentioned some of the platform modules. Except for those constituting the NetBeans™ runtime container the whole picture is incomplete until now. First, let us have a glance at the module table; it is the most important part of this article. Next comes a statistical overview of the module-module interdependencies answering the question which modules are most frequently referenced within the platform. Then we take at look at how the table of all platform modules and accompanying information was figured out.

Overview of all platform modules

The listed modules refer to the platform7 cluster corresponding to the NetBeans™ IDE 6.0. As a matter of fact, the number of platform modules is steadily growing: while the platform of the NetBeans™ IDE 5.5 had 34 modules we now have 46 with the NetBeans™ IDE 6.0.

The text colours of the following table are used to distinguish different items in multi-caption columns. The Module name column lists a few names which are stroken-through: such modules are deprecated. And the API access column points out whether the public API packages exposed by a module are really meant for public use (that is: in your applications or modules) or just for friend modules within the platform. Here comes the table sorted alphabetically by module name:

Overview of all NetBeans™ platform modules

# Module Short and long description API access
Stability category
Activation type
Update tracking name
Code base name
Related JARs and executables
1 Actions APIs Definition of common actions for NetBeans.
Provides list of common actions used by any NetBeans application.
  • public
  • official
  • autoload
  • openide/actions
  • org.openide.actions
  • modules/org-openide-actions.jar
2 Advanced Templating Advanced Templating not only for Datasystems. This module binds the Datasystems API with Scripting API. As a result it is possible to use any scripting and templating language to generate templates.
  • friend
  • eager
  • openide/templates
  • org.netbeans.modules.templates
  • modules/org-netbeans-modules-templates.jar
3 Apple Application Menu Enables proper support for the Apple Application menu. Enables Apple menu items to work properly, and moves some standard menu items there – Tools | Options becomes Preferences, Help | About becomes about, File | Exit becomes Quit.
  • friend
  • eager
  • core/applemenu
  • org.netbeans.modules.applemenu/1
  • modules/org-netbeans-modules-applemenu.jar
4 Auto Update Services Services for searching updates of modules on Update Center, downloading and installing modules in IDE. AutoUpdate feature provides several services to IDE: download and install available updates of installed modules, search and install new modules from subscribed Update Centers, browsing and manipulating the modules in IDE.
  • public
  • under development
  • regular
  • autoupdate/services
  • org.netbeans.modules.autoupdate.services
  • modules/org-netbeans-modules-autoupdate-services.jar
  • modules/ext/updater.jar
5 Auto Update UI Supplies UI of Auto Update Services. he UI enables the IDE to browse IDE installation or content of registered Update Centers, then downloading updates or new modules and automatically install the modules into IDE.
  • public
  • under development
  • regular
  • autoupdate/ui
  • org.netbeans.modules.autoupdate.ui
  • modules/org-netbeans-modules-autoupdate-ui.jar
6 Bootstrap The core bootstrap of NetBeans-based applications. This module provides the initial infrastructure that loads all other parts of the application. It cannot be disabled.
  • friend
  • activation
  • core/bootstrap
  • org.netbeans.bootstrap/1
  • lib/boot.jar
  • lib/nbexec
  • lib/nbexec.exe
7 Command Line Parsing API GetOpts complient API for parsing command line. It is focused on the case when each part of the command line is going to be parsed by different module.
  • public
  • official
  • activation
  • core/sendopts
  • org.netbeans.modules.sendopts/2
  • modules/org-netbeans-modules-sendopts.jar
8 Compatibility APIs Some old classes that are now deprecated. Contains some old API classes that have now been deprecated and can be replaced. Specifically: ExplorerActions; ExplorerPanel; HttpServer; and WeakListener.
  • public
  • deprecated
  • autoload
  • openide/compat
  • org.openide.compat
  • modules/org-openide-compat.jar
9 Core The basic framework of NetBeans-based applications. This module provides the central infrastructure that lets NetBeans-based applications run. It cannot be disabled.
  • friend
  • regular
  • core
  • org.netbeans.core/2
  • modules/org-netbeans-core.jar
10 Core – Execution Implementation of the Execution engine. Adds support for execution into the platform. Contains classes which implement the execution part of APIs and corresponding GUI.
  • friend
  • autoload
  • core/execution
  • org.netbeans.core.execution/1
  • modules/org-netbeans-core-execution.jar
11 Core – UI User interface of the platform. Provides classes and resources for the standard basic user interface of the platform and for applications built on top of the platform.
  • friend
  • regular
  • core/ui
  • org.netbeans.core.ui/1
  • modules/org-netbeans-core-ui.jar
12 Core – Windows Implementation for windowing support. Adds classes implementing the window system part of the APIs.
  • friend
  • regular
  • core/windows
  • org.netbeans.core.windows/2
  • modules/org-netbeans-core-windows.jar
13 Datasystems API NetBeans Open API for manipulating data objects. The Datasystems API is a layer atop the Filesystems API which recognizes and groups data objects and gives them particular semantics. Once a part of the general Open APIs, it is now split into an independent module.
  • public
  • official
  • autoload
  • openide/loaders
  • org.openide.loaders
  • modules/org-openide-loaders.jar
14 Dialogs API Handles dialogs and wizards. This module handles the dialog and wizard infrastructure used in NetBeans.
  • public
  • official
  • autoload
  • openide/dialogs
  • org.openide.dialogs
  • modules/org-openide-dialogs.jar
15 Execution API Execution API from the Open APIs. Consists of parts of the org.openide.execution.* package from the Open APIs.
  • public
  • official
  • autoload
  • openide/execution
  • org.openide.execution
  • modules/org-openide-execution.jar
16 Explorer & Property Sheet API Various view for displaying node structures. Allows definition of new views that display structures created using Nodes API.
  • public
  • official
  • autoload
  • openide/explorer
  • org.openide.explorer
  • modules/org-openide-explorer.jar
17 Favorites Support for organizing favorite files. Favorites module enables you to create a view of files specifically relevant to your work, simply access them at one common place.
  • friend
  • regular
  • core/favorites
  • org.netbeans.modules.favorites/1
  • modules/org-netbeans-modules-favorites.jar
18 File System API Virtual File System API. Allows access to file like resources in a way independent on actual OS files. Supports notification of changes on disk.
  • public
  • official
  • regular
  • openide/fs
  • org.openide.filesystems
  • core/org-openide-filesystems.jar
19 General Queries API Acts as a general communication channel between modules. Hosts queries which are not particularly domain-specific. Permits different modules to obtain information about files in a flexible way.
  • public
  • official
  • autoload
  • projects/queries
  • org.netbeans.modules.queries/1
  • modules/org-netbeans-modules-queries.jar
20 I/O APIs Open APIs relating to displaying output. Contains classes from org.openide.windows.* relating to creating output tabs, displaying output, and hyperlinking it.
  • public
  • official
  • autoload
  • openide/io
  • org.openide.io
  • modules/org-openide-io.jar
21 JavaHelp Integration Permits JavaHelp help sets to be added to the IDE. Contains the actual JavaHelp runtime library, and the implementation of the part of the Modules API which permits other modules to install help sets using JavaHelp technology.
  • public
  • official
  • autoload
  • core/javahelp
  • org.netbeans.modules.javahelp/1
  • modules/org-netbeans-modules-javahelp.jar
  • modules/ext/jh-2.0_05.jar
22 Keymap Options
  • friend
  • regular
  • core/options/keymap
  • org.netbeans.modules.options.keymap
  • modules/org-netbeans-modules-options-keymap.jar
23 Look & Feel Customization Library Handles per-look-and-feel UIManager customizations for NetBeans. Defines NetBeans-specific values needed in UIManager and ensures that some values available in BasicLookAndFeel are available on all look and feels. Handles metal-theme support, look and feel selection and initializing custom font sizes.
  • public
  • friend, private, or 3rd party
  • regular
  • core/swing/plaf
  • org.netbeans.swing.plaf
  • modules/org-netbeans-swing-plaf.jar
24 Master Filesystem Merges multiple filesystem providers into a single logical tree. Creates mounts for disk roots and then splices in other filesystems such as VCS mounts, providing a single wrapper FileSystem for them all.
  • friend
  • regular
  • openide/masterfs
  • org.netbeans.modules.masterfs/1
  • modules/org-netbeans-modules-masterfs.jar
25 MIME Lookup API The MIME lookup API. The MIME Lookup module provides API for looking up MIME type dependant settings, services and other objects. It also provides SPI for implementing additional MIME type related data provider.
  • public
  • official
  • autoload
  • editor/mimelookup
  • org.netbeans.modules.editor.mimelookup/1
  • modules/org-netbeans-modules-editor-mimelookup.jar
26 MIME Lookup On SystemFS The default implementation of MimeDataProvider. The MIME Lookup On SystemFS module implements MimeDataProvider that looks up objects in the folder hierarchy on the System filesystem.
  • friend
  • eager
  • editor/mimelookup/impl
  • org.netbeans.modules.editor.mimelookup.impl/1
  • modules/org-netbeans-modules-editor-mimelookup-impl.jar
27 Module System API APIs for getting information about installed modules. Allows to get list of installed modules, inspect their properties and dependencies.
  • public
  • official
  • regular
  • openide/modules
  • org.openide.modules
  • lib/org-openide-modules.jar
28 MultiView Windows MultiView Windows framework and APIs. MultiView Windows framework and APIs.
  • public
  • under development
  • autoload
  • core/multiview
  • org.netbeans.core.multiview/1
  • modules/org-netbeans-core-multiview.jar
29 Nodes API API for defining generic tree-like structures. Provides abstraction over tree-like structures by defining Node – the generic extensible interface that can then be displayed by the Explorer API.
  • public
  • official
  • autoload
  • openide/nodes
  • org.openide.nodes
  • modules/org-openide-nodes.jar
30 Old Enumerations API Enumeration API that is in wrong package Enumeration API that is in wrong package, org.openide.util.enum and as such it cannot be compiled with Java 1.5, because enum is a keyword. Is replaced by class org.openide.util.Enumerations.
  • public
  • deprecated
  • autoload
  • openide/util/enum
  • org.openide.util.enumerations
  • modules/org-openide-util-enumerations.jar
31 Options Dialog and SPI Definition of common actions for NetBeans. Provides list of common actions used by any NetBeans application.
  • public
  • deprecated
  • regular
  • core/options
  • org.netbeans.modules.options.api/1
  • modules/org-netbeans-modules-options-api.jar
32 Output Window A simple text area based output window implementation. Output window based on a java.swing.text.Document over a ByteBuffer/CharBuffer
  • friend
  • autoload
  • core/output2
  • org.netbeans.core.output2/1
  • modules/org-netbeans-core-output2.jar
33 Platform NetBeans Platform
  • regular
  • core/kit
  • org.netbeans.modules.core.kit
  • modules/org-netbeans-modules-core-kit.jar
34 Progress API Task progress visualization APIs. Lets modules register long-running tasks or processes in a central place.
  • public
  • official
  • autoload
  • core/progress
  • org.netbeans.api.progress/1
  • modules/org-netbeans-api-progress.jar
35 Progress UI Task progress visualization. Provides a view of all running tasks and may permit them to be cancelled, etc.
  • friend
  • autoload
  • core/progressui
  • org.netbeans.modules.progress.ui
  • modules/org-netbeans-modules-progress-ui.jar
36 Scripting API Integration This module bundles the Scripting APIs. The module bundles the scripting APIs (javax.script package)produced by OpenJDK project,so other modules, running on Java5, can still make use of them.
  • public
  • autoload
  • libs/jsr223
  • org.netbeans.libs.jsr223/1
  • modules/org-netbeans-libs-jsr223.jar
  • modules/ext/script-api.jar
37 Settings API A library for storing settings in custom formats. This module provides the Settings API for storing module-defined settings in custom formats. It also provides several useful settings format implementations.
  • public
  • official
  • autoload
  • core/settings
  • org.netbeans.modules.settings/1
  • modules/org-netbeans-modules-settings.jar
38 Setting Options API Support for storing preferences. Provides classes that simplify storage of settings between multiple invocation of NetBeans based application.
  • public
  • deprecated
  • autoload
  • openide/options
  • org.openide.options
  • modules/org-openide-options.jar
39 Startup Loads and enables modules. This module provides the central additional functionality to Bootstrap to locate and enable the right modules.
  • friend
  • regular
  • core/startup
  • org.netbeans.core.startup/1
  • core/core.jar
40 Swing Layout Extensions integration Bundles swing-layout library. This module bundles Swing Layout Extensions library (from swing-layout.dev.java.net).
  • public
  • autoload
  • libs/swing-layout
  • org.jdesktop.layout/1
  • modules/org-jdesktop-layout.jar
  • modules/ext/swing-layout-1.0.3.jar
41 Tab Control The tab control used by the window system. The NetBeans windowing system's tab control bean library.
  • friend
  • autoload
  • core/swing/tabcontrol
  • org.netbeans.swing.tabcontrol
  • modules/org-netbeans-swing-tabcontrol.jar
42 Text API Generic API wrapping Swing based EditorKits. Provide support for defining components that embed Swing text editors.
  • public
  • official
  • autoload
  • openide/text
  • org.openide.text
  • modules/org-openide-text.jar
43 UI Utilities API User interface utilities. Helper methods for various UI related tasks.
  • public
  • official
  • autoload
  • openide/awt
  • org.openide.awt
  • modules/org-openide-awt.jar
44 Utilities API Basic Utilities API. Various helper methods and basic concept definitions including actions, lookup, image handling, parallel execution and branding support.
  • public
  • official
  • regular
  • openide/util
  • org.openide.util
  • lib/org-openide-util.jar
45 Visual Library API Visual Library API. Visual Library API.
  • public
  • official
  • autoload
  • graph/lib
  • org.netbeans.api.visual
  • modules/org-netbeans-api-visual.jar
46 Window System API API for managing components on a screen. Provides OS and MDI/SDI neutral abstraction API over concept of components that are displayed to the user.
  • public
  • official
  • autoload
  • openide/windows
  • org.openide.windows
  • modules/org-openide-windows.jar

Module dependency statistics

The following table shows how many times a given platform module is refered to by a module-module dependency by other platform modules:

NetBeans™ platform module dependency statistics

# of modules… depending on…
35 Utilities API
18 UI Utilities API
17 Nodes API
16 File System API
16 Window System API
15 Dialogs API
11 Module System API
10 Datasystems API
8 Actions API
7 Progress API
6 Explorer & Property Sheet API
6 Text API
5 Bootstrap
4 Core
4 General Queries API
4 I/O APIs
3 Look & Feel Customization Library
2 Auto Update Services
2 Core – Windows
2 MIME Lookup API
2 Startup
2 Swing Layout Extensions integration
1 Auto Update UI
1 Core – UI
1 Execution API
1 Favorites
1 Keymap Options
1 Master Filesystem
1 Options Dialog and SPI
1 Scripting API Integration
1 Settings API
1 Tab Control
0 Advanced Templating
0 Apple Application Menu
0 Core – Execution
0 JavaHelp Integration
0 MIME Lookup On SystemFS
0 MultiView Windows
0 Output Window
0 Progress UI
0 Visual Library API

How to gather module information

Having the overview tables above is a nice thing, but how was all the information assembled? The admittedly tedious work starts with examining the files of the platform7/update_tracking directory and involves these steps explained more thoroughly further below:

  1. Open an update tracking XML file; it normally references a module status configuration file as well as a module JAR file.
  2. Open the runtime module XML metadata file to obtain the module's activation type and whether the module is activated (or: enabled) or not.
  3. Open the JAR file of the module and look at the manifest file to gather information about public packages, friend modules, dependencies and more. Particularly pay attention to the localising bundle given by manifest attribute OpenIDE-Localizing-Bundle.
  4. Open the localising bundle: it contains the actual module name and descriptions.

Let us look at these steps in more detail now. From the update tracking directory we pick the Progress API module as an example. Its update tracking file is org-netbeans-api-progress.xml:

platform7/update_tracking directory

Contents of directory 'platform7/update_tracking'

A typical update tracking file is just an entry point which refers to files associated with the module (namely the module status configuration file and the JAR file(s)):

contents of an update tracking file

Contents of a typical update tracking file

The config/Modules/org-netbeans-api-progress.xml file reveals further details such as the activiation type, whether or not the module is enabled (or activated), again the JAR location, and others:

module status file contents

Contents of a typical module status configuration file

Most information is provided by the JAR file's manifest; it contains a bunch of data like public module packages, friend modules, different kinds of dependencies and many more:

module manifest contents

Contents of a typical JAR manifest

Notice, that the manifest has no locale-specific information in it. These things are kept in the localising bundle file specified by the OpenIDE-Module-Localizing-Bundle attribute; of course, the bundle also contained in the JAR.

Open the bundle within the IDE and figure out the module's human readable name (attribute OpenIDE-Module-Name) and things like the long as well as the short descriptions (OpenIDE-Module-Long-Description and OpenIDE-Module-Short-Description, respectively):

localising bundle contents

Contents of a typical localising bundle

Obtaining the update tracking name of a module

The table shown in the previous section has mainly been constructed by following the latter approach—with the exception of the modules' update tracking names. They actually are not obtainable by either approach. Instead, you are required to download a stand-alone binary distribution of the platform. After unpacking the archive you will recognise a file named module_tracking.xml:

module tracking file

File 'module_tracking.xml' contained in a binary platform distribution

Open that file to gather the last piece of information from the name attribute of the module element:

module tracking file contents

The module update tracking name as found in 'module_tracking.xml'

Remember that the update tracking name is nothing but the relative location of a module's project within the source distribution of the platform. So, if you want to do some source code mining it is a good idea to have a module's update tracking name at hand, as it saves you a number of trials and errors when searching for the corresponding NetBeans™ project.

Module-module dependencies

These are best taken from the Project Properties window of the corresponding source project as shown in the next figure for the Actions APIs module:

Project Properties window

Module-module dependencies of a given module in the sources' Project Properties window