<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="en">
<head>
<meta name="copyright" content="Copyright (c) IBM Corporation and others 2011, 2018. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1" type="text/css">
<title>Deprecated API removals</title>
</head>
<body>
<h1>Deprecated API removals</h1>

<p>
  Deprecated API can be marked for deletion.
  See the <a href="http://wiki.eclipse.org/Eclipse/API_Central/Deprecation_Policy">policy</a>   for the details.
  This section describes API removals that occurred in past releases, and upcoming removals in future releases.
</p>

<p>
Removed APIs in the Neon (4.6) release:
</p>
<ol>
 <li><a href="#runtime">Eclipse 2.0 runtime model and boot API</a></li>
</ol>
<p>
Removed APIs in the Oxygen (4.7) release:
</p>
<ol>
 <li><a href="#listenerlist">org.eclipse.jface.util.ListenerList</a></li>
</ol>

<p>
Removed APIs in the Photon (4.8) release:
</p>
<ol>
 <li><a href="#updatemanager">Update manager</a></li>
 <li><a href="#platform-methods">Platform methods</a></li>
 <li><a href="#tasklist">org.eclipse.ui.views.tasklist.TaskList</a></li>
  <li><a href="#icontextcomputer">IContextComputer</a></li>
</ol>

<p>
Removed APIs in the Eclipse 4.10 release:
</p>
<ol>
 <li><a href="#tabletreeviewer">TableTree and TableTreeViewer</a></li>
</ol>


<p>
Removed APIs in the Eclipse 4.11 release:
</p>
<ol>
 <li><a href="#imageandmessagearea">ImageAndMessageArea from JFace</a></li>
</ol>

<p>
Removed APIs in the Eclipse 4.12 release:
</p>
<ol>
 <li><a href="#iplugindescriptor">IPluginDescriptor</a></li>
 <li><a href="#tabletree">TableTree</a></li>
</ol>

<p>
Removed APIs in the Eclipse 4.17 release:
</p>
<ol>
 <li><a href="#minputpart">Remove Input and MInputPart</a></li>
</ol>





<p>
Planned API removals after June 2017:
</p>
<ol>

 <li><a href="#auth">Platform authorization API</a></li>
</ol>

<p>
Planned API removals after June 2018:
</p>
<ol>
 <li><a href="#fullscreen">org.eclipse.ui.cocoa.fullscreenWindow</a></li>
</ol>

<p>
Planned API removals after June 2020:
</p>
<ol>
 <li><a href="#jfaceassert">JFace and JFace text Assert</a></li>
 <li><a href="#mpartdescriptor">Remove Dirtable flag from MPartDescriptor</a></li>
 <li><a href="#iplatformrunnable">Remove org.eclipse.core.runtime.IPlatformRunnable</a></li>
 <li><a href="#ui-dialogs">Remove deprecated dialogs from org.eclipse.ui.dialogs</a></li>
 <li><a href="#platform-getjobmanager">Remove method org.eclipse.core.runtime.Platform#getJobManager()</a></li>
 <li><a href="#jface-popupdialog">Remove deprecated method and constructor in PopupDialog</a></li>
</ol>

<p>
Planned API removals after December 2020:
</p>
<ol>
 <li><a href="#imodelprovider">Remove org.eclipse.pde.core.IModelProvider</a></li>
</ol>

<p>
Planned API removals after March 2021:
</p>
<ol>
 <li><a href="#targetProvisioners">Remove org.eclipse.pde.ui.targetProvisioners extension point</a></li>
 <li><a href="#commandsutil">org.eclipse.core.commands.util package</a></li>
 <li><a href="#encodingactiongroup">org.eclipse.ui.editors.text.EncodingActionGroup</a></li>
 <li><a href="#equinoxlauncher">org.eclipse.core.launcher#Main and WebStartMain</a></li>
 <li><a href="#20supportclasses">Delete 2.0 plug-in compatibility classes and related API</a></li>
 <li><a href="#jobcreateSystem">Delete Job.createSystem(ICoreRunnable) API </a></li>
 <li><a href="#workbenchwindowconfigurer">Delete unsupported methods in WorkbenchWindowConfigurer </a></li>
</ol>

