# Incompatibilities Between Eclipse 4.3 and 4.4

Eclipse changed in incompatible ways between 4.3 and 4.4 in ways that affect plug-ins. The following entries describe the areas that changed and provide instructions for migrating 4.3 plug-ins to 4.4. Note that you only need to look here if you are experiencing problems running your 4.3 plug-in on 4.4.

See also the list of deprecated API removals for this release.

1. Removed WorkspaceLock API
2. Removed IncrementalProjectBuilder#getRule() API
3. Removed built-in support for Eclipse 2.0 Plug-ins
4. Equinox Framework Hook implementations must migrate
5. Built-in Equinox OSGi console removed

## 1. Removed WorkspaceLock API

What is affected: Clients that directly reference WorkspaceLock API.

Description: The `WorkspaceLock` API allowed a special client (usually platform UI) to hook into the locking protocols used by the workspace implementation. This hook was used to mitigate deadlocks due to interaction with synchronous SWT events, and was never intended to be used by other clients. In the 3.0 release this API was deprecated in favor of a more general API provided by the `org.eclipse.core.jobs` bundle. Invoking this API has had no effect since the 3.0 release. The specific API being removed includes:

- The `org.eclipse.core.resources.WorkspaceLock` class.
- The method `org.eclipse.core.resources.IWorkspace#setWorkspaceLock`

Action required: Clients that directly use API listed above should remove any references to it.

## 2. Removed IncrementalProjectBuilder#getRule() API

What is affected: Clients that directly call or implement IncrementalProjectBuilder#getRule() API.

Description: The `IncrementalProjectBuilder#getRule()` method returned a scheduling rule that was required for building the project by the builder. This method was intended to be used by the builder framework only. In the 3.6 release this method was deprecated in favor of a more general method `IncrementalProjectBuilder#getRule(int, Map)`. The specific API being removed includes:

- The method `org.eclipse.core.resources.IncrementalProjectBuilder#getRule()`

Action required: Clients that directly call API listed above should remove any references to it or replace with calls to `IncrementalProjectBuilder#getRule(int, Map)`. Clients that implement API listed above should implement `IncrementalProjectBuilder#getRule(int, Map)` instead.

## 3. Removed Built-in Support for Eclipse 2.0 Plug-ins

What is affected: Eclipse 2.0 plug-ins that have not migrated to an OSGi bundle.

Description: The 3.0 release migrated to a runtime based on the OSGi Framework specification. In order to support the migration to OSGi bundles the Equinox OSGi Framework implementation provided support for transforming Eclipse 2.0 style plug-ins into real OSGi bundles at runtime. This support is no longer provided by the Equinox Framework implementation.

Action required: Eclipse 2.0 plug-ins should be migrated to OSGi bundles. For cases where Eclipse 2.0 plug-ins must be supported there is a compatibility fragment that can be installed (org.eclipse.osgi.compatibility.plugins). This compatibility fragment must be installed in order to support the following:

- Run Eclipse 2.0 plug-ins on the 4.4 release
- Use PDE to develop Eclipse 2.0 plug-ins
- Use p2 to publish Eclipse 2.0 plug-ins to a repository

## 4. Equinox Framework Hook Implementations Must Migrate

What is affected: All Equinox Framework Hook implementations

Description: The Equinox Framework has a number of powerful framework specific hooks which framework fragments may implement in order to augment the behavior of the framework. These hooks are not considered API since they are closely tied to the internal implementation details of the framework. Attempts are made each release to support Equinox Framework hook implementations from previous releases.

Action required: The 4.4 release has changed much of the internal details of the Equinox Framework which required an overhaul of the Equinox implementation specific hooks. As a result all existing Equinox Framework hook implementations will need to migrate. In most cases it should be possible to migrate existing hook implementations over to the new interfaces. Keep in mind that most of the internal types representing bundle have changed.

## 5. Built-in Equinox OSGi Console Removed

What is affected: Usage of the built-in Equinox OSGi console

Description: Since the 3.0 release the Equinox Framework implementation has provided an OSGi console implementation. This console is useful for debugging the OSGi environment. The 4.2 release disabled the built-in OSGi console included in the Equinox Framework (see 4.2 incompatibilities). The 4.4 release has removed the built-in OSGi console completely from the Equinox Framework implementation.

Action required: In order to use the OSGi console, it is necessary to install the console bundle itself - org.eclipse.equinox.console and the three Gogo bundles - org.apache.felix.gogo.runtime, org.apache.felix.gogo.command, org.apache.felix.gogo.shell. Documentation for the Equinox console is available at Console Shell. The configuration property `osgi.console.enable.builtin` no longer has any effect.