www.philoMind.de

A website about digital art, desktop Java™ technologies, mind & maps and more…

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:

Overview and brief description of NetBeans™ modules
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 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. 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 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. 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:

NetBeans™ platform module dependency statistics
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:

platform7/update tracking directory
platform7/update tracking directory

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 an 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:

Contents of a typical module status contents file
Contents of a typical module status contents 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:

Contents of a typical JAR manifest
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):

Contents of a typical localising bundle
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:

The module update tracking name as found in module_tracking.xml
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:

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

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.

Creative Commons Licence

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.

Website created with Hakyll. Layout based on CSS framework YAML.