blob: f9b0c9d0cee5c3c48b995c1c81f15d8fb8dcd90b [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 Neon (4.6) M7 News</title>
</head>
<body>
<h1>Eclipse Project Neon (4.6) M7 - New and Noteworthy</h1>
<p>Here are some of the more noteworthy things available in the Neon milestone build M7
which is now available for <a href="http://download.eclipse.org/eclipse/downloads/#4.6_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>
</ul>
<table class="news">
<colgroup>
<col class="title" />
<col />
</colgroup>
<tr>
<td colspan="2" class="section" id="Platform">Platform</td>
</tr>
<tr id="improved-performance-reduced-memory">
<td class="title">Improved interactive performance and reduced memory consumption</td>
<td class="content">
This and earlier milestones contain a multitude of fixes to enhance interactive and startup performance of the Eclipse IDE, and
to reduce overall memory consumption.
</td>
</tr>
<tr id="import-projects">
<td class="title">Import projects</td>
<td class="content">
A new <b>Import Projects</b> wizard is available via the <b>File &gt; Open Projects...</b> menu and via the general
<b>Import...</b> command under <b>General &gt; Projects from Folder or Archive</b>.
<p>
Compared to other ways to import or create projects, this wizard aims at being a universal wizard that,
from a source directory or archive, can detect and configure various kinds of projects.
</p>
<p>
<img src="images/import-projects.png" alt="" />
</p>
<p>
This wizard relies on an extensible set of strategies that look at the content of the import source
to detect file types, project layout patterns, or even look into some files in order to deduct which folders should be
turned into projects and how those should be configured. Configuration usually involves setting up project natures and
preferences.
</p>
<p>
The import strategies are contributed via the new extension point <code>org.eclipse.ui.ide.projectConfigurator</code>, so that other IDE components
can contribute detection and configuration specific to the technology they're supporting.
</p>
</td>
</tr>
<tr id="dark-theme-styled-links">
<td class="title">Link widget background color can be styled via CSS</td>
<td class="content">
You can now style the background color of the SWT Link widget. This is used in
the default dark theme provided by Eclipse.
<p>
<img src="images/themed-links.png" alt="" />
</p>
</td>
</tr>
<tr id="dark-theme-styled-text-scrollbar">
<td class="title">Themed scroll bar enabled for editors in dark theme</td>
<td class="content">
It's now possible to replace the native scroll bar of a StyledText by a styled overlay. This is enabled
by default in the dark theme on Windows.
<p>
<img src="images/themed-scroll-bar.png" alt="" />
</p>
<p>
This feature can be disabled in the Windows dark theme by setting the <code>swt.enable.themedScrollBar</code>
VM argument to <code>false</code> (or enabled on the dark theme for other platforms by setting it to true)
in eclipse.ini or on the command line after <code>-vmargs</code>:
</p>
<p>
<b>-Dswt.enable.themedScrollBar=false</b>
</p>
<p>
Note that it may be added through css to any theme (see
<a href="http://git.eclipse.org/c/platform/eclipse.platform.ui.git/diff/bundles/org.eclipse.e4.ui.css.swt/plugin.xml?id=742d2e990765d5bbf9be61ff3f047105f8102bd3">
properties available for customization</a> and a <a href="http://git.eclipse.org/c/platform/eclipse.platform.ui.git/diff/bundles/org.eclipse.ui.themes/css/e4-dark_win.css?id=742d2e990765d5bbf9be61ff3f047105f8102bd3">css example</a>)
-- the user may always override the theme setting by using the <code>swt.enable.themedScrollBar</code> VM argument.
</p>
<p>
<b>Caveats</b>: We're aware that the themed scroll bar is not currently available for all
elements (such as trees and tables), and some places where the scroll bar was
invisible (such as compare editors) may now show a scroll bar. These will only
be fixed for Eclipse 4.7.
</p>
</td>
</tr>
<tr id="simplified-capabilities-preference-page">
<td class="title">Advanced capabilities preferences are now displayed in place (no extra dialog) </td>
<td class="content">
Previously, the entries in the <b>Capabilities</b> preference page were displayed in a list. If you wanted to edit them, you had to open an extra dialog.
Now you can directly enable or disable the capabilities from the preference page, as depicted in the following screenshot.
<p>
<img src="images/simplified-capabilities-page.png" alt="" />
</p>
<p>
Since this dialog has API to prevent advanced editing, if the property ALLOW_ADVANCED is set to false, the original list
is maintained and will be shown, which allows you to enable/disable only the main categories (not individual capabilities).
</p>
</td>
</tr>
<tr id="quick-access-improvements">
<td class="title">Quick Access improvements</td>
<td class="content">
<b>Quick Access</b> (<b>Ctrl+3</b>) is a small text field in the toolbar. You can use it to trigger any command in the Eclipse IDE.
<p><img src="images/eclipse-quick-access-improved-search.png" alt="" /></p>
<p>You can now restrict the search to Views, Commands, etc. by typing the category name followed by a colon.
For example, to filter the list of all the views, start typing <code>"Views: "</code> in the search-box.</p>
<p>
A few usability bugs have been fixed: The tooltip shows the keyboard shortcut,
the number of search results per category is independent of the size of the proposals window,
and the list with previous choices already opens when you click the field with the mouse.
</p>
</td>
</tr>
<tr id="workspace-name-in-window-title">
<td class="title">Workspace name shown in window title by default</td>
<td class="content">
The workspace name is now shown at the beginning of the window title by default.
The initial name is the name of the workspace directory.
<p>
This the name can be changed or cleared in <b>Preferences &gt; General &gt; Workspace</b>.
</p>
</td>
</tr>
<tr id="full-screen-feature">
<td class="title">Full Screen</td>
<td class="content">
The <b>Full Screen</b> feature is now also available on Windows and Linux. You can toggle the mode via shortcut (<b>Alt+F11</b>) or menu (<b>Window &gt; Appearance &gt; Toggle Full Screen</b>).
<p>When Full Screen is activated, you'll see a dialog which tells you how to turn it off again.</p>
</td>
</tr>
<tr id="autosave-dirty-editors">
<td class="title">Automatic Save of dirty editors</td>
<td class="content">
Auto-save of dirty editors is now available in Eclipse. The autosave option is <b>disabled by default</b>.
A new autosave preference page (<b>Preferences &gt; General &gt; Editors &gt; Autosave</b>) is available and allows to enable/disable the autosave and change the interval of autosave.
The countdown is reset on keyboard activity, mouse click, or when a popup is displayed (e.g. content assist, preference page, ...).
<p><img src="images/autosave-preference-page.png" alt="" /></p>
</td>
</tr>
<tr id="terminate-relaunch-history">
<td class="title">Terminate and Relaunch from history</td>
<td class="content">
A <b>Terminate and Relaunch</b> option is now available while launching from history.
The default setting is to launch without terminating previous launches. To enable automatic termination,
select the option "Terminate and Relaunch while launching from history" on
<b>Preferences &gt; Run/Debug &gt; Launching</b>.
<p>
The behavior not selected on the preference page can also be activated on-demand by holding
the <b>Shift</b> key while launching the configuration from history.
</p>
<p><img src="images/launch-preference-history-relaunch.png" alt="" /></p>
<p>
Hint: You can still open the dialog to <b>edit a launch configuration</b> by holding
the <b>Ctrl</b> key while selecting the configuration from history.
</p>
</td>
</tr>
<tr id="solaris-64-bit-builds">
<td class="title">Solaris builds are now 64-bit only</td>
<td class="content">
The 32-bit builds of Solaris (both x86 and SPARC) have been discontinued as there is no 32-bit Java 8 JRE available on Solaris.
<p> These builds are instead being replaced by the corresponding 64-bit builds. The 64-bit build for Solaris x86 is already available in M7 and the 64-bit SPARC build will be available soon. </p>
</td>
</tr>
<tr>
<td colspan="2" class="section" id="JDT">JDT</td>
</tr>
<tr id="show-referenced-libraries-node-project-explorer">
<td class="title">Grouping of referenced libraries in Project Explorer</td>
<td class="content">
The Project Explorer view now groups referenced libraries in a new container node.
<p>
<img src="images/show-referenced-libraries-node-project-explorer.png" alt="View menu > Show 'Referenced Libraries' node" />
</p>
</td>
</tr>
<tr id="hide-empty-library-containers-project-explorer">
<td class="title">Hiding empty library containers in Project Explorer</td>
<td class="content">
You can now hide empty library containers in the Project Explorer view by selecting the new filter in its <b>Customize View...</b> dialog.
<p>
<img src="images/hide-empty-library-containers-project-explorer.png" alt="" />
</p>
</td>
</tr>
<tr id="add-meta-annotations">
<td class="title">Adding meta-annotations while creating a new Java annotation type</td>
<td class="content">
You can now choose to add <code>@Retention</code>, <code>@Target</code> and <code>@Documented</code> meta-annotations along with their applicable values while creating a new Java annotation type.
<p>
<img src="images/add-meta-annotations.png" alt="" />
</p>
</td>
</tr>
<tr id="assign-all-params-to-new-fields">
<td class="title">Create new fields from method parameters</td>
<td class="content">
You can now assign all parameters of a method or constructor to new fields at once using the new <b>Quick Assist</b> (<b>Ctrl+1</b>):
<p>
<img src="images/assign-all-params-to-new-fields.png" alt="Assign all parameters to new fields" />
</p>
</td>
</tr>
<tr id="search-on-multi-selections">
<td class="title">Search on multi-selections</td>
<td class="content">
You can now select multiple elements in views like Package Explorer and Outline and then search for References, Declarations, Implementors, and Read/Write Access (where applicable):
<p><img src="images/search-on-multi-selections.png" alt="" /></p>
You can even select results in the Search view and start a new search for those elements.
To follow method call chains, you'd probably use <b>Open Call Hierarchy</b>, though.
</td>
</tr>
<tr id="enabled-junit-assertions">
<td class="title">Enabled assertions for new JUnit launch configurations</td>
<td class="content">
Assertions are now enabled by default for new JUnit launch configurations. You can disable this on <b>Preferences &gt; Java &gt; JUnit</b> page:
<p>
<img src="images/enabled-junit-assertions.png" alt="" />
</p>
</td>
</tr>
<tr id="add-nonnull">
<td class="title">Quick Fix to add @NonNull to local variable</td>
<td class="content">
When a "potential null pointer access" problem is raised against a local variable,
the reason is not always obvious.
Perhaps null is assigned somewhere deep inside a complex control flow.
If annotation-based null analysis is enabled, a new <b>Quick Fix</b> is offered (<b>Ctrl+1</b>),
that adds a <code>@NonNull</code> annotation to the local variable.
<p>
<img src="images/add-nonnull1.png" alt="" />
</p>
<p>
While this may not produce correct code, it tells the compiler your intention to not
allow <code>null</code> in this variable, and subsequently the compiler will answer
with more helpful warnings or errors pointing to the root problem.
In the given example, it will alert you of subtleties about using unconstrained
type variables (see also <a href="https://www.eclipse.org/eclipse/news/4.6/M6/#null-analysis-generics">Improved null analysis with generics (M6)</a>):
</p>
<p>
<img src="images/add-nonnull2.png" alt="" />
</p>
</td>
</tr>
<tr id="formatter">
<td class="title">New options in code formatter</td>
<td class="content">
A few new options have been added in the formatter profile editor.
<p><b>(1)</b> In the new <b>Parentheses</b> tab, you can order the formatter to <b>keep
parentheses</b> of various Java elements <b>on separate lines</b>, i.e. put a line break after
the opening parenthesis and before the closing parenthesis. This can be done always, only when parentheses
are not empty, or when their content is wrapped. There's also an option to <b>preserve existing
positions</b>, if you want to manually manage parentheses positions on a case-by-case basis.</p>
<p><img src="images/formatter-parentheses.png" alt="" /></p>
<p><b>(2)</b> In the <b>Line Wrapping</b> tab, you can set the wrapping policy for
<b>parameterized types</b>.</p>
<p><img src="images/formatter-wrap-parameterized.png" alt="" /></p>
<p><b>(3)</b> Also in the <b>Line Wrapping</b> tab, you can decide to wrap <b>before
or after operators</b> in <b>assignments</b> and <b>conditional expressions</b>.</p>
<p><img src="images/formatter-wrap-before-assignment.png" alt="" /></p>
<p><img src="images/formatter-wrap-before-conditional.png" alt="" /></p>
</td>
</tr>
<tr id="breakpoint-unrelated-project">
<td class="title">Installing breakpoints from unrelated projects</td>
<td class="content">
Multiple versions of the same Java type can be available in a workspace, and each version can
have breakpoints configured at different source locations. When debugging, JDT tries to
determine the "right" set of breakpoints to install in the target VM. This analysis
now uses Java project dependencies by default.
<p>
To always install all enabled breakpoints, you can disable the new option
<b>Preferences &gt; Java &gt; Debug &gt; Do not install breakpoints from unrelated projects</b>
</p>
<p>
<img src="images/breakpoint-unrelated-project.png" alt="" />
</p>
<p>
Note that not all projects use explicit Java project dependencies. E.g. OSGi bundles
typically use a dynamically computed classpath where project dependencies are computed
by PDE.
</p>
</td>
</tr>
<tr>
<td colspan="2" class="section" id="PDE">PDE</td>
</tr>
<tr id="plugin-wizard-activator-creation">
<td class="title">New Plug-in wizard does not create activator by default</td>
<td class="content">
By default, the new plug-in wizard does not suggest the creation of an activator class anymore.
Functionality in activators can in most cases be replaced with other means (e.g. OSGi declarative services), and activators
can slow down the startup of an application.
</td>
</tr>
<tr id="multi-version-baseline-support">
<td class="title">Multi-version support for API analysis builder</td>
<td class="content">
The API Analysis Builder now supports API baselines with multi-version bundles.
While doing API analysis for a bundle for which multiple versions exist in the baseline,
the comparisons are performed with the bundle in the baseline which best matches
the development bundle that is being built.
</td>
</tr>
<tr id="ds-annotation-bapl">
<td class="title">DS Annotations Bundle-ActivationPolicy generation</td>
<td class="content">
The Declarative Service Annotations support added with M6 can now be configured to generate the bundle header for lazy activation.
The <code>Bundle-ActivationPolicy: lazy</code> header is necessary when starting an Eclipse application that uses the Equinox launcher.
Otherwise, the bundle that provides the declarative service will not be started automatically and therefore the service won't be available.
In a plain OSGi environment, this header is not necessary and might not have any effect. Therefore, it can be configured via preferences
whether the header should be generated or not.
<p>
<img src="images/ds-annotations.png" alt="" />
</p>
</td>
</tr>
<tr>
<td colspan="2" class="section" id="Platform-Dev">Platform Developers</td>
</tr>
<tr id="disable-toolbar-dnd">
<td class="title">Disable drag and drop for toolbars</td>
<td class="content">
You can disable drag and drop of toolbars and tool components by tagging the corresponding model element with the <code>'NoMove'</code> tag.
<p>
<img src="images/toolbar-disable-drag-and-drop-with-NoMove-tag.png" alt=""/>
</p>
</td>
</tr>
<tr id="e4-help-support">
<td class="title">Support for setting the help ID in Eclipse 4 application</td>
<td class="content">
To enable help entries for menus, you can define an ID for the help system for your <code>MCommand</code>, your <code>MHandledMenuItem</code> or your <code>MDirectMenuItem</code> model elements by adding an entry to the <code>Persisted State</code> Map with the key <code>'HelpContextId'</code> and your help context id as the value.
<p>
<img src="images/e4-help-support.png" alt=""/>
</p>
</td>
</tr>
<tr id="sideeffect-package">
<td class="title">Different package for ISideEffect</td>
<td class="content">
The <code>ISideEffect</code> and <code>ISideEffectFactory</code> interfaces and the <code>CompositeSideEffect</code> class
have been moved to a new package <code>org.eclipse.core.databinding.observable.sideeffect</code>.
</td>
</tr>
<tr id="sideeffect-factory">
<td class="title">ISideEffectFactory for composite ISideEffects</td>
<td class="content">
You can use the <code>ISideEffectFactory</code> to create several <code>ISideEffect</code> instances that share the same life cycle.
<p>
For example, all <code>ISideEffect</code> instances that are created by the <code>ISideEffectFactory</code> obtained from the <code>WidgetSideEffects#createFactory(Widget disposableWidget)</code> method are automatically disposed once the corresponding widget is disposed.
</p>
<p>Example:</p>
<pre>
ISWTObservableValue personFirstNameTextObservable = WidgetProperties.text(SWT.Modify)
.observe(personFirstNameText);
ISWTObservableValue personLastNameTextObservable = WidgetProperties.text(SWT.Modify)
.observe(personLastNameText);
ISideEffectFactory sideEffectFactory = WidgetSideEffects.createFactory(personFirstNameText);
sideEffectFactory.create(person::getFirstName, personFirstNameText::setText);
sideEffectFactory.create(personFirstNameTextObservable::getValue, person::setFirstName);
sideEffectFactory.create(person::getLastName, personLastNameText::setText);
sideEffectFactory.create(personLastNameTextObservable::getValue, person::setLastName);
</pre>
</td>
</tr>
<tr id="swt-device-zoom">
<td class="title">SWT device zoom</td>
<td class="content">
SWT exposes the device zoom level at which it is currently operating via the system property
<p><code>"org.eclipse.swt.internal.deviceZoom"</code></p>
<p>Note: This is a read-only value, so setting it on the command line doesn't make sense.
Furthermore, SWT doesn't use the deviceZoom when HighDPI support is disabled via <code>-Dswt.enable.autoScale=false</code></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 Neon milestone builds:</p>
<ul>
<li><a href="https://www.eclipse.org/eclipse/news/4.6/M6/">News for Eclipse Neon milestone build M6</a></li>
<li><a href="https://www.eclipse.org/eclipse/news/4.6/M5/">News for Eclipse Neon milestone build M5</a></li>
<li><a href="https://www.eclipse.org/eclipse/news/4.6/M4/">News for Eclipse Neon milestone build M4</a></li>
<li><a href="https://www.eclipse.org/eclipse/news/4.6/M3/">News for Eclipse Neon milestone build M3</a></li>
<li><a href="https://www.eclipse.org/eclipse/news/4.6/M2/">News for Eclipse Neon milestone build M2</a></li>
<li><a href="https://www.eclipse.org/eclipse/news/4.6/M1/">News for Eclipse Neon milestone build M1</a></li>
</ul>
</body>
</html>