# NetBeans Stable API List

### NetBeans 5.5

7 Dec 2006

This document provides a list of stable NetBeans APIs released as part of NetBeans IDE 5.5 with a short description of what they are used for, and a table describing different types of interfaces (see What is an API? to understand why we list DTDs, file formats, etc.) and with a stability category (see API life-cycle for a list of possible API stability categories and their meaning). Some of these APIs are part of the NetBeans Platform (for example lookup, loaders, utilities, nodes, explorer, window systems, multiview, etc.), some of them are specific to NetBeans IDE (projects, javacore, diff, etc.) and some are not included in the release at all and are just provided for download (usually via autoupdate). Basically when building an application based on NetBeans one is free to choose the set of modules and their APIs to satisfy one's needs.

Only APIs considered stable for NetBeans 5.5 are listed here. There is however a set of additional ones that are not treated as stable but can be useful as well. To see them, visit the documentation for version currently being developed.

#### Additional Sources of Information

- Changes since previous release
- How to use certain NetBeans APIs
- Index of all NetBeans API classes

## Content

- Actions - Actions provides system of support and utility classes for 'actions' usage in NetBeans.
- ant/project - Provides the basic infrastructure by which Ant-based projects can be created, read and write configuration parameters and properties from/to disk, satisfy common queries and interfaces, etc.
- Common Palette - The project implements a new component palette that will be reused by other projects.
- Debugger Core API - The debuggercore/api module (Debugger Core API) allows to install different debugger implementation to one IDE.
- Debugger Core UI API - The debuggercore module (Debugger Core UI) contains shared UI components for all debugger implementations, and defines some SPI for sharing of them.
- Debugger JPDA API - The debuggerjpda/api (Debugger JPDA API) defines API for NetBeans Java Debugger.
- Dialogs API - The DialogsAPI allows creating a user notification, a dialog's description and also permits it to be displayed.
- Diff - The diff module provides the ability to visualize differencies between source files.
- Editor - The EditorAPI is used for accessing editor-related functionality from within the IDE for use by other modules and the core IDE itself.
- editor/codetemplates - Code Templates allow to paste various code snippets by using parametrized text.
- editor/fold - The Code Folding is part of the editor module functionality and it's responsible for hiding of the portions of the code that are less important for the user at the given time.
- editor/mimelookup - Each editor provides an EditorKit which controls the policy of specific MIME content type.
- editor/settings - Now editor settings in editor module are maintained by complicated structures and their initialization processes.
- Editor Code Completion - Code Completion provides users with a list of suggested completions for partially typed texts in the editor and various dialog input fields.
- Error Stripe - The Error Stripe shows an overview of important information of an edited source code.
- Execution - The IDE uses a small interface to describe the execution of Java-based classes together with arguments.
- Explorer API - The ExplorerAPI is build around Explorer - solely a user-interface device: it has no particular knowledge of the structure of the IDE.
- Filesystems - The Filesystems API provides a common API to access files in a uniform manner.
- Input/Output System - The Input/Output API is a small API module which contains InputOutput and related interfaces used in driving the Output Window.
- java/api - Models basic aspects of the metadata surrounding Java source files, such as the classpath.
- java/platform - Many Java-based project types need to be able to configure the version and location of Java to be used when building and running the project.
- java/project - Provides support infrastructure for projects working with the Java language.
- JavaHelp API - The JavaHelp integration API wraps the standard JavaHelp extension library.
- java-srcmodel - This module defines JavaHierarchyAPI which allows to inspect Java classes and possibly manipulate with portions of a .java source.
- Loaders - In summary, the LoadersAPI is responsible for scanning files in a directory on disk, weeding out irrelevant files of no interest to the IDE, and grouping the rest into logical chunks, or just determining what type of data each represents.
- Modules - The Modules API lies at the core of NetBeans and describes how plug-in modules are added and managed.
- Navigator API - Navigator module is a base API module which provides: A place for modules to show structure/outline of their documents Ability for modules to show their view only when special document(node) is active in the system UI for switching between multiple views available for currently active document(node) Coalescing of fast coming selected node changes to show content for .
- NetBeans Metadata Repository - See answer to the use-cases question.
- Nodes - Nodes API serves as the main aparatus for visualisation of objects in NetBeans.
- Progress API - The progress API is good for tracking progress of long lasting tasks in the IDE.
- projects/libraries - Permits libraries to be defined, customized, and stored by the user for reuse in multiple projects.
- projects/projectapi - Provides a generic infrastructure for modelling projects.
- projects/projectuiapi - The module supplies the APIs for the basic, generic UI infrastructure for projects: list of opened projects, main project, basic project-sensitive actions, template wizards, etc.
- projects/queries - General kinds of queries between modules.
- Settings - Settings are persistent objects with a set of properties, that should be available via lookup.
- Settings - Settings are persistent objects with a set of properties, that should be available via lookup.
- UI Utilities API - The org.openide.awt provides API/SPI for UI related aspects of application.
- Utilities - Described in the overall answer.
- View Model - The debuggercore/ViewModel module (View Model) allows to share one TreeTableView among different modules.
- Window System - Window System API is used to display and control application GUI: Main window, frames, components.