<p>
Planned API removals after June 2021:
</p>
<ol>
 <li><a href="#commands">Delete deprecated contents of org.eclipse.ui.commands package</a></li>
</ol>

<p>
Planned API removals after September 2021:
</p>
<ol>
 <li><a href="#navigator">Navigator view and related API</a></li>
</ol>

<p>
Planned API removals after December 2021:
</p>
<ol>
 <li><a href="#bookmark">Bookmark view and related API</a></li>
</ol>

<p>
Planned API removals after June 2022:
</p>
<ol>
 <li><a href="#icu4j">ICU4J bundle from SDK</a></li>
</ol>

<p>
Planned API removals after September 2022:
</p>
<ol>
 <li><a href="#pde.ui.launcher">Remove deprecated contents of org.eclipse.pde.ui.launcher package</a></li>
</ol>

<hr>
<!-- ############################################## -->

<h2>API removals in the Eclipse 4.6 release</h2>

<h3>1. <a name="runtime">Eclipse 2.0 runtime model and boot API</a></h3>
<p>
When the Eclipse runtime transitioned to use OSGi as its implementation, some existing
APIs for interacting with the old runtime were deprecated and moved to a compatibility fragment
(<tt>org.eclipse.core.runtime.compatibility</tt>). All API that was still valid was moved
elsewhere. These APIs have been non-functional since Eclipse 3.0 and will therefore
be removed in the future. The following packages will be removed:
</p>
<ul>
 <li><tt>org.eclipse.core.boot</tt></li>
 <li><tt>org.eclipse.core.runtime.model</tt></li>
 </ul>
 The compatibility fragment, <tt>org.eclipse.core.runtime.compatibility</tt> will
 also be removed. As a consequence <code>org.eclipse.ui.startup</code> extensions will no longer work if they do not specify a class that implements <code> org.eclipse.ui.IStartup</code>.
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=370248" target="_blank">bug 370248</a>.
</p>

<h2>API removals in the Eclipse 4.7 release</h2>

<h3>1. <a name="listenerlist">org.eclipse.jface.util.ListenerList</a></h3>
<p>
The <code>org.eclipse.jface.util.ListenerList</code> class is deprecated since 2005 and has been replaced by <code>org.eclipse.core.runtime.ListenerList with org.eclipse.core.runtime.ListenerList.IDENTITY</code> as argument.
The <code>org.eclipse.jface.util.ListenerList</code> class is planned to get deleted.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=436448" target="_blank">bug 436448</a>.
</p>


<!-- ############################################## -->

<h2>API removals in the Eclipse 4.8 release</h2>

<h3>1. <a name="updatemanager">Update Manager</a></h3>
<p>
Bundle org.eclipse.update.core from the old update manager API was removed.
This API was marked for deletion in the 4.2. release via <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311590" target="_blank">bug 311590</a>.
</p>

 <h3>2. <a name="platform-methods">Methods in Platform deleted</a></h3>
<p>

Platform API as announced for Eclipse 4.2 was deleted.
This API was marked for deletion in the 4.2. release via <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=476404" target="_blank">bug 476404</a>.
The following methods are removed:
</p>
<ul>
 <li><tt>Platform#addAuthorizationInfo</tt></li>
 <li><tt>Platform#getAuthorizationInfo</tt></li>
 <li><tt>Platform#flushAuthorizationInfo</tt></li>
 <li><tt>Platform#addProtectionSpace</tt></li>
 <li><tt>Platform#getProtectionSpace </tt></li>
 </ul>

<h3>3. <a name="tasklist">org.eclipse.ui.views.tasklist.TaskList</a></h3>
<p>
The <code>org.eclipse.ui.views.tasklist.TaskList</code> class is deprecated since Eclipse 3.4 and has been replaced by <code>MarkerSupportView</code>.
The <code>org.eclipse.ui.views.tasklist.TaskList</code> class and related classes only used by this class are planned to get deleted.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=436506" target="_blank">bug 436506</a>.
</p>

<h3>4. <a name="icontextcomputer">IContextComputer and related classes</a></h3>
<p>
The <code>org.eclipse.ui.help.IContextComputer</code> class and dependent classes, i.e., org.eclipse.ui.help.WorkbenchHelp, DialogPageContextComputer and ViewContextComputer have been deleted. They were deprecated since 2002.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=442961" target="_blank">bug 442961</a>.
</p>

