blob: bad20ef376f12ffb2349ed8e183d64a8703cbd47 [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" />
<style type="text/css">
p, table, td, th { font-family: verdana, arial, helvetica, geneva; font-size: 10pt}
pre { font-family: "Courier New", Courier, mono; font-size: 10pt}
h2 { font-family: verdana, arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}
code { font-family: "Courier New", Courier, mono; font-size: 10pt}
sup { font-family: verdana, arial, helvetica, geneva; font-size: 10px}
h3 { font-family: verdana, arial, helvetica, geneva; font-size: 14pt; font-weight: bold}
li { font-family: verdana, arial, helvetica, geneva; font-size: 10pt}
h1 { font-family: verdana, arial, helvetica, geneva; font-size: 24pt; font-weight: bold}
body { font-family: verdana, arial, helvetica, geneva; font-size: 10pt; margin-top: 5mm; margin-left: 3mm}
.indextop { font-size: x-large; font-family: verdana, arial, helvetica, sans-serif; font-weight: bold}
.indexsub { font-size: xx-small; font-family: verdana, arial, helvetica, sans-serif; color: #8080FF}
a.bar:link { text-decoration: none; color: #FFFFFF}
a.bar:visited { color: #FFFFFF; text-decoration: none}
a.bar:hover { color: #FFFFFF; text-decoration: underline}
a.bar { color: #FFFFFF}
body {max-width: 900px;}
table.news col.title {width: 30%;}
table.news {table-layout: fixed; border-collapse: collapse; width: 100%;}
table.news td {border-top: solid thin black; padding: 10px; overflow: visible;}
table.news tr {vertical-align: top;}
table.news tr td.section {font-size: 20px; font-weight: bold;}
table.news tr td.title {vertical-align: top; font-weight: bold;}
table.news tr td.content {vertical-align: top;}
</style>
<title>Eclipse Project Photon (4.8) M3 - New and Noteworthy</title>
</head>
<body>
<h1>Eclipse Project Photon (4.8) M3 - New and Noteworthy</h1>
<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="macos-waiting-cursor">
<td class="title">Animated waiting cursor on macOS</td>
<td class="content">
During long taking UI actions the cursor switches to a waiting cursor. On macOS this used to be a static black/white circle.
From Eclipse Photon the macOS system's busy cursor is changed to a spinning blue ball (also called beach ball).
<p>
<img src="images/macos-wait-cursor.png" alt=""/>
</p>
</td>
</tr>
<tr id="preference-import-export-buttons">
<td class="title">Import/export preferences from preference dialog</td>
<td class="content">
Easily accessible buttons for opening the <b>Import/Export</b> preferences wizards have been added to the lower left corner of the <b>Preferences</b> dialog. The wizards are still accessible through the <b>File > Import...</b> and <b>File > Export...</b> wizards.
<p>
<img src="images/preference-import-export.png" alt=""/>
</p>
</td>
</tr>
<tr id="windows-modern-directory-dialog">
<td class="title">The DirectoryDialog now uses modern style</td>
<td class="content">
The <b>DirectoryDialog</b> has been re-implemented to use modern native widget introduced in Windows Vista.
The new look and feel is as illustrated below:
<p>
<img src="images/windows-modern-directory-dialog.png" alt=""/>
</p>
<p>
<b>Regarding usage of newer <code>DirectoryDialog</code> on Windows:</b>
In the old <code>DirectoryDialog</code>, we used to have the option to set a text message to specify the purpose of the <code>DirectoryDialog</code> using <code>DirectoryDialog#setMessage(String)</code>.
This functionality is no more possible with the newer <code>DirectoryDialog</code>.
</p>
<p>
Hence, revisit the usage of <code>DirectoryDialog.setMessage(String)</code> in your projects, and if needed elaborate the Title field of <code>DirectoryDialog</code> using <code>DirectoryDialog.setText(String)</code> method.
</p>
<p>
Note: Recommend to use a minimal set of words in the Title field of <code>DirectoryDialog</code> and avoid making it look clumsy.
</p>
</td>
</tr>
<tr id="report-missing-nature-as-marker">
<td class="title">Report reference to missing nature as error marker</td>
<td class="comment">
On the <b>Workspace</b> preference page, there is now a new option to define the severity of an error marker
to show on a project when it references a nature that is not available.
<p>
<img src="images/missing-nature-preference.png" alt=""/>
</p>
<p>As a typical error markers, those are reported as decorator in the <b>Project Explorer</b> and as an
entry in the <b>Problems</b> view.</p>
<p>
<img src="images/missing-nature-marker.png" alt=""/>
</p>
<p>Clients can associate marker resolution factories to these markers, whose type id is <code>org.eclipse.core.resources.unknownNature</code>.</p>
</td>
</tr>
<tr id="open-resource-highlighting">
<td class="title">Expanded Highlighting in Open Resource Dialog</td>
<td class="content">
The Open Resource dialog now shows you how the search term matches the found resources by highlighting the names based on camel-case and pattern ( * and ? ) searches.
<p>
<img src="images/open-resource-highlight.png" alt=""/>
</p>
</td>
</tr>
<tr id="unde-redo-toolbar">
<td class="title">Undo/Redo Toolbar Buttons</td>
<td class="content">
The main toolbar can now show Undo and Redo buttons.
<p>
<img src="images/undo-redo-toolbar.png" alt=""/>
</p>
<p>The buttons are not available by default. They can be added via <b>Window > Perspective > Customize Perspective...</b>:</p>
<p>
<img src="images/undo-redo-customize.png" alt=""/>
</p>
</td>
</tr>
<tr id="keys-export-commandid-csv">
<td class="title">Export command id of key bindings to CSV</td>
<td class="content">
On the <b>Keys</b> preference page the <b>Export CSV</b> action exports additionally the command id for key bindings.
<p>
<img src="images/export-keys-dialog.png" alt="Keys Preference Page"/>
</p>
<p>
<a href="images/export-keys.csv"><img src="images/export-keys-csv.png" alt="Exported CSV file"/></a>
</p>
</td>
</tr>
<tr id="close-newly-imported-projects-upon-completion">
<td class="title">Close newly imported projects upon completion</td>
<td class="content">
The import wizard offers you the option to close the newly imported projects upon completion of the import process.
This might be beneficial if you're importing many projects and/or some projects have time-consuming builders configured.
This affects the wizards reachable via <b>File > Open Projects...</b>, <b>File > Import... > Existing Projects into Workspace</b>
and <b>File > Import > Projects from Folder or Archive</b>
<p>
<img src="images/close-newly-imported-projects-upon-completion.png" alt="Smart Import Wizard"/>
</p>
</td>
</tr>
<tr>
<td colspan="2" class="section" id="JDT">JDT</td>
</tr>
<tr id="java-9">
<td class="title">Eclipse support for Java&trade; 9</td>
<td class="content">
<a href="http://docs.oracle.com/javase/9/">Java&trade; 9</a> is here, and JDT fully supports it:
<ul>
<li>The Eclipse compiler for Java (ECJ) implements all the new Java 9 <a href="http://docs.oracle.com/javase/9/docs/technotes/guides/language/enhancements.html">language enhancements</a></li>
<li>Updated significant features to support Java Modules, such as compiler, search and many editor features.</li>
</ul>
<p><b>Note:</b>
It is not mandatory to run Eclipse with Java Runtime 9 to get the Java 9 support. However,
a Java runtime 9 is required to be on a project's build path
to compile a modular project against the system modules.
</p>
<ul>
<li>
<p>When a Java Runtime 9 is added to a project's build path, the system modules
are listed under the System library in the package explorer:</p>
<p><img src="images/java9-package-explorer.png" alt=""/></p>
</li>
</ul>
<ul>
<li>
<p>An existing non-modular Java project can be quickly converted to a module by
creating a module-info.java for that project. This feature can be availed once the project has
been moved to compliance 9:</p>
<p><img src="images/java9-create-module.png" alt=""/></p>
</li>
</ul>
<ul>
<li>
<p>With Java 9 support, a library or a container can now be added to the
module path as opposed to the classpath:</p>
<p><img src="images/java9-module-path.png" alt=""/></p>
</li>
</ul>
<ul>
<li>
<p>Once an entry has been added to a project's module path, its contents and encapsulation
properties can further be modified by double-clicking on the <b>Is modular</b> node
(or using the <b>Edit</b> button while <b>Is modular</b> is selected):</p>
<ul>
<li>
On the <b>Contents</b> tab individual modules inside a container like <b>JRE System Library</b>
can be included or excluded by moving the module from left-to-right or vice versa.
Modules shown in the lower right box are implicitly included, because they are required
by one or more modules in the upper right box.
<p><img src="images/java9-module-container-contents.png" alt="Configuring the Contents of a module container"/></p>
</li>
<li>
On the <b>Details</b> tab the encapsulation of given modules can be further influenced.
The following example shows how module <code>module.one</code>
can be made to export one of its packages to the module of the current Java project:
<p><img src="images/java9-module-properties.png" alt=""/></p>
</li>
<li>Toggling <b>Defines one or more modules</b> (see above screenshot) lets you specify
whether a given regular (non-modular) jar file or project should be considered as an "automatic module".
As a consequence of changes here, the entry will move to the Modulepath or Classpath accordingly.</li>
</ul>
</li>
</ul>
<ul>
<li>
<p>Java search now includes a new search scope - Module:</p>
<p><img src="images/java9-module-search.png" alt=""/></p>
</li>
</ul>
<ul>
<li>
<p>When a Java Runtime 9 is added to a project's build path, the launch configurations are created with "Dependencies" tab and not the old "Classpath" tab.</p>
<p>User can change the JRE of launch configuration and on the confirmation, the tab changes from "Classpath" to "Dependencies" or vice versa. </p>
<p><img src="images/changing-tabs-launch-config.png" alt=""/></p>
<p>If Java project is modular and module is described in module_info.java, most of the dependencies will be defined in the Modular Entries.</p>
<p><img src="images/modular-dependencies.png" alt=""/></p>
<p>If Java project is not modular, most of the dependencies will be defined in the Classpath Entries.</p>
<p><img src="images/non-modular-dependencies.png" alt=""/></p>
</li>
</ul>
<ul>
<li>
<p>A new quick fix is offered on import statements to fix issues that are reported due to <b>missing module dependency</b></p>
<p>This QuickFix is applicable if the project is a Java9 project and has a <code>module-info.java</code>.</p>
<p>The quick fix can be invoked from the editor:</p>
<p><img src="images/java9-module-requires-on-import.png" alt=""/></p>
<p>Before the quickFix is applied the module-info file looks as below</p>
<p><img src="images/java9-before-adding-module-requires-on-import.png" alt=""/></p>
<p>After the quickfix is invoked, <code> module-info.java</code> will be updated to include <code>requires 'MODULE_NAME'</code></p>
<p><img src="images/java9-after-adding-module-requires-on-import.png" alt=""/></p>
</li>
</ul>
<ul>
<li>
<p>A new quick fix is available when you have an unresolved type in a Java file. If the unresolved type can be found in a java9 module, a quick fix will be available to add an import type entry to your file reporting the error and add the required module dependency to <code>module-info.java</code> file.</p>
<p>This QuickFix is applicable if the project is a Java9 project and has a <code>module-info.java</code> file.</p>
<p>The quick fix can be invoked from the editor:</p>
<p><img src="images/java9-module-requires-and-import-on-missing-type.png" alt=""/></p>
<p>Before the quickFix is applied, the module-info file looks as below</p>
<p><img src="images/java9-before-adding-module-requires-on-import.png" alt=""/></p>
<p>After the quickfix is invoked, <code> module-info.java</code> will be updated to include <code>requires 'MODULE_NAME'</code></p>
<p><img src="images/java9-after-adding-module-requires-on-import.png" alt=""/></p>
<p>After the quickFix is applied, the required <code>import</code> statement is added to the file reporting error</p>
<p><img src="images/java9-after-adding-import-module-requires-and-import-on-missing-type.png" alt=""/></p>
</li>
</ul>
<ul>
<li>
<p>A new quick fix is available when you have an unresolved type on <code>service provider</code> in a provides directive in module-info.java file. If the unresolved type can not be found in the current module, a quick fix will be available to create a new class or an interface in the current module.</p>
<p>This QuickFix is applicable if the project is a Java9 project and has a <code>module-info.java</code> file.</p>
<p>The quick fix can be invoked from the editor:</p>
<p><img src="images/java9-module-provides-create-class.png" alt=""/></p>
<p><img src="images/java9-module-provides-create-interface.png" alt=""/></p>
<p>When the service is a class, the quick fix is proposed for creating a class.</p>
<p>When the service is an interface or an annotation, two quick fixes are proposed for creating a class or an interface.</p>
</li>
</ul>
</td>
</tr>
<tr id="junit5-tags">
<td class="title">Configure tags to include and exclude in JUnit launch configuration</td>
<td class="content">
You can provide tags to be included in or excluded from a test run in the <b>Configure Tags</b> dialog of JUnit launch configuration:
<p><img src="images/junit-tags.png" alt=""/></p>
</td>
</tr>
<tr id="junit5-test-reporter-in-console">
<td class="title"><code>TestReporter</code> entries displayed in Console view</td>
<td class="content">
In JUnit Jupiter, a method parameter of type <code>TestReporter</code> can be used to publish additional data about the current test run which can be viewed in the <b>Console view</b>:
<p><img src="images/junit5-test-reporter.png" alt=""/></p>
<p><img src="images/junit5-test-reporter-console-view.png" alt=""/></p>
</td>
</tr>
<tr id="quickfix-nnbd-on-package">
<td class="title">Quick Fix to add <code>@NonNullByDefault</code> to packages</td>
<td class="content">
A new quick fix is offered to fix issues that are reported when the <b>Missing '@NonNullByDefault' annotation on package</b> warning is enabled.
<p>If the package already has a <code>package-info.java</code>, the quick fix can be invoked from the editor:</p>
<p><img src="images/add-nnbd-existing-packageinfo.png" alt=""/></p>
<p>Otherwise, the quickfix must be invoked from the problems view, and will create a <code>package-info.java</code> with the required annotation:</p>
<p><img src="images/add-nnbd-create-packageinfo.png" alt=""/></p>
<p>When invoked from the problems view, both variations of the quick fix can fix the problem for multiple packages simultaneously.</p>
</td>
</tr>
<tr id="escape-non-ascii-when-pasting">
<td class="title">Escape non-ASCII characters when pasting into a string literal</td>
<td class="content">
The <b>Java > Editor > Typing > Escape text when pasting into a string literal</b> preference option now has a suboption <b>Use Unicode escape syntax for non-ASCII characters</b>:
<p><img src="images/escape-non-ascii-settings.png" alt=""/></p>
When enabled, characters outside the visible ASCII range will be replaced by unicode escape sequences when pasted into a string:
<p><img src="images/escape-non-ascii-example.png" alt=""/></p>
</td>
</tr>
<tr id="advanced-source-lookup">
<td class="title">Advanced source lookup implementation</td>
<td class="content">
More precise "advanced" source lookup implementation, particularly useful when debugging applications that load classes dynamically at runtime.
New <code>org.eclipse.jdt.launching.workspaceProjectDescribers</code> extension point can be used to enable advanced source lookup for projects with non-default layout, like PDE Plug-In projects.
New <code>org.eclipse.jdt.launching.sourceContainerResolvers</code> can be used to download sources jar files from remote artifact repositories, like Maven Central or Eclipse P2.
<p>Advanced source lookup affects debug launches only and can be enabled or disabled with <b>Java > Debug > Enable advanced source lookup</b> preference option:</p>
<p><img src="images/advanced-source-lookup.png" alt=""/></p>
</td>
</tr>
<tr>
<td colspan="2" class="section" id="PDE">PDE</td>
</tr>
<tr id="option-to-control-pde-compiler">
<td class="title">New option to control PDE compiler warning</td>
<td class="content">
There is an option to control the PDE compiler issue "Bundles with a Service-Component should set the Bundle-ActivationPolicy to lazy."
By default, this is set to warning.
<img src="images/pde-compiler-warning-option.png" alt=""/>
</td>
</tr>
<tr id="env-argument-tag-generic-target-editor">
<td class="title">Support for environment argument tags in generic editor</td>
<td class="content">
For the target files, highlighting and auto-complete are supported for environment argument tags in Generic Text Editor and the Target Editor Source tab.
<img src="images/tp-enviro-support.png" alt=""/>
</td>
</tr>
<tr id="pde-smart-import">
<td class="title">PDE detects and configure folders as projects during import</td>
<td class="content">
When using the import wizard from <b>File > Open Projects from Filesystem...</b> or <b>File > Import... > General > Projects from Folder or Archive</b>, PDE detects
folders that can be turned into PDE projects (ie folders which contain a <code>META-INF/MANIFEST.MF</code> or a <code>feature.xml</code>) and configure them accordingly.
<p>Note that folders already configured as Eclipse projects (already containing a <code>.project</code> file) will be imported "as it" and won't be reconfigured by PDE.</p>
</td>
</tr>
<tr>
<td colspan="2" class="section" id="Platform-Dev">Platform Developers</td>
</tr>
<tr id="throttler-api">
<td class="title">Throttler</td>
<td class="content">
UI updates in tight loops can degrade a system's performance, and users are also not capable to read information that fast.
In such cases class <code>org.eclipse.jface.util.Throttler</code> can now be used to limit the rate updates on the UI thread
with a specified time while executing the task wrapped in a <code>Runnable</code>.
<p>
An example for a use case are updates to a progress monitor, like in EGit's Import Project wizard. This wizard scans a directory
and report any found file to the progress (actually a <code>org.eclipse.jface.wizard.ProgressMonitorPart</code>). This happens
so fast that it can't be read, but overall it degrades the wizard's performance.
</p>
Usage example:
<pre>
public class ProgressMonitorPart extends Composite implements
IProgressMonitorWithBlocking {
[...]
private Throttler throttledUpdate;
[...]
throttledUpdate = new Throttler(fLabel.getDisplay(), Duration.ofMillis(100), this::updateLabel);
[...]
protected void queueUpdateLabel() {
throttledUpdate.throttledExec();
}
</pre>
</td>
</tr>
<tr id="adapt-textselection-to-debug-variable">
<td class="title">Default debug hover contribution on Generic Editor</td>
<td class="content">
The Debug framework contributes to the Generic Editor when the hover represented by an <code>ITextSelection</code>
can be adapted to an <code>IVariable</code>. So in order to take advantage of debug details on Hover in the Generic
Editor, you can simply use the <code>org.eclipse.core.runtime.adpaters</code> extension point and define an <code>IAdapterFactory</code>
from <code>ITextSelection</code> to <code>IVariable</code> to enable this feature.
<p>If the current selection cannot be adapted (all adapter factories return null), the contribution to Generic Editor is ignored.</p>
<p>The JDT project already contributes such an adapter.</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 Photon milestone builds:</p>
<ul>
<li><a href="https://www.eclipse.org/eclipse/news/4.8/M2/">News for Eclipse Photon milestone build M2</a></li>
<li><a href="https://www.eclipse.org/eclipse/news/4.8/M1/">News for Eclipse Photon milestone build M1</a></li>
</ul>
<script type="text/javascript" src="../scripts.js"></script>
</body>
</html>