### Debugger Core API

javadoc | download | architecture | usecases

The debuggercore/api module (Debugger Core API) allows to install different debugger implementation to one IDE. It allows to share some common UI components.

Usage:

OpenIDE-Module-Module-Dependencies: org.netbeans.api.debugger/1

Interface Name | Stability Classification | Specified in What Document?
DebuggerCoreAPI | Official | ./org-netbeans-api-debugger

### Debugger JPDA API

javadoc | download | architecture | usecases

The debuggerjpda/api (Debugger JPDA API) defines API for NetBeans Java Debugger.

Usage:

OpenIDE-Module-Module-Dependencies: org.netbeans.api.debugger.jpda/1

Interface Name | Stability Classification | Specified in What Document?
JPDADebuggerAPI | Official | ./org-netbeans-api-debugger-jpda

### java/api

javadoc | download | architecture | usecases

Models basic aspects of the metadata surrounding Java source files, such as the classpath. More information in the Javadoc.

Usage:

       OpenIDE-Module-Module-Dependencies: org.netbeans.api.java/1 > 1.10.22

Interface Name | Stability Classification | Specified in What Document?
JavaSupportAPIs | Official | The Java Support APIs provides basic facilities for getting or supplying information about Java-language source files. It is based on the query pattern so implementations can be supplied from other modules or projects.

### NetBeans Metadata Repository

javadoc | download | architecture | usecases

See answer to the use-cases question.

Usage:

OpenIDE-Module-Module-Dependencies: org.netbeans.api.mdr/1 OpenIDE-Module-Requires: org.netbeans.api.mdr.MDRManager

Interface Name | Stability Classification | Specified in What Document?
MDRAPI | Stable | org-netbeans-api-mdr/
OMG-Meta-Object-Facility | Standard | http://www.omg.org/technology/documents/formal/mof.htm
OMG-XML-Metadata-Interchange | Standard | http://www.omg.org/technology/documents/formal/xmi.htm
JSR-40-Java-Metadata-Interface | Standard | http://java.sun.com/products/jmi
Set of property APIs | Individual | table with definitions
Set of java.io.File APIs | Individual | table with definitions

### Progress API

javadoc | download | architecture | usecases

The progress API is good for tracking progress of long lasting tasks in the IDE.

Usage:

OpenIDE-Module-Module-Dependencies org.netbeans.api.progress/1 > 1.0

Interface Name | Stability Classification | Specified in What Document?
Progress | Official | ./org-netbeans-api-progress/index.html

### Diff

javadoc | download | architecture