<!-- ############################################## -->

<h2>API removals in the Eclipse 4.10 release</h2>

 <h3>1. <a name="tabletreeviewer">TableTreeViewer</a></h3>
<p>
The <code>org.eclipse.jface.viewers.TableTreeViewer</code> class is deprecated since Eclipse 3.1 and has been replaced by <code>TreeViewer</code>.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=540481" target="_blank">bug 436505</a>.
</p>


<!-- ############################################## -->

<h2>API removals in the Eclipse 4.11 release</h2>

 <h3>1. <a name="imageandmessagearea">ImageAndMessageArea from JFace</a></h3>
<p>
The <code>org.eclipse.jface.dialogs.ImageAndMessageArea</code> class has been removed.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=475863" target="_blank">bug 475863</a>.
</p>



<!-- ############################################## -->

<h2>API removals in the Eclipse 4.12 release</h2>

 <h3>1. <a name="iplugindescriptor">Delete IPluginDescriptor and related API</a></h3>
<p>
The <code>IPluginDescriptor</code> class has been removed.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=475944" target="_blank">bug 475944</a>.
</p>

<h3>2. <a name="tabletree">TableTree</a></h3>
<p>
The <code>org.eclipse.swt.custom.TableTree</code> and <code>org.eclipse.swt.custom.TableTreeItem</code> classes have been deleted as well as methods using these types.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=475833" target="_blank">bug 475833</a>.
</p>


<!-- ############################################## -->
<h2>API removals in the Eclipse 4.17 release</h2>

<h3>2. <a name="minputpart">Remove Input and MInputPart</a></h3>
<p>
The <code>MInput</code> and <code>MInputPart</code> classes and related API are removed.
</p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=562813" target="_blank">bug 562813</a>.

 
<p>

<!-- ############################################## -->

<h2>API removals after June 2017</h2>


<h3>1. <a name="auth">Platform authorization API</a></h3>
<p>
Since Eclipse 1.0, the Eclipse Platform class provided API for storing and retrieving
passwords in a keyring file. This API used an inherently insecure method for encrypting
credentials, and used a custom encryption algorithm that made it difficult for some
consumers to distribute and export Eclipse-based products. For these and other reasons,
this API was deprecated and replaced in Eclipse 3.4 with a new Equinox secure storage API.
In Eclipse 4.2 the implementation of the old authorization methods was removed, but the API left in place.
This old API will be removed completely in a future release. The following API methods will
be removed from <tt>org.eclipse.core.runtime.Platform</tt>:
</p>
<ul>
 <li><tt>addAuthorizationInfo(URL serverUrl, String realm, String authScheme, Map info)</tt></li>
 <li><tt>getAuthorizationInfo(URL serverUrl, String realm, String authScheme)</tt></li>
 <li><tt>flushAuthorizationInfo(URL serverUrl, String realm, String authScheme)</tt></li>
 <li><tt>addProtectionSpace(URL resourceUrl, String realm)</tt></li>
 <li><tt>getProtectionSpace(URL resourceUrl)</tt></li>
 </ul>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=476404" target="_blank">bug 476404</a>.
</p>



<!-- ############################################## -->
<h2>API removals after June 2018</h2>

