| <!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™ 9</td> |
| <td class="content"> |
| <a href="http://docs.oracle.com/javase/9/">Java™ 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> |