The diff module provides the ability to visualize differencies between source files. It also has a graphical conflicts resolver tool and built-in patch algorithm. List of the main features: Simple APIs, that provide access to registered diff and merge engines and visualizers. Built in and external diff engines defined. Graphical diff vizualizer and conflicts resolver. Extensible with additional diff and merge engines and vizualizers. Patch algorithm implemented for UNIX-style, unidiff and contextual diff formats.

Usage:

Add following line into the module's manifest:

    OpenIDE-Module-Module-Dependencies: org.netbeans.modules.diff/1 > ${OpenIDE-Module-Specification-Version}

Interface Name | Stability Classification | Specified in What Document?
DiffAPI | Official |
DiffImplementationAPI | Friend |

### editor/codetemplates

javadoc | download | architecture | usecases

Code Templates allow to paste various code snippets by using parametrized text. The parameters of the same name will share the same default value and if that value gets changed by user's typing the new value gets replicated into all the parameter's occurrences. Code Templates replace the original abbreviations functionality. Code template's example for (Iterator ${iterator} = ${collection instanceof="java.util.Collection"}.iterator(); ${iterator}.hasNext();) { ${cursor}${iterator}.next();" } Each parameter can have additional hints of what values can be assigned to it. The hint has a form ${param hint=value} or just ${param hint} which translates to ${param hint="true"} If necessary the value of the hint can be enclosed in quotes to allow to write whitespace or { or } into the value. The quote can be written by using \". Reserved parameter names ${cursor} defines position where the caret will be located after the editing of the code template default values will finish. Reserved hint names ${param editable=false} can be used to make the parameter to be skipped from user's editing. This may be useful e.g. with using java-specific type hint (described below). Java: ${ind index} defines that the default value of the parameter should be an unused variable in the given context named i. If i is already used then j is attempted or then k etc. until z. Then i0, i1 etc. are attempted. ${param type="java.util.Collection"} defines java type that the parameter must be instance of. Besides class names there can be array e.g. String[] or generics java.util.List<String> ${param array} defines parameter of array type (including arrays of primitive data types). ${param type="java.util.Iterator"} defines that the parameter has the given java type. The template processing infrastructure will use short name Iterator and import java.util.Iterator.

Usage:

    OpenIDE-Module-Module-Dependencies: org.netbeans.modules.editor.codetemplates/1 > 1.2.22

Interface Name | Stability Classification | Specified in What Document?
CodeTemplatesAPI | Stable |

### Editor Code Completion

javadoc | download | architecture | usecases

Code Completion provides users with a list of suggested completions for partially typed texts in the editor and various dialog input fields. The Code Completion module was created to replace the original legacy editor code completion which lacked several key requirements: Support for multiple independent code completion content providers. Implied requirement for ordering and prioritization of the completion items. Direct support for asynchronous completion result computation. Missing separation to the API and SPI and implementation parts.

Usage:

OpenIDE-Module-Module-Dependecies: org.netbeans.modules.editor.completion/1 > 1.6.22

Interface Name | Stability Classification | Specified in What Document?
CodeCompletionAPI | Official | org-netbeans-modules-editor-completion/index.html

### Error Stripe

javadoc | download | architecture | usecases

The Error Stripe shows an overview of important information of an edited source code. It shows this information for the whole source code (regardless of its size).

Usage:

OpenIDE-Module-Module-Dependecies: org.netbeans.modules.editor.errorstripe.api/1 >${OpenIDE-Module-Specification-Version}

Interface Name | Stability Classification | Specified in What Document?
TextAPI | Stable | ./org-openide-text/overview-summary.html OpenIDE Text API
ErrorStripeSPI | Stable | org-netbeans-modules-editor-errorstripe-api/index.html public SPI provided by the Error Stripe.
ErrorStripePrivateSPI | Private | Private mark provider SPI.
Set of property APIs | Individual | table with definitions

### editor/fold

javadoc | download | architecture | usecases

The Code Folding is part of the editor module functionality and it's responsible for hiding of the portions of the code that are less important for the user at the given time.