<h3>2. <a name="fullscreen">org.eclipse.ui.cocoa.fullscreenWindow</a></h3>
<p>
Eclipse Platform 4.2 introduced a OS&nbsp;X-specific command to toggle full-screen
called <code>org.eclipse.ui.cocoa.fullscreenWindow</code> (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=376394" target="_blank">bug 376394</a>),
bound to Command-Ctrl-F.  In 4.6 we introduced a cross-platform command
to toggle full-screen called <code>org.eclipse.ui.window.fullscreenmode</code>
(<a href="https://bugs.eclipse.org/489087" target="_blank">bug 489087</a> and
<a href="https://bugs.eclipse.org/491572" target="_blank">bug 491572</a>).  As a result,
we have two "Toggle Full Screen" commands on OS&nbsp;X, and both
appear in the <em>Quick Access</em>.  We will consolidate our code to
use <code>org.eclipse.ui.window.fullscreenmode</code>, and plan to
remove <code>org.eclipse.ui.cocoa.fullscreenWindow</code>.
</p>
<p>
For further details or to provide feedback on this change, see
<a href="https://bugs.eclipse.org/493932" target="_blank">bug 493932</a>.
</p>



<!-- ############################################## -->
<h2>API removals after June 2020</h2>
<h3>1. <a name="jfaceassert"> org.eclipse.jface.util.Assert and org.eclipse.jface.text.Assert </a></h3>
<p>
The <code>org.eclipse.jface.util.Assert</code> and <code>org.eclipse.jface.text.Assert</code> classes are planned to be removed.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=528191" target="_blank">bug 528191</a>.
</p>

<h3>3. <a name="mpartdescriptor">Remove Dirtable flag from MPartDescriptor</a></h3>
<p>
The  <code>DirtableMInput</code> field will be removed from the <code>MPartDescriptor</code> class and related API.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=530887" target="_blank">bug 530887</a>.
</p>

<h3>4. <a name="iplatformrunnable">org.eclipse.core.runtime.IPlatformRunnable</a></h3>
<p>
The <code>org.eclipse.core.runtime.IPlatformRunnable</code> interface is planned to be removed.
</p>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=457134" target="_blank">bug 457134</a>.
</p>


<h3>5. <a name="ui-dialogs">Remove deprecated dialogs from org.eclipse.ui.dialogs</a></h3>
<p>

The following dialogs are planned to be removed from this package:


<ul>
 <li><tt>FileSelectionDialog</tt></li>
 <li><tt>WizardImportPage</tt></li>
 <li><tt>WizardExportPage</tt></li>
</ul>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=448275" target="_blank">bug 448275</a>.
</p>

<h3>6. <a name="platform-getjobmanager">Remove method org.eclipse.core.runtime.Platform#getJobManager()</a></h3>

The method <code>getJobManager()</code> is planned to be removed from class <code>org.eclipse.core.runtime.Platform</code>.
Clients are encouraged to use the method <code>org.eclipse.core.runtime.jobs.Job#getJobManager()</code> instead.

<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=528192" target="_blank">bug 528192</a>.
</p>

<h3>7. <a name="jface-popupdialog">Remove deprecated method and constructor in PopupDialog</a></h3>

The method <code>getPersistBounds()</code> is planned to be removed from class <code>org.eclipse.jface.dialogs.PopupDialog</code>.
Clients are encouraged to use the method <code>getPersistLocation()</code> or <code>getPersistSize()</code> instead.

It is also planned to remove the deprecated constructor. Clients should use the not deprecated constructor.

<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=531913" target="_blank">bug 531913</a>.
</p>


<!-- ############################################## -->
<h2>API removals after December 2020</h2>

<h3>1. <a name="imodelprovider">Remove org.eclipse.pde.core.IModelProvider</a></h3>

The <code>org.eclipse.pde.core.IModelProvider</code> interface is planned to be removed.

<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=541068" target="_blank">bug 541068</a>.
</p>


<!-- ############################################## -->
<h2>API removals after March 2021</h2>

<h3>1. <a name="targetProvisioners">Remove org.eclipse.pde.ui.targetProvisioners extension point</a></h3>

The <code>org.eclipse.pde.ui.targetProvisioners</code> extension point is planned to be removed.

Clients should use the <code>org.eclipse.pde.ui.targetLocationProvisioners</code> extension point instead.

<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=541806" target="_blank">bug 541806</a>.
</p>

<h3>2. <a name="commandsutil">org.eclipse.core.commands.util package</a></h3>

The <code>org.eclipse.core.commands.util</code> package is planned to be removed. It contains one utility class for tracing code.

<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=143992" target="_blank">bug 143992</a>.
</p>

<h3>3. <a name="encodingactiongroup">org.eclipse.ui.editors.text.EncodingActionGroup</a> and related interfaces</h3>

The class <code>org.eclipse.ui.editors.text.EncodingActionGroup</code> and its related interfaces <code>org.eclipse.ui.editors.text.IEncodingActionsConstants</code>,
<code>org.eclipse.ui.editors.text.IEncodingActionsDefinitionIds</code>, <code>org.eclipse.ui.editors.text.IEncodingActionsHelpContextIds</code>
are planned to be removed. They have been deprecated with Eclipse 3.1.

<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=544309" target="_blank">bug 544309</a>.
</p>

<h3>4. <a name="equinoxlauncher">org.eclipse.core.launcher#Main and WebStartMain</a> and related interfaces</h3>

The classes <code>org.eclipse.core.launcher.Main</code>, <code>org.eclipse.equinox.launcher.WebStartMain</code> its related interfaces will be deleted.

<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=544262" target="_blank">bug 544262</a>.
</p>

<h3>5. <a name="20supportclasses">Delete 2.0 plug-in compatibility classes and related API</a></h3>

The following classes and its related API will be deleted.

<ul>
 <li><tt>ILibrary</tt></li>
 <li><tt>IPluginPrerequisite</tt></li>
 <li><tt>IPluginRegistry</tt></li>
</ul>

<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=544339" target="_blank">bug 544339</a>.
</p>


<h3>7. <a name="jobcreateSystem">Delete Job.createSystem(ICoreRunnable) API</a></h3>

The <code>Job#createSystem(ICoreRunnable)</code> will be deleted.  Use <code>JobcreateSystem(String, ICoreRunnable)</code> instead.

<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=531968" target="_blank">bug 531968</a>.
</p>


<h3>8. <a name="workbenchwindowconfigurer">Delete unsupported methods in WorkbenchWindowConfigurer</a></h3>

The following methods are not used anymore by the platform and will be deleted.


<ul>
 <li><tt>createMenuBar</tt></li>
 <li><tt>createCoolBarControl</tt></li>
 <li><tt>createStatusLineControl</tt></li>
 <li><tt>createPageComposite</tt></li>
 <li><tt>setShowFastViewBars</tt></li>
 <li><tt>getShowFastViewBars</tt></li>
</ul>

<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=485835" target="_blank">bug 485835</a>.
</p>


<!-- ############################################## -->
<h2>API removals after June 2021</h2>

<h3>1. <a name="commands">Delete deprecated contents of org.eclipse.ui.commands package</a></h3>

The following deprecated contents of org.eclipse.ui.commands are not used anymore by the platform and will be deleted.

<ul> <li>AbstractHandler</li>
 <li>ActionHandler</li>
 <li>CategoryEvent</li>
 <li>CommandEvent</li>
 <li>CommandException</li>
 <li>CommandManagerEvent</li>
 <li>ExecutionException</li>
 <li>HandlerEvent</li>
 <li>HandlerSubmission</li>
 <li>ICategory</li>
 <li>ICategoryListener</li>
 <li>ICommand</li>
 <li>ICommandListener</li>
 <li>ICommandManager</li>
 <li>ICommandManagerListener</li>
 <li>IHandler</li>
 <li>IHandlerListener</li>
 <li>IKeyConfiguration</li>
 <li>IKeyConfigurationListener</li>
 <li>IKeySequenceBinding</li>
 <li>IWorkbenchCommandSupport</li>
 <li>KeyConfigurationEvent</li>
 <li>NotDefinedException</li>
 <li>NotHandledException</li>
 <li>Priority</li>
 <li>org.eclipse.ui.IWorkbench.getCommandSupport()</li>
</ul>

<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=431177" target="_blank">bug 431177</a>.
</p>

<!-- ############################################## -->
<h2>API removals after September 2021</h2>

<h3>1. <a name="navigator">Navigator view and related API</a></h3>

Navigator view (ResourceNavigator impl) and related API is marked for deletion.

<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=550379" target="_blank">bug 550379</a>.
</p>

<!-- ############################################## -->
<h2>API removals after December 2021</h2>

<h3>1. <a name="bookmark">BookmarkNavigator view and related API</a></h3>

BookmarkNavigator view (ResourceNavigator impl) and related API is marked for deletion.

<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=550439" target="_blank">bug 550439</a>.
</p>



<!-- ############################################## -->
<h2>API removals after May 2022</h2>

<h3>1. <a name="bookmark">Hover images from ISharedImages</a></h3>

Multiple images not used since Eclipse 3.0 in the platform will be deleted.

<ul> 
 <li>ISharedImages.IMG_TOOL_UNDO_HOVER</li>
 <li>ISharedImages.IMG_TOOL_REDO_HOVER</li>
 <li>ISharedImages.IMG_TOOL_CUT_HOVER</li>
 <li>ISharedImages.IMG_TOOL_COPY_HOVER</li>
 <li>ISharedImages.IMG_TOOL_PASTE_HOVER</li>
 <li>ISharedImages.IMG_TOOL_FORWARD_HOVER</li>
 <li>ISharedImages.IMG_TOOL_DELETE_HOVER</li>
 <li>ISharedImages.IMG_TOOL_NEW_WIZARD_HOVER</li>
 <li>ISharedImages.IMG_TOOL_BACK_HOVER</li>
 <li>ISharedImages.IMG_TOOL_UP_HOVER</li>
</ul>

<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=559593" target="_blank">bug 559593</a>.
</p>

<h2>API removals after June 2022</h2>

<h3>1. <a name="icu4j">ICU4J bundle from SDK</a></h3>

Support and/or usage of ICU4J is being gradually removed from internals. Wherever ICU4J is exposed in API it's being deprecated and scheduled for removal after June 2022 release.
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=562582" target="_blank">bug 562582</a>.
</p>

<!-- ############################################## -->
<h2>API removals after September 2022</h2>

<h3>1. <a name="observablefactories">Observable factory classes</a></h3>

The following databinding classes will be removed. They have been obsolete since the databinding framework was transitioned to work with property classes in 2014. They are replaced by corresponding property factory classes.

See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=546820">bug 546820</a>.

<ul>
 <li>org.eclipse.jface.databinding.viewers.ViewersObservables</li>
 <li>org.eclipse.jface.databinding.swt.SWTObservables</li>
 <li>org.eclipse.core.databinding.beans.BeansObservables</li>
 <li>org.eclipse.core.databinding.beans.PojoObservables</li>
 <li>org.eclipse.ui.databinding.WorkbenchObservables</li>
</ul>

<h3>2. <a name="propertyfactories">Untyped databinding property factory classes</a></h3>

The following classes in the databinding bundles will be removed. They are replaced by typed factory classes with the same name, but in a sub-package that is called "typed".

See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=546822">bug 546822</a>.

<ul>
 <li>org.eclipse.ui.databinding.WorkbenchProperties</li>
 <li>org.eclipse.core.databinding.beans.BeanProperties</li>
 <li>org.eclipse.core.databinding.beans.PojoProperties</li>
 <li>org.eclipse.jface.databinding.viewers.ViewerProperties</li>
 <li>org.eclipse.jface.databinding.swt.WidgetProperties</li>
</ul>

<h3>3. <a name="pde.ui.launcher">Remove deprecated contents of org.eclipse.pde.ui.launcher package</a></h3>

The following classes from <code>org.eclipse.pde.ui.launcher</code> have been deprecated since 2009 and are scheduled for removal after the September 2022 release.
All classes have corresponding replacements in the <code>org.eclipse.pde.launching</code> bundle.
<ul>
  <li><code>org.eclipse.pde.ui.launcher.AbstractPDELaunchConfiguration</code></li>
  <li><code>org.eclipse.pde.ui.launcher.EclipseApplicationLaunchConfiguration</code></li>
  <li><code>org.eclipse.pde.ui.launcher.EquinoxLaunchConfiguration</code></li>
  <li><code>org.eclipse.pde.ui.launcher.EquinoxPluginsTab</code></li>
  <li><code>org.eclipse.pde.ui.launcher.EquinoxSettingsTab</code></li>
  <li><code>org.eclipse.pde.ui.launcher.IPDELauncherConstants</code></li>
  <li><code>org.eclipse.pde.ui.launcher.JUnitLaunchConfigurationDelegate</code></li>
  <li><code>org.eclipse.pde.ui.launcher.OSGiLaunchConfigurationDelegate</code></li>
  <li><code>org.eclipse.pde.ui.launcher.OSGiLaunchConfigurationInitializer</code></li>
  <li><code>org.eclipse.pde.ui.launcher.PDESourcePathProvider</code></li>
</ul>
<p>
For further details or to provide feedback on this change, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=564563" target="_blank">bug 564563</a>.
</p>

</body>
</html>
