The supplied dates indicate when the API change was made, on the CVS trunk. From this you can generally tell whether the change should be present in a given build or not; for trunk builds, simply whether it was made before or after the change; for builds on a stabilization branch, whether the branch was made before or after the given date. In some cases corresponding API changes have been made both in the trunk and in an in-progress stabilization branch, if they were needed for a bug fix; this ought to be marked in this list.
release41 branch was made on Apr 03 '05 for use in the NetBeans 4.1 release.
Specification versions: 6.0 begins after this point.release40 branch was made on Nov 01 '04 for use in the NetBeans 4.0 release.
Specification versions: 5.0 begins after this point.Fuller descriptions of all changes can be found below (follow links).
Not all deprecations are listed here, assuming that the deprecated APIs continue to essentially work. For a full deprecation list, please consult the Javadoc.
openide.jar is gone, update your module dependencies!
ModuleInfo.getClassLoader()
InstalledFileLocator
Thread.contextClassLoader defaults to TopManager.systemClassLoader
ModuleDescription constructor may specify a classloader
These API specification versions may be used to indicate that a module requires a certain API feature in order to function. For example, if you see here a feature you need which is labelled 1.20, your manifest should contain in its main attributes the line:
OpenIDE-Module-Module-Dependencies: org.openide.modules > 1.20
openide.jar is gone, update your module dependencies!
ModuleInfo.getClassLoader()
InstalledFileLocator
org.openide.modules.Dependency
org.openide.modules.InstalledFileLocator
InstalledFileLocator
org.openide.modules.ModuleInfo
ModuleInfo.getClassLoader()
org.openide.modules.ModuleInstall
org.openide.modules.SpecificationVersion
org.openide.modules.os.PlainUnix token for all unixes
            but MacOSX and org.openide.modules.os.OS2 for 
            OS/2. For more details read here.
        org.netbeans.core.startup
            package. Here is an example of the branding as used by NetBeans IDE.
        openide.jar is gone, update your module dependencies!
            The monolithic openide.jar has been split into many small
            JAR files and most of them were made autoload modules. That means they
            are loaded only on demand, which is going to simplify end of life of parts 
            that are no longer needed.
            
            The layout of files on disk changed and their content as well, but these
            changes shall have no effect on classes from org.openide
            packages during runtime. Modules using them will run unmodified.
            Althrough there will be printed warnings about upgraded module 
            dependencies - one is adviced to use
            ant fix-dependencies in his projectized module to 
            modify the nbproject/project.xml. The 
            manifest's OpenIDE-Module-IDE-Dependencies
            attribute is deprecated and shall no longer be used. Enumerate the 
            individual split submodules instead, as is done by the fix-dependencies 
            task. Moreover one can depend on 
OpenIDE-Module-Requires: org.openide.modules.ModuleFormat1
            to express that it requires current format of module manifests -
            this tag is automatically inserted when running in projectized system.
            
The current layout of platform cluster directory is:
lib/boot.jar contains what it used to have
                together with module system runtime independent of other NetBeans APIs.
lib/org-openide-util.jar is next to boot.jar to provide
                the basic infrastructure used by boot.jar.
                lib/org-openide-modules.jar provides the APIs that the
                boot.jar implements.
                core/core.jar is loaded dynamically
                by the boot.jar and contains most of the startup code and the
                NetBeans dependentpart of module system. For its implementation it needs filesystems which are along as well.
core/org-openide-filesystems.jar the filesystems API is needed
                for the standard launch code to read module config files and listen to changes in their
                amount or content.
                modules/org-openide-nodes.jar and other openide libraries
                are now turned into real modules.
                modules/org-netbeans-core.jar is also a module
                and contains the rest of original core.jar. It is likely that this one is going
                to be split even more, as the UI could be separated to core/ui, etc. 
                org.openide.modules.os.MacOSX,
            org.openide.modules.os.Unix or 
            org.openide.modules.os.Windows 
            token in their manifest:
            
                OpenIDE-Module-Requires: org.openide.modules.os.Unix
            
            Such a module will then be enabled only on specified class of 
            operating systems. See also the 
            	modules api
            description.
        
          Previously, a number of module manifest sections (e.g.
          OpenIDE-Module-Class: FileSystem) had been deprecated
          in favor of XML-layer-based installation, but a compatibility layer was
          left in place to permit old modules to still function as before. This
          layer has been removed.
        
Manifest-based installation of JavaHelp help sets was also removed.
Modules which did not remove these manifest sections before must do so for NetBeans 4.0.
ModuleInfo.getClassLoader()
ModuleInfo; made by: jglick; issues: 
            #38330