Usage:

    OpenIDE-Module-Module-Dependencies: org.netbeans.modules.editor.fold/1 > 1.5.22

Interface Name | Stability Classification | Specified in What Document?
CodeFoldingAPI | Official |

### editor/mimelookup

javadoc | download | architecture | usecases

Each editor provides an EditorKit which controls the policy of specific MIME content type. The policy of content type should be easily registered and found via some lookup mechanism, that will provide convenient way of using it either for kit provider or base editor infrastructure. In addition to this, the policy can be inherited, (i.e. in case of embeded kits like JSP) and the content types need to be merged in this case. MIME Lookup API should provide all mentioned requierements via easy lookup query, so content type policy user need not to solve this searching and merging on its own side.

Usage:

    OpenIDE-Module-Module-Dependencies: org.netbeans.modules.editor.mimelookup/1 > 1.3.22

Interface Name | Stability Classification | Specified in What Document?
MimeLookupAPI | Official |
Set of lookup APIs | Individual | table with definitions
Set of layer APIs | Individual | table with definitions

### editor/settings

javadoc | download | architecture | usecases

Now editor settings in editor module are maintained by complicated structures and their initialization processes. It is because of historical reasons and the presence of standalone editor, where standalone settings layer is supported via openide dependent editor module layer. Each editor that provides its own settings needs to depend on the whole editor module. The main purpose of this project is to create editor/settings API, that will contain settings classes, which will be lookup-able via mimelookup. The aim is NOT to provide physical implementation of editor settings storage. The module will be just interface between the settings storage and the settings clients like <mime-type> editors, externaleditor, etc.

Usage:

    OpenIDE-Module-Module-Dependencies: org.netbeans.modules.editor.settings/1 > 1.4.22

Interface Name | Stability Classification | Specified in What Document?
EditorSettingsAPI | Official |

### java/platform

javadoc | download | architecture | usecases

Many Java-based project types need to be able to configure the version and location of Java to be used when building and running the project. This API/SPI permits these platforms to be registered and queried, and any customizations made in an appropriate GUI and persisted to disk.

Usage:

       OpenIDE-Module-Module-Dependencies: org.netbeans.modules.java.platform/1 > 1.7.22

Interface Name | Stability Classification | Specified in What Document?
JavaPlatformAPI | Official | The Java Platform API permits access to installed Java platforms (for example, the J2SE JDK, or various mobile-device emulators for J2ME). Particular platform types are registered by modules and can store customized information about the platform to disk.

### java/project

javadoc | download | architecture | usecases

Provides support infrastructure for projects working with the Java language.

Usage:

For normal usage:

       OpenIDE-Module-Module-Dependencies: org.netbeans.modules.java.project/1 > 1.8.22

Interface Name | Stability Classification | Specified in What Document?
JavaProjectAPI | Official | The Java Project API is actually entirely SPI and supplies useful implementations of Java-related functionality specific to the project system.
ProjectClassPathExtender | Under Development | Implemented by `java/j2seproject` and asked for by `form`. Permits the Form Editor to add JavaBeans archives to the classpath of a J2SE project automatically.
ProjectClassPathSupport | Under Development | Support class containg helper method for creating `ClassPathImplementation` based on Ant properties.
Set of property APIs | Individual | table with definitions

### JavaHelp API

javadoc | download | architecture

The JavaHelp integration API wraps the standard JavaHelp extension library. It also provides a small additional API for NetBeans modules to supply help sets to the system, add GUI menu items, and request that particular help topics be displayed. JavaHelpIntegrationAPI

Interface Name | Stability Classification | Specified in What Document?
JavaHelpIntegrationAPI | Official | org-netbeans-modules-javahelp/index.html
Set of property APIs | Individual | table with definitions
Set of dtd APIs | Individual | table with definitions

### ant/project

javadoc | download | architecture | usecases

Provides the basic infrastructure by which Ant-based projects can be created, read and write configuration parameters and properties from/to disk, satisfy common queries and interfaces, etc. See Javadoc and build system design document.

