The NetBeans™ platform - Module overview
Volker Rautenberg
15 Jul 2007 (last change: 17 Jun 2017)
Abstract
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. Section
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:
No. | Module | Short and long description | 1. API access 2. Stability category 3. Activation type |
---|---|---|---|
1 | Actions APIs | Definition of common actions for NetBeans. Provides list of common actions used by any NetBeans application. | 1. public 2. official 3. autoload |
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. | 1. public 2. official 3. autoload |
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. | 1. friend 2. - 3. eager |
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. | 1. public 2. under development 3. regular |
5 | Auto Update UI | Supplies UI of Auto Update Services. The 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. | 1. public 2. under development 3. regular |
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. | 1. friend 2. - 3. activation |
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. | 1. public 2. official 3. activation |
8 | 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. | 1. public 2. deprecated 3. autoload |
|
9 | Core | The basic framework of NetBeans-based applications. his module provides the central infrastructure that lets NetBeans-based applications run. It cannot be disabled. | 1. friend 2. - 3. regular |
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. | 1. friend 2. - 3. autoload |
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. | 1. friend 2. - 3. regular |
12 | Core - Windows | Implementation for windowing support. Adds classes implementing the window system part of the APIs. | 1. friend 2. - 3. regular |
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. | 1. public 2. official 3. autoload |
14 | Dialogs API | Handles dialogs and wizards. This module handles the dialog and wizard infrastructure used in NetBeans. | 1. public 2. official 3. autoload |
15 | Execution API | Execution API from the Open APIs. Consists of parts of the org.openide.execution package from the Open APIs. | 1. public 2. official 3. autoload |
16 | Explorer & Property Sheet API | Various view for displaying node structures. Allows definition of new views that display structures created using Nodes API. | 1. public 2. official 3. autoload |
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. | 1. friend 2. - 3. regular |
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. | 1. public 2. official 3. regular |
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. | 1. public 2. official 3. autoload |
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. | 1. public 2. official 3. autoload |
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. | 1. public 2. official 3. autoload |
22 | Keymap Option | - | 1. friend 2. - 3. regular |
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. | 1. public 2. friend, private, or 3rd party 3. autoload |
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. | 1. friend 2. - 3. regular |
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. | 1. public 2. official 3. autoload |
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. | 1. friend 2. - 3. eager |
27 | Module System API | APIs for getting information about installed modules. Allows to get list of installed modules, inspect their properties and dependencies. | 1. public 2. official 3. regular |
28 | MultiView Windows | MultiView Windows framework and APIs. MultiView Windows framework and APIs. | 1. public 2. under development 3. autoload |
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. | 1. public 2. official 3. autoload |
30 | 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. | 1. public 2. deprecated 3. autoload |
|
31 | Options Dialog and SPI | Definition of common actions for NetBeans. Provides list of common actions used by any NetBeans application. | 1. public 2. deprecated 3. regular |
32 | Output Window | A simple text area based output window implementation. Output window based on a java.swing.text.Document over a ByteBuffer/CharBuffer. | 1. friend 2. - 3. autoload |
33 | Platform | NetBeans Platform | 1. - 2. - 3. regular |
34 | Progress API | Task progress visualization APIs. Lets modules register long-running tasks or processes in a central place. | 1. public 2. official 3. autoload |
35 | Progress UI | Task progress visualization. Provides a view of all running tasks and may permit them to be cancelled, etc. | 1. friend 2. - 3. autoload |
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. | 1. public 2. - 3. autoload |
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. | 1. public 2. official 3. autoload |
38 | Setting Options API | Support for storing preferences. Provides classes that simplify storage of settings between multiple invocation of NetBeans based application. | 1. public 2. deprecated 3. autoload |
39 | Startup | Loads and enables modules. This module provides the central additional functionality to Bootstrap to locate and enable the right modules. | 1. friend 2. - 3. regular |
40 | Swing Layout Extensions integration | Bundles swing-layout library. This module bundles Swing Layout Extensions library (from swing-layout.dev.java.net). | 1. public 2. official 3. autoload |
41 | Tab Control | The tab control used by the window system. The NetBeans windowing system’s tab control bean library. | 1. friend 2. - 3. autoload |
42 | Text API | Generic API wrapping Swing based EditorKits. Provide support for defining components that embed Swing text editors. | 1. public 2. official 3. autoload |
43 | UI Utilities API | User interface utilities. Helper methods for various UI related tasks. | 1. public 2. official 3. autoload |
44 | Utilities API | Basic Utilities API. Various helper methods and basic concept definitions including actions, lookup, image handling, parallel execution and branding support. | 1. public 2. official 3. regular |
45 | Visual Library API | Visual Library API. | 1. public 2. official 3. autoload |
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. | 1. public 2. official 3. autoload |
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:
Number of modules… |
…depending on | 1. Update tracking name 2. Code base name 3. Related JARs and executables |
---|---|---|
35 | Utilities API | 1. openide/util 2. org.openide.util 3. lib/org-openide-util.jar |
18 | UI Utilities API | 1. openide/awt 2. org.openide.awt 3. modules/org-openide-awt.jar |
17 | Nodes API | 1. openide/nodes 2. org.openide.nodes 3. modules/org-openide-nodes.jar |
16 | File System API | 1. openide/fs 2. org.openide.filesystems 3. core/org-openide-filesystems.jar |
16 | Window System API | 1. openide/windows 2. org.openide.windows 3. modules/org-openide-windows.jar |
15 | Dialogs API | 1. openide/dialogs 2. org.openide.dialogs 3. modules/org-openide-dialogs.jar |
11 | Module System API | 1. openide/modules 2. org.openide.modules 3. lib/org-openide-modules.jar |
10 | Datasystems API | 1. openide/loaders 2. org.openide.loaders 3. `modules/org-openide-loaders.jar |
8 | Actions API | 1. openide/actions 2. org.openide.actions 3. modules/org-openide-actions.jar |
7 | Progress API | 1. core/progress 2. org.netbeans.api.progress/1 3. modules/org-netbeans-api-progress.jar |
6 | Explorer & Property Sheet API | 1. openide/explorer 2. org.openide.explorer 3. modules/org-openide-explorer.jar |
6 | Text API | 1. openide/text 2. org.openide.text 3. modules/org-openide-text.jar |
5 | Bootstrap | 1. core/bootstrap 2. org.netbeans.bootstrap/1 3. lib/boot.jar , lib/nbexec , lib/nbexec.exe |
4 | Core | 1. core 2. org.netbeans.core/2 3. modules/org-netbeans-core.jar |
4 | General Queries API | 1. projects/queries 2. org.netbeans.modules.queries/1 3. modules/org-netbeans-modules-queries.jar |
4 | I/O APIs | 1. openide/io 2. org.openide.io 3. modules/org-openide-io.jar |
3 | Look & Feel Customization Library | 1. core/swing/plaf 2. org.netbeans.swing.plaf 3. modules/org-netbeans-swing-plaf.jar |
2 | Auto Update Services | 1. autoupdate/services 2. org.netbeans.modules.autoupdate.services 3. modules/org-netbeans-modules-autoupdate-services.jar , modules/ext/updater.jar |
2 | Core - Windows | 1. core/windows 2. org.netbeans.core.windows/2 3. modules/org-netbeans-core-windows.jar |
2 | MIME Lookup API | 1. editor/mimelookup 2. org.netbeans.modules.editor.mimelookup/1 3. modules/org-netbeans-modules-editor-mimelookup.jar |
2 | Startup | 1 . core/startup 2. org.netbeans.core.startup/1 3. core/core.jar |
2 | Swing Layout Extensions integration | 1. libs/swing-layout 2. org.jdesktop.layout/1 3. modules/org-jdesktop-layout.jar , modules/ext/swing-layout-1.0.3.jar |
1 | Auto Update UI | 1. autoupdate/ui 2. org.netbeans.modules.autoupdate.ui 3. modules/org-netbeans-modules-autoupdate-ui.jar |
1 | Core – UI | 1. core/ui 2. org.netbeans.core.ui/1 3. modules/org-netbeans-core-ui.jar |
1 | Execution API | 1. openide/execution 2. org.openide.execution 3. modules/org-openide-execution.jar |
1 | Favorites | 1. core/favorites 2. org.netbeans.modules.favorites/1 3. modules/org-netbeans-modules-favorites.jar |
1 | Keymap Options | 1. core/options/keymap 2. org.netbeans.modules.options.keymap 3. modules/org-netbeans-modules-options-keymap.jar |
1 | Master Filesystem | 1. openide/masterfs 2. org.netbeans.modules.masterfs/1 3. modules/org-netbeans-modules-masterfs.jar |
1 | Options Dialog and SPI | 1. core/options 2. org.netbeans.modules.options.api/1 3. modules/org-netbeans-modules-options-api.jar |
1 | Scripting API Integration | 1. libs/jsr223 2. org.netbeans.libs.jsr223/1 3. modules/org-netbeans-libs-jsr223.jar , modules/ext/script-api.jar |
1 | Settings API | 1. core/settings 2. org.netbeans.modules.settings/1 3. modules/org-netbeans-modules-settings.jar |
1 | Tab Control | 1. core/swing/tabcontrol 2. org.netbeans.swing.tabcontrol 3. modules/org-netbeans-swing-tabcontrol.jar |
0 | Advanced Templating | 1. openide/actions 2. org.openide.actions 3. modules/org-openide-actions.jar |
0 | Apple Application Menu | 1. core/applemenu 2. org.netbeans.modules.applemenu/1 3. modules/org-netbeans-modules-applemenu.jar |
0 | Command Line Parsing | 1. core/sendopts 2. org.netbeans.modules.sendopts/2 3. modules/org-netbeans-modules-sendopts.jar |
0 | Core - Execution | 1. core/execution 2. org.netbeans.core.execution/1 3. modules/org-netbeans-core-execution.jar |
0 | JavaHelp Integration | 1. core/javahelp 2. org.netbeans.modules.javahelp/1 3. modules/org-netbeans-modules-javahelp.jar , modules/ext/jh-2.0_05.jar |
0 | MIME Lookup On SystemFS | 1. editor/mimelookup/impl 2. org.netbeans.modules.editor.mimelookup.impl/1 3. modules/org-netbeans-modules-editor-mimelookup-impl.jar |
0 | MultiView Windows | 1. core/multiview 2. org.netbeans.core.multiview/1 3. modules/org-netbeans-core-multiview.jar |
0 | Output Window | 1. core/output2 2. org.netbeans.core.output2/1 3. modules/org-netbeans-core-output2.jar |
0 | Progress UI | 1. core/progressui 2. org.netbeans.modules.progress.ui 3. modules/org-netbeans-modules-progress-ui.jar |
0 | Visual Library API | 1. graph/lib 2. org.netbeans.api.visual 3. modules/org-netbeans-api-visual.jar |
The NetBeans Platform itself has the udpate tracking name core/kit
, the code base name org.netbeans.modules.core.kit
, and the related JAR is modules/org-netbeans-modules-core-kit.jar
.
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:
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)):
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:
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:
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):
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
:
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:
Copyright © 2007, 2017 by Volker Rautenberg. Some rights reserved.
Except where otherwise noted, this work is licenced to the public under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
The names of companies and products mentioned in this work may be trademarks, registered trademarks or service marks of their respective owners. Trademarks and service marks are used for referential purposes only and are not intended to infringe the rights of the mark owners.