Although the core KNIME functionality does not depend on Eclipse, Eclipse is used as the workbench framework to provide a professional graphical user interface. For this reason all KNIME components are built up as so-called Eclipse plugins. In Eclipse everything is a plugin plugged into the extension points of other plugins. At its base, there is just a small runtime engine that executes the plugins and determines their dependencies. The required structure of an Eclipse plugin comprises a "plugin.xml" file, which contains the dependencies to other plugins and the extension points to which the plugin wants to connect. Furthermore, a plugin can provide its own extension points to which additional new plugins can be connected.
The KNIME workbench itself connects to several extension points
of the Eclipse workbench (e.g. the editor-, preferences page-,
perspective-extension point, etc.). KNIME itself also provides two
extension points to which external providers can contribute to the
functionality of KNIME. These extension points are the "Categories"
extension point (org.knime.workbench.repository.categories)
and the "Nodes" extension point (org.knime.workbench.repository.nodes)
.
The "Categories" extension point allows you to introduce new category
folders displayed in the node repository by simply adding an entry to
the plugin.xml. The "Nodes" extension point enables you to contribute a
new functional node to the node repository that is connected to the Java
code by registering the corresponding NodeFactory in the plugin.xml.
Besides the plugin.xml file, an Eclipse plugin requires a so-called
"Bundle Activator", which inherits from the Eclipse class "Plugin". This
is a housekeeping class that contains practically no functionality in
terms of KNIME extensions but is nevertheless required by eclipse. The
"Bundle Activator" is registered in the obligatory "MANIFEST.MF" file
located in the META-INF directory. Furthermore, the "MANIFEST.MF" file
contains information about the class path, required plugins, the vendor,
which java packages should be made visible outside, etc.
The final file required is the "build.properties" file. It configures the way a plugin is exported (deployed). It defines the name of the jar file in which the classes of the plugin should be stored as well as the files to be included in deployment; it also enables you to define two build settings for a build that includes the source code and for one that does not. A source folder (mostly "src") is also provided that contains the java sources of the corresponding plugin. All this infrastructure is automatically created by the extension wizard described below to enable a developer to immediately focus on the real problem and not have to worry about the Eclipse infrastructure.