Usage:

       OpenIDE-Module-Module-Dependencies: org.netbeans.modules.project.ant/1 > 1.12.22

Interface Name | Stability Classification | Specified in What Document?
AntProjectAPI | Official | Mostly an SPI for creating project types centered around the Ant build tool. Permits Ant-based project types to be registered and supplies various support implementations to help satisfy the contract of `Project` and various optional interfaces.
Set of property APIs | Individual | table with definitions

### projects/libraries

javadoc | download | architecture | usecases

Permits libraries to be defined, customized, and stored by the user for reuse in multiple projects. For example, a Java JAR library has a classpath (usually one JAR), and an optional source path and Javadoc path that may be used for development-time features.

Usage:

       OpenIDE-Module-Module-Dependencies: org.netbeans.modules.project.libraries/1 > 1.13.22

Interface Name | Stability Classification | Specified in What Document?
ProjectLibrariesAPI | Official | The Project Libraries API permits definitions of libraries to be registered and persisted. Library type providers may be registered and can construct memory objects corresponding to persistent library definitions.
Set of dtd APIs | Individual | table with definitions

### projects/projectapi

javadoc | download | architecture | usecases

Provides a generic infrastructure for modelling projects. Documentation available in the Javadoc. The build system design overview describes the basic purpose of modelling projects.

Usage:

       OpenIDE-Module-Module-Dependencies: org.netbeans.modules.projectapi/1 > 1.9.22

Interface Name | Stability Classification | Specified in What Document?
ProjectAPI | Official | The Project API defines abstract projects, i.e. groupings of files built and manipulated as units. It is used for Ant-based projects but could support other scenarios such as makefiles. Modules can plug in project types which can recognize certain folders as being projects, and define their behaviors.

### projects/projectuiapi

javadoc | download | architecture | usecases

The module supplies the APIs for the basic, generic UI infrastructure for projects: list of opened projects, main project, basic project-sensitive actions, template wizards, etc.

Usage:

       OpenIDE-Module-Module-Dependencies: org.netbeans.modules.projectuiapi/1 > ${OpenIDE-Module-Specification-Version}

Interface Name | Stability Classification | Specified in What Document?
ProjectUIAPI | Official | The Project UI API provides some miscellaneous APIs and SPIs relating to the appearance and UI behavior of generic projects. Most importantly, it permits the customizer and logical view of a project to be defined.
ProjectUIAPI-provider | Friend | Callbacks intended to let the Project UI module plug in implementations of APIs defined here. Uses implementation dependencies.
Set of layer APIs | Individual | table with definitions

### projects/queries

javadoc | download | architecture | usecases

General kinds of queries between modules. Queries are one way of solving the intermodule communication problem when it is necessary for some modules to obtain basic information about the system (e.g. whether a particular file is intended for version control) without needing direct dependencies on the module providing the answer (e.g. the project type which controls the file). Details are covered in the Javadoc.

Usage:

       OpenIDE-Module-Module-Dependencies: org.netbeans.modules.queries/1 > 1.7.22

Interface Name | Stability Classification | Specified in What Document?
GeneralQueriesAPI | Official | The General Queries API provides generic queries, or sources of concrete information, useful throughout the build system and perhaps elsewhere. Each query is split into an API component intended for clients to find the answer to a particular question without knowledge of the underlying structure or origin of the answer; and an SPI interface (using lookup) permitting answers to be provided from any source. These queries currently pertain to VCS and compilation status and user visibility of files.

### Settings

javadoc | download | architecture

Settings are persistent objects with a set of properties, that should be available via lookup. Properties are expected to be changed. Implementation of setting doesn't care about persistence issues, which is responsibility of settings infrastructure. XML persistence support is provided in a standalone autoload module core-settings.jar. But a typical setting is a system option, which uses serialization at the moment. Also service types must be mentioned here. Service type can be desribed as typed a named settings. SettingsAPI ServicesAPI OptionsAPI XmlSettingsPersistence

