Eclipse Photon M3 (4.8) arrives with new features in tow

Gabriela Motroc
Eclipse Photon

© Shutterstock /  GiroScience

We’re still enjoying Eclipse Oxygen, don’t get us wrong, but we’re keeping an eye on Eclipse Photon, the next Simultaneous Release. M3 is here and it brings some new features. Let’s have a look!

First things first — Eclipse Photon will be released next summer (it’s always on the fourth Wednesday of June) but we’re keeping an eye on all the milestone dates.

The following calendar is the official schedule of the overall Photon Release.

Eclipse Photon M3

Lars Vogel, the founder and CEO of the vogella GmbH company told us three months ago that Eclipse Photon’s focus “will have to remain on improving the usability and the performance of the Eclipse platform.” Is this really the case? Let’s see.


The waiting cursor on macOS used to be a static black/white circle — that’s about to change as Eclipse Photon is adding a splash of color to it. From Eclipse Photon the macOS system’s busy cursor is changed to a spinning blue ball (also called beach ball), according to the official announcement.

Furthermore, the lower left corner of the Preference Dialog has received easily accessible buttons for opening the Import/Export Preference Wizards. You can access the wizards through the File > Import and File > Export dialogs.

The DirectoryDialog has been re-implemented to use modern native widget introduced in Windows Vista and, on the Workspace preference page, there’s 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.

What’s more, you can use the Open Resource dialog to see how the search term matches the found resources by highlighting the names based on camel-case and pattern ( * and ? ) searches. The main toolbar can show Undo and Redo buttons (not available by default; can be added via Window > Perspective > Customize Perspective) and on the Keys preference page, the Export CSV action exports additionally the command id for key bindings.

SEE ALSO: “Eclipse Photon likely to focus on usability and performance”

JDT fully supports Java 9

JDT fully supports Java™ 9:

  • The Eclipse compiler for Java (ECJ) implements all the new Java 9 language enhancements
  • Updated significant features to support Java Modules, such as compiler, search and many editor features.

Keep in mind that you don’t have 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.

  • 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.
  • An existing non-modular Java project can be quickly converted to a module by creating a for that project. This feature can be availed once the project has been moved to compliance 9.
  • With Java 9 support, a library or a container can now be added to the module path as opposed to the classpath.
  • 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 Is modular node (or using the Edit button while Is modular is selected).
  • Java search now includes a new search scope – Module.
  • 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.
  • A new quick fix is offered on import statements to fix issues that are reported due to missing module dependency.
  • 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 file.
  • A new quick fix is available when you have an unresolved type on service provider in a provides directive in 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.

There’s also possible to provide tags to be included in or excluded from a test run in the Configure Tags dialog of JUnit launch configuration. Furthermore, in JUnit Jupiter, a method parameter of type TestReporter can be used to publish additional data about the current test run which can be viewed in the Console view.

A new quick fix is offered to fix issues that are reported when the Missing ‘@NonNullByDefault’ annotation on package warning is enabled and the Java > Editor > Typing > Escape text when pasting into a string literal preference option now has a suboption Use Unicode escape syntax for non-ASCII characters. 

There’s a more precise “advanced” source lookup implementation which is especially useful when debugging applications that load classes dynamically at runtime. New org.eclipse.jdt.launching.workspaceProjectDescribers extension point can be used to enable advanced source lookup for projects with non-default layout, like PDE Plug-In projects. New org.eclipse.jdt.launching.sourceContainerResolvers can be used to download sources jar files from remote artifact repositories, like Maven Central or Eclipse P2.


There is an option to control the PDE compiler issue “Bundles with a Service-Component should set the Bundle-ActivationPolicy to lazy” and it’s set to warning (by default). For the target files, highlighting and auto-complete is supported for environment argument tags in generic text editor.

Last but not least, PDE includes the project detection mechanisms (extensions to org.eclipse.ui.ide.projectConfigurators) to detect projects during import via General > File System. 

Platform Developers

UI updates in tight loops can degrade a system’s performance, and users cannot read information that fast. In such cases, class org.eclipse.jface.util.Throttler can now be used to limit the rate updates on the UI thread with a specified time while executing the task wrapped in a Runnable.

Debug framework contributes to the Generic Editor when the hover represented by an ITextSelection can be adapted to an IVariable. If you want to take advantage of debug details on Hover in the Generic Editor, you can use the org.eclipse.core.runtime.adpaters extension point and define an IAdapterFactoryfrom ITextSelection to IVariable to enable this feature. If the current selection cannot be adapted (all adapter factories return null), the the contribution to Generic Editor is ignored. JDT project already contributes such an adapter.

These features are just the ones that are new since the previous milestone build (M2). 


Gabriela Motroc
Gabriela Motroc was editor of and JAX Magazine. Before working at Software & Support Media Group, she studied International Communication Management at the Hague University of Applied Sciences.

Inline Feedbacks
View all comments