ModuleInfo.getClassLoader() making it
        possible to find a Java class loader associated with an enabled module.
      ModuleInfo.
      ModuleInfo; made by: jtulach; issues: 
            #36064
OpenIDE-Module-Implementation-Version unchanged
            to allow implementation dependencies and still identify the
            actual build version by specifying 
            OpenIDE-Module-Build-Version. If omited the 
            build version is equal to implementation version.
        Modules may now declare their own transformations of module dependencies using a declarative XML syntax in the folder ModuleAutoDeps/ in the system filesystem. This is useful for being able to manage major refactorings of functionality in a manner that will retain binary compatibility.
InstalledFileLocator
InstalledFileLocator; made by: jglick; issues: 
            #28683
netbeans.home and netbeans.user should be
        replaced with calls to the new supported API.
      OpenIDE-Module-Deprecated
            and localized attribute OpenIDE-Module-Deprecation-Message
            may be used to warn clients of an obsolete API module.
        Modules which provide Java-level APIs to other modules can now specify which packages should be considered part of the public API. Other packages are blocked from client modules.
Utilizing this feature for already released modules is very dangerous. See issue #31637 for details.
Thread.contextClassLoader defaults to TopManager.systemClassLoader
Dependency ModuleInfo; made by: jglick; issues: 
            #18781
OpenIDE-Module-Provides and
        OpenIDE-Module-Requires were introduced. These permit
        modules to depend on capabilities offered by other modules, without
        explicitly naming who the provider will be.
      Dependency; made by: jglick; issues: 
            #19714
          JavaHelp support is now in a separate module,
          org.netbeans.modules.javahelp/1. This module includes the
          javax.help.** packages, and it provides the token
          org.netbeans.api.javahelp.Help which signifies the ability
          to display help, for example using TopManager.showHelp, or
          by querying Lookup for an instance of Help.
        
          New modules (declaring a dependency on APIs after 2.2) which wish to
          provide a helpset should continue to do so via XML layer, and need only
          require the token org.netbeans.api.javahelp.Help. New
          modules wishing to display help can either require this token and use
          TopManager.showHelp, or depend on the
          org.netbeans.modules.javahelp/1 API module, require the
          token, query Lookup for an instance of Help, and use its
          methods directly. New modules wishing to use the
          javax.help.** packages directly should declare a
          dependency on the org.netbeans.modules.javahelp/1 module
          rather than using a package dependency.
        
          Existing modules (with an API dependency earlier than 2.2, or none at
          all) for compatibility are given an automatic dependency on the
          org.netbeans.api.javahelp.Help token. Additionally, if
          they declared a package dependency on javax.help.**, they
          are given an automatic dependency on the
          org.netbeans.modules.javahelp/1 module.
        