Interface Name | Stability Classification | Specified in What Document?
SettingsAPI | Official | ./org-openide-util/org/openide/util/doc-files/api.html#settings
ServicesAPI | Official | ./org-openide-util/org/openide/util/doc-files/api.html#service-lookup
OptionsAPI | Official | ./org-openide-options/org/openide/options/doc-files/api.html
XmlSettingsPersistence | Official | ./org-netbeans-modules-settings/org/netbeans/spi/settings/doc-files/api.html
Set of layer APIs | Individual | table with definitions
Set of dtd APIs | Individual | table with definitions

### Debugger Core UI API

javadoc | download | architecture | usecases

The debuggercore module (Debugger Core UI) contains shared UI components for all debugger implementations, and defines some SPI for sharing of them.

Usage:

OpenIDE-Module-Module-Dependencies: org.netbeans.spi.debugger.ui/1

Interface Name | Stability Classification | Specified in What Document?
DebuggerCoreUI-SPI | Official | ./org-netbeans-spi-debugger-ui

### Navigator API

javadoc | download | architecture | usecases

Navigator module is a base API module which provides: A place for modules to show structure/outline of their documents Ability for modules to show their view only when special document(node) is active in the system UI for switching between multiple views available for currently active document(node) Coalescing of fast coming selected node changes to show content for

Usage:

Just regular dependency in project metadata to code base name: org.netbeans.api.navigator

Interface Name | Stability Classification | Specified in What Document?
org.netbeans.spi.navigator.NavigatorPanel | Stable |
Set of lookup APIs | Individual | table with definitions

### Common Palette

javadoc | download | architecture | usecases

The project implements a new component palette that will be reused by other projects. The new palette should provide a common look and feel for Form editor, Mobility, J2EE and possible other modules as well. UI draft specification is available at http://ui.netbeans.org/docs/ui/palette/index.html

Usage:

OpenIDE-Module-Module-Dependencies org.netbeans.spi.palette/0 > 1.0

Interface Name | Stability Classification | Specified in What Document?
Palette | Stable | org-netbeans-spi-palette/overview-summary.html
Set of java.io.File APIs | Individual | table with definitions
Set of lookup APIs | Individual | table with definitions
Set of layer APIs | Individual | table with definitions
Set of dtd APIs | Individual | table with definitions

### View Model

javadoc | download | architecture | usecases

The debuggercore/ViewModel module (View Model) allows to share one TreeTableView among different modules.

Usage:

OpenIDE-Module-Module-Dependencies: org.netbeans.spi.viewmodel/2

Interface Name | Stability Classification | Specified in What Document?
ViewModel | Official | ./org-netbeans-spi-viewmodel/overview-summary.html

### Actions

javadoc | download | architecture | usecases

Actions provides system of support and utility classes for 'actions' usage in NetBeans.

Usage:

XXX no answer for deploy-dependencies

Interface Name | Stability Classification | Specified in What Document?
ActionsAPI | Official | org-openide-actions/overview-summary.html
Set of property APIs | Individual | table with definitions

### UI Utilities API

javadoc | download | architecture | usecases

The org.openide.awt provides API/SPI for UI related aspects of application.

Usage:

XXX no answer for deploy-dependencies

Interface Name | Stability Classification | Specified in What Document?
org.openide.awt | Official | ./org-openide-awt/org/openide/awt/package-summary.html

### Dialogs API

javadoc | download | architecture | usecases

The DialogsAPI allows creating a user notification, a dialog's description and also permits it to be displayed. The wizard framework allows create a sequence of panels which leads a user through the steps to complete any task. This API is part of package org.openide.

Interface Name | Stability Classification | Specified in What Document?
DialogsAPI | Official | ./org-openide-dialogs/org/openide/package-summary.html#package_description

### Execution

javadoc | download | architecture

