blob: 33ec947a2f2f06b9c8790cb1a593bdb4c2bd189d [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Language" content="en-us" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="style.css" type="text/css" title="main" media="screen" />
<title>Eclipse Project Oxygen (4.7) M5 News</title>
</head>
<body>
<h1>Eclipse Project Oxygen (4.7) M5 - New and Noteworthy</h1>
<p>Here are some of the more noteworthy things available in the Oxygen milestone build M5
which is now available for <a href="http://download.eclipse.org/eclipse/downloads/#4.7_Stable_Builds" target="_top">download</a>.
<br/>
We also recommend to read the Tips and Tricks, either via <b>Help &gt; Tips and Tricks...</b> or online for
<a href="http://help.eclipse.org/topic/org.eclipse.platform.doc.user/tips/platform_tips.html">Platform</a>,
<a href="http://help.eclipse.org/topic/org.eclipse.jdt.doc.user/tips/jdt_tips.html">JDT</a>, and
<a href="http://help.eclipse.org/topic/org.eclipse.pde.doc.user/tips/pde_tips.htm">PDE</a>.
</p>
<ul>
<li><a href="#Platform">Platform</a></li>
<li><a href="#JDT">JDT</a></li>
<li><a href="#PDE">PDE</a></li>
<li><a href="#Platform-Dev">Platform Developers</a></li>
<li><a href="#Equinox">Equinox</a></li>
</ul>
<table class="news">
<colgroup>
<col class="title" />
<col />
</colgroup>
<tr>
<td colspan="2" class="section" id="Platform">Platform</td>
</tr>
<tr id="wildcards-in-quickaccess">
<td class="title">Wildcards in Quick Access</td>
<td class="content">
You can now use <b>*</b> and <b>?</b> as wildcards to filter <b>Quick Access</b> (<b>Ctrl+3</b>) items.
The match ranges are displayed in bold.
<p>
<img src="images/quick-access-wildcard-filter.png" alt=""/>
</p>
</td>
</tr>
<tr id="hide-show-status-bar">
<td class="title">Show/hide Status Bar</td>
<td class="content">
You can now hide and show the bottom status bar via menu:
<b>Window</b> &gt; <b>Appearance</b> &gt; <b>Hide (Show) Status Bar</b>.
<p>
<img src="images/toggle-status-bar-from-menu.png" alt="" />
</p>
In Quick Access, the command is called <b>Toggle Statusbar</b>.
</td>
</tr>
<tr id="improved-launch-groups">
<td class="title">Improved Launch Groups</td>
<td class="content">
The UI for the new Launch Groups feature in the Run/Debug Configurations... dialog has been reworked to be more intuitive
and user friendly. Also, additional configuration possibilities have been added:
<ul>
<li>'Wait for console output (regexp)' post launch action: Allows to delay further
processing of launch group elements until a certain output (matching a regular expression)
appears on the console of the given group element.</li>
<li>'Adopt launch if already running': Allows to control the behaviour of the group when
the launch configuration referenced by the launch group element is already running
(no matter who launched it). If checked, the launch configuration will not be launched
again if it is running already. The existing launch will be adopted by the group (i.e.
terminating the group will also terminate this launch). Any configured post launch
action will still be executed!</li>
</ul>
<p>
<img src="images/improved-launch-groups.png" alt="" />
</p>
</td>
</tr>
<tr id="content-assist-model-editor">
<td class="title">Content Assist for Feature Name in Model Editor</td>
<td class="content">
You can now use <b>Ctrl+Space</b> to trigger content assist when selecting the <b>Feature Name</b> in the <b>Model Editor</b>.
<p>
<img src="images/content-assist-model-editor.png" alt="" />
</p>
</td>
</tr>
<tr id="model-editor-improvements">
<td class="title">Model Editor improvements</td>
<td class="content">
The elements proposed in the <b>Add child</b> menu are now filtered to a minimal list containing allowed elements only.
<p>
<img src="images/filter-suggested-elements.png" alt="" />
</p>
</td>
</tr>
<tr>
<td colspan="2" class="section" id="JDT">JDT</td>
</tr>
<tr id="quickfix-move-type-annotation">
<td class="title">Quick Fix to move type annotations</td>
<td class="content">
The rules for the placement of Java 8 "type annotations" introduced via JSR 308 are sometimes surprising.
In case of errors, a new Quick Fix <b>Move type annotation</b> is offered,
that moves the type annotation to a location that corresponds to what was probably intended.
<p>
<img src="images/quickfix-move-type-annotation.png" alt="" />
</p>
</td>
</tr>
<tr id="toggle-trace-point">
<td class="title">Toggle Tracepoint</td>
<td class="content">
A new action <b>Run > Toggle Tracepoint</b> has been added.
<p>
<img src="images/toggle-trace-point-run.png" alt="" />
</p>
The action creates a conditional breakpoint using the "systrace" template, which prints the class and method name.
<p>
<img src="images/toggle-trace-point-conditional-breakpoint.png" alt="" />
</p>
This makes use of another new feature of conditional breakpoints: As long as the condition
doesn't explicitly return a boolean <code>true</code>, the condition is now considered to implicitly return false,
and the breakpoint will not suspend execution.
</td>
</tr>
<tr>
<td colspan="2" class="section" id="PDE">PDE</td>
</tr>
<tr id="plugin-and-feature-export-wizards-filtered-selection">
<td class="title">Filter in plugin and feature export wizards</td>
<td class="content">
You can now use a text filter when selecting plug-ins in the <b>Export.. > Deployable plug-ins and fragments</b> or
features in the <b>Export.. > Deployable features</b> wizards.
<p>
<img src="images/plugin-and-feature-export-wizards-filtered-selection.png" alt=""/>
</p>
</td>
</tr>
<tr id="target-definition-generic-editor-extension">
<td class="title">Target definition files can be edited with the generic editor</td>
<td class="content">
An extension for the generic editor was supplied so that the target definition files (.target files) can now be
edited via the generic editor. Syntax highlighting for the most used keywords is supported. Content Assist is also supported
for tags and their attributes, installable units for a given repository, and the available versions for a given installable unit.
<p>
<img src="images/target-editor-screenshot.png" alt=""/>
</p>
</td>
</tr>
<tr id="pde-plug-in-template-names">
<td class="title">More descriptive plug-in template names</td>
<td class="content">
The template names for plug-in have been reworked to be more descriptive.
<p>
<img src="images/pde-plugin-template-names.png" alt=""/>
</p>
</td>
</tr>
<tr id="pde-api-tools-noimplement-noextend-leak">
<td class="title">Types marked with @noimplement and @noextend processed by API leak analysis</td>
<td class="content">
Extending or implementing an interface marked as @noimplement is now reported as an API leak. This is because
adding a field or method to the interface marked as @noimplement may break a client that is using
the extended or implemented type. Also extending a type marked as @noextend may indirectly leak API types
if the extended type is further extended by the client. Some of the new kinds of leak warnings are shown below:
<p>
<img src="images/pde-api-tool-warning-leak-noimplement-noextend.png" alt=""/>
</p>
</td>
</tr>
<tr id="pde-api-tools-field-addition-to-class-breaking-change">
<td class="title">API Tools flags field addition to class as a breaking change</td>
<td class="content">
The addition of a field to class that is extendable by clients is now flagged as a <a href="https://wiki.eclipse.org/Evolving_Java-based_APIs_2#add-api-field ">breaking change.</a>
On the <b>Plug-in Development &gt; API Errors/Warnings</b> preference page in the <b>API Compatibility</b> tab,
there is a new option in the <b>Class</b> section to control the severity of a "field addition to class".
Also there is a new link at the top of <b>API Compatibility</b> tab that has more details on achieving API binary compatibility.
<p>
<img src="images/pde-api-tools-field-addition-to-class-preference-ui.png" alt=""/>
</p>
The field addition error has a Quick Fix that opens help to explain the incompatibility in greater detail.
<p>
<img src="images/pde-api-tools-field-addition-to-class-quickfix.png" alt=""/>
</p>
</td>
</tr>
<tr>
<td colspan="2" class="section" id="Platform-Dev">Platform Developers</td>
</tr>
<tr id="equinox-common-java8-bree">
<td class="title">Source-incompatible change in org.eclipse.equinox.common requires Java 8 BREE for some dependant plug-ins</td>
<td class="content">
With <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=509234">bug 509234</a>, <code>org.eclipse.core.runtime.ListenerList</code>
now overrides Java 8 default method <code>Iterable#spliterator()</code> and provides <code>stream()</code> and <code>parallelStream()</code>
methods. Thus it exposes Java 8 types in public API. This is a source-incompatible change that requires all plug-ins using
<code>ListenerList</code> to have a minimum BREE set to JavaSE-1.8 if they want to properly compile against Oxygen and forthcoming
versions (i.e. versions in the <code>[3.9,4.0)</code> range).
<p>
The typical compile error indicating that you should change your BREE is:
</p>
<p>
<cite>The type <code>java.util.stream.Stream</code> cannot be resolved. It is indirectly referenced from required <code>.class</code> files.</cite>
</p>
<p>
Note that this change is only required when using <code>org.eclipse.core.runtime.ListenerList</code>. However, now that some Java 8 types are being
exposed in the public API, similar changes may be done in other API types.
</p>
Finally, note that this change is binary compatible. Any previously compiled bundle depending on <code>org.eclipse.equinox.common</code> within
the <code>[3.0,4.0)</code> range will continue to work as before.
</td>
</tr>
<tr id="dynamic-reference-provider">
<td class="title">New API for controlling build order</td>
<td class="content">
The <code>org.eclipse.core.resources.builders</code> extension point now allows extensions to influence the
order in which projects are built by supplying an implementation of
<code>IDynamicReferenceProvider</code>. This replaces the
<code>IProjectDescription#setDynamicReferences(IProject[])</code> API, which is now deprecated.
</td>
</tr>
<tr id="async-content-assist">
<td class="title">Asynchronous content-assistant</td>
<td class="content">
With <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=251156">bug 251156</a>, a new constructor
<code>org.eclipse.jface.text.contentassist.ContentAssistant(boolean asynchronous)</code>
was added. An asynchronous <code>ContentAssistant</code> triggers
computation of completion proposals in the background and doesn't block the thread invoking the completion. As a result, it will prevent the UI thread to freeze
when a completion proposal computer takes too long.
<p>
This supports the same API and methods as the usual <code>ContentAssist</code>, so shifting from synchronous/blocking <code>ContentAssistant</code> to asynchronous one only requires
instantiating the <code>ContentAssistant</code> as asynchronous. Note that as the computation now happens in background, the <code>IContentAssistProcessor</code>
attached to an asynchronous <code>ContentAssistant</code> must <b>not</b> require the UI Thread; any <code>IContentAssistProcessor</code> computer requiring the UI Thread will need to be modified
in order to be used with an asynchronous <code>ContentAssistant</code>.
</p>
<p>
Another new API is <code>ContentAssistant#addContentAssistProcessor(IContentAssistProcessor, String)</code>,
which provides a way to directly add multiple processors to one content assistant.
</p>
<p>
The generic and extensible editor has been switched to use this asynchronous <code>ContentAssistant</code>.
</p>
</td>
</tr>
<tr>
<td colspan="2" class="section" id="Equinox">Equinox</td>
</tr>
<tr id="equinox-ds-felix-scr">
<td class="title">New Declarative Services Implementation supporting OSGi R6</td>
<td class="content">
The previous release of Equinox only supported the OSGi R5 specification for the Declarative Services specification.
With <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=501950">bug 501950</a> the Apache Felix Declarative Services implementation (<b><code>org.apache.felix.scr</code></b>) is now used as the Declarative Services implementation in the Platform and Equinox.
This implementation fully supports the OSGi R6 Declarative Services specification.
The Equinox bundle (<b><code>org.eclipse.equinox.ds</code></b>) is still included in order to configure and start the Felix SCR bundle but the Equinox Declarative Service implementation code is no longer shipped within the org.eclipse.equinox.ds bundle.
<p>
The OSGi R6 API for declarative services requires some additional packages (<b><code>org.osgi.util.function</code></b> and <b><code>org.osgi.util.promise</code></b>). These packages are now exported by the
<b><code>org.eclipse.osgi.util</code></b> bundle. In order to resolve and run the new Declarative Services implementation the following bundles are required in your target:
</p>
<ul>
<li><code>org.apache.felix.scr</code></li>
<li><code>org.eclipse.equinox.ds</code></li>
<li><code>org.eclipse.osgi.services</code></li>
<li><code>org.eclipse.osgi.util</code></li>
</ul>
<p>
The Equinox bundle <b><code>org.eclipse.equinox.util</code></b> is no longer needed for the Felix Declarative Services implementation.
</p>
<p>
Note that <code>org.eclipse.equinox.ds</code> automatically sets <code>ds.delayed.keepInstances=true</code>,
which avoids failures in existing clients of Equinox DS that assume that
component instances are not deactivated when their use count goes to zero.
</p>
</td>
</tr>
<tr>
<td colspan="2"/>
</tr>
</table>
<p>The above features are just the ones that are new since the previous milestone
build. Summaries for earlier Oxygen milestone builds:</p>
<ul>
<li><a href="https://www.eclipse.org/eclipse/news/4.7/M4/">News for Eclipse Oxygen milestone build M4</a></li>
<li><a href="https://www.eclipse.org/eclipse/news/4.7/M3/">News for Eclipse Oxygen milestone build M3</a></li>
<li><a href="https://www.eclipse.org/eclipse/news/4.7/M2/">News for Eclipse Oxygen milestone build M2</a></li>
<li><a href="https://www.eclipse.org/eclipse/news/4.7/M1/">News for Eclipse Oxygen milestone build M1</a></li>
</ul>
</body>
</html>