| <!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) M6 News</title> |
| </head> |
| <body> |
| <h1>Eclipse Project Neon (4.6) M6 - New and Noteworthy</h1> |
| <p>Here are some of the more noteworthy things available in the Neon milestone build M6 |
| which is now available for <a href="http://download.eclipse.org/eclipse/downloads/#4.6_Stable_Build" target="_top">download</a>. |
| <br/> |
| We also recommend to read the Tips and Tricks, either via <b>Help > 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="swt-autoscale"> |
| <td class="title">SWT provides resolution-based auto-scaling</td> |
| <td class="content"> |
| SWT now automatically scales images on high-DPI monitors on Windows and Linux, similar to the Mac's Retina support on OS X. |
| In the absence of high-resolution images, SWT will auto-scale the available images to ensure that SWT-based applications like Eclipse |
| are scaled proportionately to the resolution of the monitor. |
| <p> |
| <img src="images/swt-high-dpi.png" alt="Screenshot with tiny icons 'Before' and a normal appearance 'After'" /> |
| </p> |
| <p> |
| This feature can be disabled on Windows and GTK by setting this VM argument to <code>false</code> |
| in eclipse.ini or on the command line after <code>-vmargs</code>: |
| </p> |
| <p> |
| <b>-Dswt.enable.autoScale=false</b> |
| </p> |
| <p> |
| Auto-scaling cannot be disabled on the Mac as it is provided by the OS. |
| </p> |
| <p> |
| Caveats: We're aware that some scaled images look bad at scale factors less than 200%. This will be improved in M7. |
| Furthermore, we're working on support for high-DPI images in Platform UI, so that plug-in providers |
| can add high-DPI icons without doing any code changes. |
| </p> |
| </td> |
| </tr> |
| |
| <tr id="solstice-welcome-theme"> |
| <td class="title">New Welcome theme 'Solstice'</td> |
| <td class="content"> |
| The Welcome/Intro introduces a new <em>Solstice</em> theme |
| providing a new modern appearance. The Welcome also |
| introduces a new quadrant-based root page, <tt>qroot</tt>, |
| which supports a new command-driven section defined through |
| the <tt>org.eclipse.ui.intro.quicklinks</tt> extension point. |
| These <em>quicklinks</em> are intended to be populated by |
| product owners. |
| <p> |
| <img src="images/eclipse-welcome-solstice.png" alt="" /> |
| </p> |
| </td> |
| </tr> |
| |
| <tr id="welcome-launchbar"> |
| <td class="title">Welcome Launchbar restored</td> |
| <td class="content"> |
| In Eclipse 3.x, the <b>Go to Workbench</b> button |
| on the Welcome page would minimize the Welcome page to the window |
| status bar. This behavior has been restored for Eclipse 4.6. |
| <p> |
| <img src="images/eclipse-welcome-launchbar.png" alt="" /> |
| </p> |
| </td> |
| </tr> |
| |
| <tr id="word-selection-default-value"> |
| <td class="title">'word_selection' and 'line_selection' template variable with default values</td> |
| <td class="content"> |
| The 'word_selection' and 'line_selection' variables, supported in editor and code templates, now allow you to specify a default value to use if the current text selection is empty. |
| </td> |
| </tr> |
| |
| <tr> |
| <td colspan="2" class="section" id="JDT">JDT</td> |
| </tr> |
| |
| <tr id="open-from-clipboard-shortcut"> |
| <td class="title">Ctrl+Shift+V invokes Open from Clipboard</td> |
| <td class="content"> |
| <b>Ctrl+Shift+V</b> has been assigned to invoke |
| <b><a href="http://archive.eclipse.org/eclipse/downloads/drops/R-3.7-201106131736/eclipse-news-part2.html#JavaEditor">Open from Clipboard</a></b>. |
| <p> |
| On GTK+ this key binding was previously assigned to the <b>Display</b> command as a workaround for <b>Ctrl+Shift+D</b> not working. |
| </p> |
| </td> |
| </tr> |
| |
| <tr id="remove-redundant-type-arguments"> |
| <td class="title">Clean Up to remove redundant type arguments</td> |
| <td class="content"> |
| A new option to remove redundant type arguments has been added under the "Unnecessary Code" group of the Clean Up profile. |
| <p> |
| <img src="images/remove-redundant-type-arguments.png" alt="" /> |
| </p> |
| </td> |
| </tr> |
| |
| <tr id="null-analysis-generics"> |
| <td class="title">Improved null analysis with generics</td> |
| <td class="content"> |
| The interplay of null annotations and generics has been improved in several regards. |
| <p> |
| The basic concepts had already been documented in the |
| <a href="http://help.eclipse.org/topic/org.eclipse.jdt.doc.user/tasks/task-using_null_type_annotations.htm%3Fcp=1_3_9_1_0%23generics">online help</a>, |
| but not all that was documented was actually checked by JDT's null analysis. With the changes outlined below, |
| null analysis based on type annotations is even more capable than previous versions. |
| </p> |
| <p id="null-analysis-generics-1"><b>(1)</b> The <b>first batch of contributed improvements</b> implements what we call "pessimistic analysis for free type variables", |
| which affects <em>implementors</em> of generic types. |
| </p> |
| <p><a href="images/MyGenericImpl.java.txt"><img src="images/pessimistic-analysis.png" alt=""/></a></p> |
| <p>In order to allow clients to instantiate such a generic class with either a <code>@NonNull</code> or a <code>@Nullable</code> type |
| as substitution for the "free type variable" <code><T></code>, the implementation of that class must account for the worst in both directions: |
| </p> |
| <ul> |
| <li>To anticipate a <code>@NonNull</code> type, each field typed to a free type variable must be initialized with a non-null value, and |
| passing <code>null</code> where <code>T</code> is expected is illegal</li> |
| <li>To anticipate a <code>@Nullable</code> type, each dereference must be preceded by a null check.</li> |
| </ul> |
| <p> |
| At the bottom of each problem hover, you will find a link to the corresponding configuration option, |
| should you like to change the severity of this diagnostic. Note that configurability is mainly |
| given for smooth migration from previous JDT version; conceptually, problems detected by pessimistic |
| analysis should be treated as errors, because they invalidate the null-guarantees given by a generic type. |
| </p> |
| <img src="images/configure-pessimistic-analysis.png" alt="configuration options for new diagnostics"/> |
| <p id="null-analysis-generics-2"><b>(2)</b> The <b>second improvement</b> concerns <em>consumption</em> of generic types from a library, more specifically: |
| invocations of library methods whose return type is given by a free type variable.<br/> |
| If the library type is instantiated with a <code>@NonNull</code> type as the type argument, |
| we generally want to interpret the mentioned return type as non-null, too. |
| This is problematic only for some "legacy" methods, which may return <code>null</code> without declaring so. |
| The most prominent example is <code>java.util.Map.get(K)</code> (see also the news entry on |
| <a href="https://www.eclipse.org/eclipse/news/4.5/jdt.php#external-annotations">external annotations</a>, |
| which also demonstrates the clean solution to this issue). |
| </p> |
| <p>The analysis cannot see whether absence of a null annotation for such a return type is intentional |
| (in the above sense of "free type variables"), or an omission that should be fixed. |
| For that reason a new warning has been implemented to alert about this situation. |
| </p> |
| <a href="images/Client.java.txt"><img src="images/unsafe-nonnull-interpretation.png" alt=""/></a> |
| <p>In the above example, both fields <code>list</code> and <code>map</code> provide <code>@NonNull String</code> as a |
| type argument, hence the return types of both <code>get</code> methods are interpreted as non-null. |
| For <code>List</code> this is desired, for <code>Map</code> it is a bug. |
| </p> |
| <p>The dilemma can be resolved by adding a (possibly empty) external annotation file (<code>.eea</code>) |
| to each affected library class. By using an empty annotation file, the user signals that all types |
| in this class should be interpreted verbatim (like in the <code>List</code> case - use with care). |
| In the other case, the missing <code>@Nullable</code> annotation should be added as an external annotation |
| (like in the <code>Map</code> case). |
| </p> |
| <p>In a project that is not yet configured to use external annotations for the library in question, |
| the warning is demoted to level "information". Generally, the severity of this problem is configured |
| using the option right below the one mentioned above, titled <b>Unsafe '@NonNull' interpretation |
| of free type variable from library</b>.</p> |
| <p id="null-analysis-generics-3"><b>(3)</b> <b>Finally</b>, a small utility class, <code>org.eclipse.jdt.annotation.Checks</code>, |
| has been included in the bundle <code>org.eclipse.jdt.annotation_2.1.0</code> |
| containing helper methods for typical idioms for improving and documenting null safety.</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 <b>Line Wrapping</b> section, you can control the wrapping policy of <b>'for' loop headers</b>.</p> |
| <p><img src="images/formatter-wrap-for.png" alt="" /></p> |
| <p><b>(2)</b> The <b>Align fields in columns</b> feature in the <b>Indentation</b> section can now be configured to |
| <b>recognize groups separated by empty lines</b> and align them independently.</p> |
| <p><img src="images/formatter-align-groups.png" alt="" /></p> |
| <p><b>(3)</b> In the <b>New lines</b> section, you can control if new lines should be |
| added <b>after annotations on enum constants</b>.</p> |
| <p><img src="images/formatter-enum-constants.png" alt="" /></p> |
| </td> |
| </tr> |
| |
| <tr> |
| <td colspan="2" class="section" id="PDE">PDE</td> |
| </tr> |
| |
| <tr id="ds-annotations"> |
| <td class="title">Support for OSGi Declarative Services Annotations</td> |
| <td class="content"> |
| OSGi Declarative Services provide a powerful mechanism for developing complex, service-oriented |
| applications. With proper tooling, annotations, which were added to Declarative Services |
| in version 1.2, make it easy to generate and maintain the required component descriptor files. |
| <p> |
| When enabled, PDE automatically generates and updates Declarative Services component |
| descriptor files from appropriately annotated Java source. This is done without requiring |
| any additional builder to be configured in your project. |
| </p> |
| <p> |
| When you annotate your component implementation classes with <code>@Component</code>, and any |
| reference bind methods with <code>@Reference</code>, PDE will validate your annotations |
| and generate the corresponding component descriptor files. Any errors discovered during validation |
| are highlighted and reported. |
| </p> |
| <p> |
| <img src="images/ds-annotations.png" alt="" /> |
| </p> |
| <p> |
| In addition, PDE will also maintain the project's MANIFEST.MF and build.properties file |
| -- generated component descriptor files are automatically added to the manifest |
| and included in the build. |
| </p> |
| <p> |
| To enable this feature, go to <b>Preferences</b> or <b>Project Properties > Plug-in Development > DS Annotations</b> |
| and check <b>Generate descriptors from annotated sources</b>. |
| </p> |
| </td> |
| </tr> |
| <tr id="ds-annotations-template"> |
| <td class="title">Updated OSGi Declarative Services Example</td> |
| <td class="content"> |
| The OSGi Declarative Services Example now uses annotations. |
| <p> |
| Instead of creating a Component Definition file for each component class and adding it |
| to the manifest and build.properties, the wizard creates component classes annotated with |
| the appropriate DS annotations, which are then used by PDE to automatically generate |
| the corresponding component descriptor files. |
| </p> |
| </td> |
| </tr> |
| |
| <tr id="pde-image-browser-pagination"> |
| <td class="title">Pagination control in Plug-in Image Browser</td> |
| <td class="content"> |
| In the <b>Plug-in Image Browser</b>, at the end of the view, there are pagination controls |
| to move to the next page of images. |
| <p> |
| <img src="images/pde-plugin-image-browser-pagination.png" alt="" /> |
| </p> |
| </td> |
| </tr> |
| |
| |
| <tr id="pde-debug-option-help"> |
| <td class="title">Tooltips for options in Tracing dialog </td> |
| <td class="content"> |
| In the <b>Tracing </b> tab of Eclipse launch configuration, the options now have tooltips which display |
| more information about that option. |
| <p> |
| <img src="images/pde-tracing-options-help.png" alt="" /> |
| </p> |
| The information gets extracted from comments in the declaring bundle's .options file. |
| </td> |
| </tr> |
| |
| |
| <tr> |
| <td colspan="2" class="section" id="Platform-Dev">Platform Developers</td> |
| </tr> |
| |
| <tr id="high-dpi-api"> |
| <td class="title">APIs for high-DPI monitor support</td> |
| <td class="content"> |
| Platform-independent high-DPI support has been added to the Win32 and GTK ports. |
| In the past, only the font size was adjusted on those two platforms, which lead to an inconsistent |
| appearance of SWT applications across different platforms. |
| <p> |
| To shield existing clients from resolution differences, SWT now uses the Cocoa model on all three platforms. |
| Existing SWT APIs keep using the well-known coordinate system in SWT points. In high-DPI environments, |
| these SWT points are transparently scaled to native pixels. |
| </p><p> |
| To create DPI-aware <code>org.eclipse.swt.graphics.Image</code>s, use these constructors |
| that have already been provided in the <a href="https://www.eclipse.org/eclipse/news/4.5/M6/#high-dpi">Mars release</a>: |
| </p> |
| <ul> |
| <li><code>Image(Device, ImageFileNameProvider)</code></li> |
| <li><code>Image(Device, ImageDataProvider)</code></li> |
| </ul> |
| |
| Two new APIs have been added in <code>Image</code> to give you direct access to the pixel data on high-DPI monitors. |
| <ul> |
| <li><code>Image#getImageDataAtCurrentZoom()</code>: |
| Returns an <code>ImageData</code> that contains the full-resolution pixel data at the current OS zoom level</li> |
| <li><code>Image#getBoundsInPixels()</code>: |
| Returns the image dimensions in pixels at the current OS zoom level</li> |
| </ul> |
| </td> |
| </tr> |
| |
| <tr id="swt-requires-java7"> |
| <td class="title">SWT requires 1.7 Java runtime</td> |
| <td class="content"> |
| The SWT projects are now compiled at 1.7 compliance level. As a result, a Java runtime of |
| 1.7 or above is required to run SWT applications. |
| </td> |
| </tr> |
| |
| <tr id="link-api"> |
| <td class="title">API to set Link color</td> |
| <td class="content"> |
| A new API <code>org.eclipse.swt.widgets.Link#setLinkForeground(Color)</code> has been added |
| that allows you to set the |
| foreground color of the hyperlink text in a Link widget. |
| <p> |
| The corresponding getter <code>Link#getLinkForeground()</code> has been added which returns |
| the foreground color of the hyperlink text in the Link widget. |
| </p> |
| <p> |
| For an example, see <a href="http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet182.java">Snippet182</a>. |
| </p> |
| </td> |
| </tr> |
| |
| <tr id="javax-annotation-package-dependency"> |
| <td class="title">Imports of the <code>javax.annotation</code> package no longer require a minimum version</td> |
| <td class="content"> |
| Plug-ins are no longer required to specify a minimum package version when importing the <code>javax.annotation</code> package. |
| The Eclipse runtime will resolve all components to the same version (JVM or provided by the Eclipse Platform). |
| <p> |
| This avoids a common error in Eclipse RCP implementations in which <code>@PostConstruct</code> |
| was resolved to different classes in the bundle classpath. |
| This change is backwards compatible, i.e., a dependency with a minimum version still works correctly. |
| </p> |
| </td> |
| </tr> |
| |
| <tr id="create-method-computed-value"> |
| <td class="title">New factory method for data binding's ComputedValue</td> |
| <td class="content"> |
| An <code>org.eclipse.core.databinding.observable.value.ComputedValue</code> can compute custom values from other tracked getters inside its <code>calculate</code> method. |
| <p>Before this change, you had to create a subclass of <code>ComputedValue</code>, but the new <code>create</code> method, which expects a <code>Supplier<T></code> |
| allows you to create an instance of <code>ComputedValue</code> by using a lambda expression.</p> |
| <p>Examples: |
| </p> |
| <pre>IObservableValue<Integer> listSizeObservable = |
| ComputedValue.create(() -> observableList.size());</pre> |
| or |
| <pre>IObservableValue<String> fullNameObservable = |
| ComputedValue.create(() -> personFirstNameObservable.getValue() + " " |
| + personLastNameObservable.getValue());</pre> |
| |
| <p> |
| More details about tracked getters can be found in the <code>org.eclipse.core.databinding.observable.ObservableTracker</code>'s |
| <code>getterCalled(IObservable)</code> method. Almost every <code>IObservable</code>'s get methods are tracked getters. |
| </p> |
| </td> |
| </tr> |
| |
| <tr id="mpart-runtime-closeable-change"> |
| <td class="title">Change closeable attribute of MPart at runtime</td> |
| <td class="content"> |
| Calling the <code>setCloseable</code> method on an <code>org.eclipse.e4.ui.model.application.ui.basic.MPart</code> instance will |
| now change the visibility of the close button for the corresponding part. |
| <p> |
| <img src="images/mpart-closeable.png" alt="" /> |
| </p> |
| </td> |
| </tr> |
| |
| <tr id="e4-app-shutdown-started"> |
| <td class="title">Shutdown started event for Eclipse 4 RCP applications</td> |
| <td class="content"> |
| When Eclipse 4 RCP applications are about to shut down, the |
| <code>org.eclipse.e4.ui.workbench.UIEvents.UILifeCycle.APP_SHUTDOWN_STARTED</code> event will be fired now. |
| Previously, this only worked for Eclipse RCP applications running in the compatibility mode, |
| and in mixed mode applications which use both Eclipse 3 and 4 APIs. |
| </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/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> |