The IDE uses a small interface to describe the execution of Java-based classes together with arguments. The ExecutionAPI controls the execution of user-level classes. The system may have several different types of executors simultaneously installed. By default we provide so called External Execution for running a user code by an external process and Internal Execution for running the user code in the same virtual machine as the IDE.

Interface Name | Stability Classification | Specified in What Document?
ExecutionAPI | Official | ./org-openide-execution/org/openide/execution/doc-files/api.html
Set of property APIs | Individual | table with definitions

### Explorer API

javadoc | download | architecture

The ExplorerAPI is build around Explorer - solely a user-interface device: it has no particular knowledge of the structure of the IDE. Rather, it provides the physical user interface for the Node hierarchy, as described in the NodesAPI. A given Explorer instance will be some visual component (such as a Swing panel) displaying some representation of a subtree of the complete Node hierarchy; the topmost node being displayed is said to be the root of the Explorer. Be careful not to confuse the root of a particular Explorer instance, which is selected according to what the user wishes to see, with the root(s) of the entire Node hierarchy, which generally are fixed.

Interface Name | Stability Classification | Specified in What Document?
ExplorerAPI | Official | ./org-openide-explorer/org/openide/explorer/doc-files/api.html
TreeTableViewSortingAPI | Friend |
Set of property APIs | Individual | table with definitions

### Filesystems

javadoc | download | architecture

The Filesystems API provides a common API to access files in a uniform manner. It is available as standalone library and also is bundled together with other parts of the openide. Specification

Interface Name | Stability Classification | Specified in What Document?
FilesystemsAPI | Official | org-openide-filesystems/org/openide/filesystems/doc-files/api.html
Set of property APIs | Individual | table with definitions
Set of dtd APIs | Individual | table with definitions

### Input/Output System

javadoc | download | architecture | usecases

The Input/Output API is a small API module which contains InputOutput and related interfaces used in driving the Output Window. The normal implementation is org.netbeans.core.output2.

Usage:

Declare a module dependency on `org.openide.io 1.9.22`. You will very likely also want to declare

    OpenIDE-Module-Requires: org.openide.windows.IOProvider

to ensure that an Output Window implementation is in fact enabled.

Interface Name | Stability Classification | Specified in What Document?
InputOutputAPI | Official | ./org-openide-io/org/openide/windows/package-summary.html Just an API/SPI for defining the output window.

### Loaders

javadoc | download | architecture | usecases

In summary, the LoadersAPI is responsible for scanning files in a directory on disk, weeding out irrelevant files of no interest to the IDE, and grouping the rest into logical chunks, or just determining what type of data each represents. It does this scanning by asking each registered data loader whether or not the given file(s) should be handled. The first loader to recognize a file takes ownership of it, and creates a matching data object to represent it to the rest of the IDE.

Interface Name | Stability Classification | Specified in What Document?
LoadersAPI | Official | org-openide-loaders/org/openide/loaders/doc-files/api.html
Set of property APIs | Individual | table with definitions
Set of layer APIs | Individual | table with definitions

### Modules

javadoc | download | architecture

The Modules API lies at the core of NetBeans and describes how plug-in modules are added and managed. ModulesAPI

Interface Name | Stability Classification | Specified in What Document?
ModulesAPI | Official | org-openide-modules/org/openide/modules/doc-files/api.html
CoreModulesAPI | Friend | http://www.netbeans.org/unbranded-source/browse/~checkout~/core/src/org/netbeans/core/modules/package.html
Set of property APIs | Individual | table with definitions
Set of dtd APIs | Individual | table with definitions

### Nodes

javadoc | download | architecture

Nodes API serves as the main aparatus for visualisation of objects in NetBeans. Nodes augment objects with standard aspects used for visualisation (e.g. name, displayName, icons, set of proerties, subnodes hierarchy, etc.) Once a Node is defined for given object it can be visualised using diferent views e.g. trees, lists, tables etc. Descripion of nodes can be found here.

Interface Name | Stability Classification | Specified in What Document?
NodesAPI | Official | org-openide-nodes/org/openide/nodes/doc-files/api.html
Set of property APIs | Individual | table with definitions