(Note: the automatic conversion of the package dependency is implemented by issue #27776, which was not fixed for the NetBeans 3.4 release, but will be for NetBeans 3.4.1. NetBeans 3.4 did, however, add automatic dependencies on the token, by far the more common case.)
Both layer- and manifest-based installation of help sets continue to be supported; manifest-based installation is still deprecated.
ModuleInfo; made by: jpokorsky
owns(Class) to determine if the provided class was
        loaded as a part of the module.
      ModuleInfo; made by: jglick
OpenIDE-Module-Module-Dependency-Message and
        OpenIDE-Module-Package-Dependency-Message.
      ModuleInfo Dependency SpecificationVersion ModuleInstall; made by: jglick
ModuleDescription, ManifestSection, and
        IllegalModuleException deprecated. ModuleInfo,
        Dependency, SpecificationVersion, and
        ModuleInstall.validate added. Module information available
        from lookup. Localized properties may be stored in bundles.
      getSectionClass().
      getLongDescription and
        TAG_LONG_DESCRIPTION.
      getDescriptionResource. Retrieving as URL deprecated.
      getDisplayCategory and TAG_CATEGORY.
      getShortDescription and
        TAG_SHORT_DESCRIPTION.
      getLayerResource() added. Thus all locale variants of a layer
        may be merged together. Retrieval as URL is deprecated.
      PackageAccessibleClassLoader added to make it
        easier to check package dependencies. Package dependencies which include
        sample classes are now permitted.
      OpenIDE-Module-Layer tag that can specify
        a resource path to XMLFileSystem that is provided by the module. Also
        added method getLayer() that returns the URL of XML
        filesystem if provided.
      getClassLoader, setClassLoader and
        getBadClasses.
      ModuleDescription constructor may specify a classloader
Three sections of the Open APIs were split into new autoload modules.
              The module org.openide.compiler (version 1.0) contains
              the Compiler API and some other classes directly related to it.
            
              The module org.openide.execution (version 1.0) contains
              the Execution API and some other classes directly related to it.
            
              The module org.openide.io (version 1.0) contains
              InputOutput and related classes (formerly part of the
              Window System API, and still physically in the
              org.openide.windows package).
            
New modules wishing to use these APIs must declare regular module dependencies on them. Future changes in these APIs will be documented separately.
          Furthermore, modules wishing to use certain services must
          OpenIDE-Module-Require them if appropriate:
        
              
org.openide.compiler.CompilationEngine, in order to
              call CompilationEngine.getDefault(), or safely use
              AbstractCompileAction or one of its subclasses, or
              call CompilerJob.start(), or use
              BeanInfos for Compiler API classes, etc.
            
              
org.openide.execution.ExecutionEngine, in order to
              call ExecutionEngine.getDefault(), or safely use
              ExecuteAction, or call
              Executor.execute(...), or use BeanInfos
              for Execution API classes, etc.
            
              
org.openide.windows.IOProvider, in order to call
              IOProvider.getDefault().
            
Other minor changes:
              Registration of URL stream handler factories using
              NbfsStreamHandlerFactory.register(...) is deprecated.
              Simply create an instance of URLStreamHandlerFactory
              and add it to Lookup instead.
            
              The method FileUtil.nbfsURLStreamHandler was added,
              but is not intended for use by modules.
            
              All uses of ExecInfo are deprecated as they abuse the
              distinction between Filesystems and the user classpath. Use and
              override only Executor.execute(DataObject). Similarly,
              ThreadExecutor is deprecated for the time being
              because it suffers from similar problems.
            
              Direct use of NbfsURLConnection is deprecated in favor
              of the more general URLMapper from the Filesystems
              API.
            
              Package dependencies on
              org.netbeans.lib.terminalemulator must be replaced
              with module dependencies on a new autoload module
              org.netbeans.lib.terminalemulator (version 1.0).
            
              Several static convenience methods have been added to
              AbstractCompileAction. Of most interest is
              prepareJobFor. Module code should no longer assume
              that DataFolder has a CompilerCookie
              which recursively compiles the folder and subfolders (according to
              depth); while it is still true, for reasons of compatibility, new
              code should use prepareJobFor to create a compiler job
              from a folder.
            
Module authors using the now-separated APIs will need to adjust their compilation classpaths to include the new JAR files. Modules wishing to use recent APIs and declaring a current openide specification version dependency will need to explicitly declare dependencies on these new APIs if there are any.
For compatibility, modules with no declared Open APIs dependency, or declared on a version prior to 3.17, will have their dependencies automatically refined as if to include the declarations:
OpenIDE-Module-Module-Dependencies: org.openide.compiler > 1.0,
  org.openide.execution > 1.0, org.openide.io > 1.0
OpenIDE-Module-Requires: org.openide.compiler.CompilationEngine,
  org.openide.execution.ExecutionEngine, org.openide.windows.IOProvider
        
        
          And any package dependencies from old modules on
          org.netbeans.lib.terminalemulator will be converted to
          module dependencies.
        
Many classes were moved to a separate module, openide-deprecated.jar, not available to modules by default. Uses of these classes in modules should be cleaned up whenever possible.
          Additionally, the entire contents of org.openide.src.* and
          org.openide.src.nodes.*, as well as
          org.openide.cookies.SourceCookie and some associated
          property editors, were moved to a separate module.
        
          The most common apparent symptom for module authors will be the absence
          of TopManager. Most methods in this class have been
          replaced by newer utility classes in a straightforward manner. See the
          Upgrade Guide.
        
          The deprecated classes continue to be available in the module
          org.openide.deprecated which you may depend on it you
          cannot remove uses of the deprecated APIs. In order for
          TopManager.getDefault() to work, you must also require the
          token org.openide.TopManager, which is provided by an
          unspecified module. The deprecated API module and its implementation
          module are autoloads, meaning they will not be loaded unless some
          module still requires them.
        
          Similarly, the Java Hierarchy API was moved to the module
          org.openide.src which you should depend on in order to use
          this API.
        
For compatibility, the above three dependencies are added to your module automatically in case it either requests no specific API version at all, or requests an API version prior to 3.14. Modules requesting APIs 3.14 or higher must declare these dependencies explicitly if they in fact need them.
Built on March 26 2007. | Portions Copyright 1997-2005 Sun Microsystems, Inc. All rights reserved.