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.UnixSuch 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
BeanInfo
s 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 BeanInfo
s
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 May 3 2007. | Portions Copyright 1997-2005 Sun Microsystems, Inc. All rights reserved.