### java-srcmodel

javadoc | download | architecture

This module defines JavaHierarchyAPI which allows to inspect Java classes and possibly manipulate with portions of a .java source. Other modules, java and clazz, implement the API on top of source files or .class files respectively.

Interface Name | Stability Classification | Specified in What Document?
JavaHierarchyAPI | Official | ./org-openide-src/org/openide/src/doc-files/api.html

### Editor

javadoc | download | architecture

The EditorAPI is used for accessing editor-related functionality from within the IDE for use by other modules and the core IDE itself.

Interface Name | Stability Classification | Specified in What Document?
EditorAPI | Official | ./org-openide-text/org/openide/text/doc-files/api.html
Set of property APIs | Individual | table with definitions

### Utilities

javadoc | download | architecture | usecases

Described in the overall answer.

Usage:

OpenIDE-Module-Module-Dependencies: org.openide.util > 6.8.22

Interface Name | Stability Classification | Specified in What Document?
UtilitiesAPI | Official | org-openide-util/org/openide/util/doc-files/api.html
LookupAPI | Official | org-openide-util/org/openide/util/lookup/doc-files/lookup-api.html allows the discovery
LookupSPI | Official | org-openide-util/org/openide/util/lookup/doc-files/lookup-spi.html simplifies creation and registration of own lookup objects
ProviderRegistrationRemoval | Under Development | org-openide-util/org/openide/util/doc-files/api.html#service-lookup
AWTBridge | Private | http://www.netbeans.org/source/browse/openide/util/src/org/netbeans/modules/openide/util/AWTBridge.java a class that is looked up in Lookup.getDefault() and if registered can provide better UI elements for Actions.
SharedClassObject.setAccessible | Under Development | org-openide-util/org/openide/util/SharedClassObject.html used to instantiate subclasses.
WeakListener.setAccessible | Under Development | org-openide-util/org/openide/util/WeakListeners.html used to call the remove method using reflection
Lookups.metaInfServices | Under Development | org-openide-util/org/openide/util/lookup/Lookups.html#metaInfServices(java.lang.ClassLoader) calls constructor of registered classes using reflection
Set of property APIs | Individual | table with definitions
Set of java.io.File APIs | Individual | table with definitions
Set of lookup APIs | Individual | table with definitions

### Window System

javadoc | download | architecture | usecases

Window System API is used to display and control application GUI: Main window, frames, components.

Usage:

Declare dependency on openide module ie. add following line to manifest of your module: `OpenIDE-Module-IDE-Dependencies: IDE/1 > X.XX (it will be defined yet)` as window system is part of openide. And dependeny on implementation: `OpenIDE-Module-Module-Dependencies: org.netbeans.core.windows > X.XX`. But since the core-windows.jar does not provide any public API this should be used only in ui-declaration module (like core-ui.jar).

Interface Name | Stability Classification | Specified in What Document?
Usecases | Under Development | http://core.netbeans.org/windowsystem/changes.html#4 Use cases
WindowSystemAPI | Official | org-openide-windows/org/openide/windows/doc-files/api.html
WindowSystemImplementationAPI | Friend |
DataFlavorDnDTopComponent | Private | DataFlavor.javaJVMLocalObjectMimeType + "; class=org.openide.windows.TopComponent"
DataFlavorDnDTopComponent.Cloneable | Private | DataFlavor.javaJVMLocalObjectMimeType + "; class=org.openide.windows.TopComponent$Cloneable"
DataFlavorDnDTopComponentArray | Private | DataFlavor.javaJVMLocalObjectMimeType + "; class=org.netbeans.core.windows.dnd.TopComponentDragSupport$TopComponentArray"
Set of property APIs | Individual | table with definitions
Set of layer APIs | Individual | table with definitions
Set of dtd APIs | Individual | table with definitions
Set of javax.swing.UIManager APIs | Individual | table with definitions