Eclipse Neon New and Noteworthy
Platform
General
Import Projects
A new Import Projects wizard is available via the File > Open Projects…
menu and via the general Import…
command under General > Projects
from Folder
or Archive.
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.

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.
The import strategies are contributed via the new extension point org.eclipse.ui.ide.projectConfigurator, so that other IDE components can contribute detection and configuration specific to the technology they’re supporting.
Search in binary files
The Search > File... dialog has a new option to search in binary files as well.

By default, the option is disabled, and matches are only reported in files that have the Text content type, or in files that have no content type and don’t contain the null character (\u0000).
Automatic Save of dirty editors
Auto-save of dirty editors is now available in Eclipse. The autosave option is disabled by default. A new autosave preference page (Preferences > General > Editors > Autosave) 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, …).

Look and Feel
Resolution-based image auto-scaling
Images now automatically scale 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, available images are automatically scaled proportionately to the resolution of the monitor.

Preference setting to disable CSS based theming
You can disable the CSS-based styling of the Eclipse IDE via Preferences > General > Appearance > Enable theming. This will prevent the Eclipse Workbench from rendering custom colors, shades, and borders, and may result in better performance.

Full Screen
The Full Screen feature is now also available on Windows and Linux. You can toggle the mode via shortcut (Alt+F11) or menu (Window > Appearance > Toggle Full Screen).
When Full Screen is activated, you’ll see a dialog which tells you how to turn it off again.
Hide the window toolbars
You can use the Toggle Visibility of all Toolbars command (via Quick Access: Ctrl+3 or Command+3) to hide all currently visible toolbars of the currently window. Selecting the command again, reveals these toolbars again. This allows the developer to maximize the space available for editors and views. If you minimize a stack after you selected this command, the minimized stack will be visible until you trigger the command to hide the toolbars again. This allows you to decide which minimized stacks are currently useful for you.
The following is a screenshot of the IDE with a maximized Java editor and several toolbars visible.

The next screenshot shows the same maximized editor but with hidden toolbars.

Word wrap in text editors
A Toggle Word Wrap button has been added to the workbench toolbar. Shortcut: Alt+Shift+Y.

By default, text editors are opened with word wrap disabled.
Commands and shortcuts to zoom in text editors
In text editors, you can now use Zoom In (Ctrl++ or Ctrl+=) and Zoom Out (Ctrl+-) commands to increase and decrease the font size.
Like a change in the General > Appearance > Colors and Fonts preference page, the commands persistently change the font size in all editors of the same type. If the editor type’s font is configured to use a default font, then that default font will be zoomed.
Pinch to zoom in text editors
To temporarily zoom the editor font in text editors, use a "pinch" gesture on a touchpad. Put two fingers on the touchpad and move them apart or together.
To reset the original font size, rotate two fingers by at least 45°, or close and reopen the editor (Navigate > Back).
Those gestures only affect the current editor. Changes are neither propagated to other editors nor persisted.
SWT currently only supports these gestures on OS X and on Windows systems that use the native multi-touch support. Touchpads that emulate mouse move/scroll events don’t support gestures. Gesture support on GTK is not implemented yet. |
Directly start previously selected workspaces in the launcher
The workspace selection dialog now allows you to start a previously selected workspace directly via a link. The path to the workspace is shortened. The full path is available if you hover over the link.

You can remove existing entries via the context menu.
Selecting the text editor for unassociated file types
On the Preferences > General > Editors > File Association page, you can now define an editor selection strategy for unassociated file types. Three strategies are provided out-of-the-box:
-
Search Marketplace (default) will use the Eclipse Marketplace Client to search the Eclipse Marketplace for plug-ins that support the file type;
-
System Editor; if none: Text Editor will open the system editor associated with the file, if available. If no system editor is associated with the given file, fall back to the Eclipse Text Editor;
-
Text Editor will always open Eclipse’s Text Editor on unassociated file types; and
-
Ask via pop-up will open the same dialog as using Open With > Other... on a file and let you choose which editor to use (inside or outside the IDE).
It’s possible to assign an editor for an unassociated file type either via this same preference page, or via the Open With > Other... context-menu on the file. |
The implementation comes with a new extension-point org.eclipse.ui.ide.unknownEditorStrategy that allows external contributions of additional strategies.
Quick Access improvements
Quick Access (Ctrl+3) is a small text field in the toolbar. You can use it to trigger any command in the Eclipse Workbench.

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 "Views: " in the search-box.
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.
New Welcome Screen
The Welcome/Intro introduces a new Solstice theme that provides a new modern appearance and enhanced functionality.

In Eclipse 3.x, the Go to Workbench button on the Welcome page would minimize the Welcome page to the window status bar. This behavior has been restored.

Other Changes and Improvements
More
The look of the toolbar in the MacOS default theme was adjusted to align with other MacOS applications.
To save space in the toolbar, the perspective switcher has been changed to show only the icons of perspectives by default. You can show the text again via the context menu.
The 'date' variable, supported in editor and code templates, now allows you to specify which format to use when inserting the current date (or time).
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.
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.
When you export your preference settings via File > Export… > Preferences
,
the preferences are now sorted alphabetically in the resulting file.
Eclipse has been updated to include improved support for the Wayland display manager.
Java™
Eclipse Neon includes numerous bug fixes and improvements in the Java 8 support, along with a lot of other useful features.
Java 9
Launching on Java 9
Launching Eclipse with recent Java 9 previews fails with NoClassDefFoundErrors
for
javax/annotation/PostConstruct
and similar types.
The workaround is to add the VM arguments
-addmods java.se.ee
either on the command line after -vmargs
, or at the end of the eclipse.ini file on
two separate lines.
Java Editor
ifNotNull/ifNull templates
The Java editor now offers default templates for creating "== null" and "!= null" checks.

New Info severity level
You can now specify Info as a severity level for the problems detected by the Eclipse Java compiler.

A new decorator has been added to indicate information severity problems detected by the Eclipse Java Compiler.

You can now configure the severity of a compiler problem by invoking the new Quick Fix
(Ctrl+1
) which opens the Java > Compiler > Errors/Warnings
preference page and
highlights the configurable problem.

Substring code completion
Content Assist now supports substring patterns. Enter any part of the desired proposal’s
text, and Content Assist will find it! For example, completing on selection
proposes
all results containing selection
as a substring.

This feature can be disabled using the Show substring matches
option on the
Java > Editor > Content Assist
preference page.
Clean Up to remove redundant type arguments
A new option to remove redundant type arguments has been added under the Unnecessary Code group of the Clean Up profile.

New options in code formatter
In the new Parentheses tab, you can order the formatter to keep parentheses of various Java elements on separate lines, 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 preserve existing positions, if you want to manually manage parentheses positions on a case-by-case basis.

In the Line Wrapping tab, you can set the wrapping policy for parameterized
types, you can decide to wrap before or after operators in assignments and
conditional expressions, and you can control the wrapping policy of
'for' loop headers
.

The Align fields in columns feature in the Indentation section can now be configured to recognize groups separated by empty lines and align them independently.

In the New lines section, you can control if new lines should be added
after annotations on enum
constants.

Create new fields from method parameters
You can now assign all parameters of a method or constructor to new fields
at once using the new Quick Assist (Ctrl+1
):

Java Views, Wizards, and Other UI
Project Explorer Improvements
The Project Explorer view now groups referenced libraries in a new container node.

You can now hide empty library containers in the Project Explorer view by selecting the new filter in its Customize View… dialog.

Add meta-annotations while creating a new Java annotation type
You can now choose to add @Retention
, @Target
and @Documented
meta-annotations
along with their applicable values while creating a new Java annotation type.

Search on multi-selections
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):

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 Open Call Hierarchy, though.
JUnit Support
Assertions are now enabled by default for new JUnit launch configurations. You can
disable this on the Preferences > Java > JUnit
page.
Debug
Installing breakpoints from unrelated projects
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.
To always install all enabled breakpoints, you can disable the new option
Preferences > Java > Debug > Do not install breakpoints from unrelated projects
.
Null Analysis
Multiple sets of null annotations
You can now configure annotation-based null analysis to use multiple sets of annotation types. This is relevant if your project uses 3rd party libraries that already use null annotations in their API, where the annotations used in a library may be different from those used in the current project.
Please open the dialog for configuring null annotation types from the project
properties at Java Compiler > Errors/Warnings > Null analysis
:

In the dialog that opens, only one primary set of annotations is supported; these are the annotations which JDT actively uses in Quick Fixes, error messages etc. These annotations must be present on the project’s build path.
You can now add an arbitrary number of secondary null
annotation types, to
be evaluated when reading class files external to the project. Within the
configuration dialog, Content Assist is offered based on accessible annotation
types, but for secondary annotation types unresolved names will be tolerated.
This avoids the need to bloat the build path with transitive compile-time
dependencies.

Improved null
analysis with generics
The interplay of null
annotations and generics has been improved in several
regards.
The basic concepts had already been documented in the online help, but not
all that was documented was actually checked by null
analysis. With
the changes outlined below, null analysis based on type annotations is even
more capable than previous versions.
(1) The first batch of contributed improvements implements what we call pessimistic analysis for free type variables, which affects implementors of generic types.

In order to allow clients to instantiate such a generic class with either
a @NonNull
or a @Nullable
type as substitution for the "free type variable"
<T>
, the implementation of that class must account for the worst in both
directions:
-
To anticipate a
@NonNull
type, each field typed to a free type variable must be initialized with a non-null
value, and passingnull
whereT
is expected is illegal; and -
To anticipate a
@Nullable
type, each dereference must be preceded by anull
check.
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.

(2) The second improvement concerns consumption of generic types from a library, more specifically: invocations of library methods whose return type is given by a free type variable.
If the library type is instantiated with a @NonNull
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 null
without declaring so. The most prominent example is java.util.Map.get(K)
.
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.

In the above example, both fields list and map provide @NonNull
String
as a type
argument, hence the return types of both get methods are interpreted as non-null
.
For List
this is desired, for Map
it is a bug.
The dilemma can be resolved by adding a (possibly empty) external annotation file
(.eea
) 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
List
case - use with care). In the other case, the missing @Nullable
annotation
should be added as an external annotation (like in the Map
case).
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 Unsafe '@NonNull'
interpretation of free type variable from library.
(3) Finally, a small utility class, org.eclipse.jdt.annotation.Checks
, has been
included in the bundle org.eclipse.jdt.annotation_2.1.0
containing helper methods
for typical idioms for improving and documenting null
safety.
Quick Fix to add @NonNull
to local variable
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
Quick Fix is offered (Ctrl+1
), that adds a @NonNull
annotation to the local
variable.

While this may not produce correct code, it tells the compiler your intention to
not allow null
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.
C/C++
Eclipse Neon includes many improvements in stability and some new functionality for C/C++ developers.
General
Import Projects
When code completion is invoked in a function call expression, appropriate substitutions are suggested for each of the function parameters.

Create New Class - Quick Fix
In C files if "Type not found" error is detected, there is a new *Quick Fix* now to create a class based on that type, which opens the *New C Class Wizard*. Note: to enable quick user must enable "Type cannot be resolved" problem in "Code Analysis" settings

Format Edited Lines Save Action
It is now possible to format either the whole file or only the edited lines when a source or a header file is saved.

Suppressions in code
It is now possible to suppress code analysis errors/warnings by adding comments in the code.
x = x; // @suppress("assignment in condition") because I know better
The comment is actually configurable using problem parameters (@suppress(<title>) is default).
Debug
Gdbserver options
For automatic remote debugging sessions, CDT now supports specifying extra options
that will be passed to gdbserver when starting it. This way, users could activate
debug messages (--debug
), benefit of wrapper option (--wrapper
) that gdbserver
supports or use the other available command-line options of gdbserver.
OS Resources View Improvements
The OS Resources view displays different information about the resources of the operating system, such as list of all processes running on the target or files opened by processes on target.
Now it is possible to attach to processes associated with selected resources directly from OS Resources view without resorting to "Connect to a process" button from Debug View.
This feature requires non-stop mode support to be activated.
OS Resources View lists a lot of text information. Now it is possible to copy selected lines to the clipboard to save for later comparison.
Debug UX
In an effort to reduce clutter, the Connect button was removed from the Debug toolbar. The action is still available from the Debug view context-menu as shown below. Furthermore, connecting to a process can now be done using the OS Resources view as described in this section.

To streamline the UI, the "New…" button of the Connect dialogue which was used to create a new process has been removed. This action is available instead from the Debug view context-menu as shown below.

Other Change and Improvements
The Makefile Editor now provides a single key Ctrl+/
to toggle comments rather than
have Ctrl+/
to comment and Ctrl+\
to uncomment. This is consistent with CDT and Java editors.
Docker Tools
General
Dockerfile Editor
The 'Dockerfile Editor' provides users with content
assist on the commands (ADD
, COPY
, RUN
, etc.) as well as a customizable
syntax highlighting.

Executing shell in a container
Users can be given access to a shell environment within the container even if the container has a service running in the foreground. This is particularly useful for examining the container, and for debugging purposes.

Running privileged containers
Containers can be run with the --privileged
flag, which gives them
extended privileges, such as accessing all devices, and allowing them
nearly all the same access to the host as regular processes running on
the host (i.e., not in containers).

Supporting disconnections
Sometimes the Docker instances that were configured in Eclipse are not running anymore (the Docker Machine is stopped, for example). In that case, the Docker Explorer view will display a different decorator for those connections, and an "Enable connection" button in the toolbar will let the user reconnect.

Editing connection settings
A new wizard lets the user edit the connection name, and settings. This is particularly useful when the connection belongs to a Docker Machine whose IP address changed upon restart.

Pushing/Pulling/Searching for Authenticated Registries
Support now exists for performing actions upon Docker registries using authentication credentials. Users can simply set their credentials in the workspace preference page (Docker/Registry Accounts).

These credentials may be accessed through the Registry/Account combo box in the Push/Pull Wizards. The location of a registry can also be entered manually if it doesn’t require any credentials.

PHP
The Eclipse Neon release includes significant improvements in stability (including fixes for more than 100 bugs) and a lot of new functionality for PHP developers.
PHP Language
Eclipse Neon provides better error messages for unsupported PHP versions (especially for legacy versions).
PHP 7
PHP 7 is the default version for new workspaces.

Final support for PHP 7 scalar type declarations.

The syntax highlighter now fully supports PHP 7 context sensitive keywords.

Editors
Code Assist
The PHP validator identifies non abstract methods without body.

Inappropriate use of multiple access modifiers (eg. public
private
functions)

The validator no longer analyzes PHP comments (except in PHPDoc comments).

Improved Code Assist for @param
, @return
, and @throws
tags
inside PHPDoc
The PHP indexer is significantly faster than in previous versions. The UI remains responsive when indexing is in progress.
Better task tags (e.g. @todo
) detection

Methods and functions are visible as void
only if they do not have
return
and yield
statements. The otherwise have the declared
return type or mixed
.

Simple types (int
, bool
, string
, …) are included in the
suggestions for for PHP >= 7 function return types.

More Code Assist
-
Improved Code Assist for unfinished class and method bodies;
-
Improved support around
@inheritdoc
(coloring and code assist).
Highlighting
More semantic highlighters are enabled by default, including class, deprecation, and constants.

Improved highlighting for array
type.

Added support for instanceof
and insteadof
in class semantic
highlighter.

Assign to local quick assist (ctrl/cmd + 2 + L
)

Function / method return types are available in Content Assist proposals

Content Assist now supports colored labels

PHP Editor Commands
Buttons have been added to the editor toolbar to enable/disable Word wrap, Block selection, and Show white space characters.

More PHP Editor Improvemvents
-
Improved code assist performance for files with many assignments;
-
General performance improvements for PHPDoc generation
-
Smart parenthesis works correctly inside closures
-
abstract
keyword is no longer proposed inside method body -
Deprecated highlighting is shown even if class in same namespace
-
Content assist and hover tooltips shows function / method return types
-
Improved deprecation highlighter support for inherited members
IDE Integration
Integration with the Project Explorer view has been improved, including dedicated support for PHP Project elements and specific actions, and support for traits when the "group by namespace" option is selected.
PHP Language Libraries have PHP Version badge

"Add PHP support…" no longer visible in PHP-enabled projects (i.e. when it is unnecessary).
PHP Quick Fixes are available in Problems View.

PHP Debugging
Eclipse Neon includes numerous bug fixes and improvements in the PHP Debugging.
Exception Breakpoints
Support for PHP exception breakpoints

More Debugging
-
OSX support improvements
-
Improvements in debugger variables support
-
No longer display outdated values
-
Fix ignored breakpoints
-
Added support for class statics inside namespace
-
Remove PDT "Parameter Stack" view (the Variables view renders this outdated Parameter Stack view as redundant and useless).\
-
Breakpoints work with linked resources
-
Xdebug debugging via SSH tunnel
JavaScript and JSON
JavaScript Development
New EcmaScript 2015 Parser
Significant new work has been invested in the JavaScript development tools, starting with a new parser with EcmaScript 2015 (ES6) support. With this, the Eclipse IDE recognizes and support ES6 language constructs and provides better validation accuracy compared to the earlier parser.
Libraries and Tools
Both Bower and npm are supported with creation wizards and launch shortcuts for executing update and install commands. Grunt and gulp build systems are accessible from within the Project Explorer view and can be executed via launch shortcuts.
Node.js
runtimes are now directly supported (Eclipse Preferences > JavaScript > Runtimes
)
including a new launch configuration type can be used to run and debug
Node.js
applications. Node.js
applications can be debugged directly
from the editor via the Chromium V8 debugger, with full support for breakpoints
and inspecting JavaScript variable values in the Variables view (and when
you hover over an in-scope variable).

JSON Development
JSON Editor
The new JSON
editor provides support to edit some well-known JSON
file
types including package.json, bower.json, .bowerrc, and .jshintrc. This support
includes the following features:
-
Syntax Coloring which can be customized with preferences;
-
An Outline Tree view;
-
Text hover on JSON Objects/Array keys and values;
-
Text folding on JSON Objects and Arrays; and
-
Editor extensions for custom hyperlinks, json schema validation, and hover help

Modeling
Code Generation
Builds
Acceleo introduced a new mechanism to launch code generators as part of a Maven build which is way easier and more robust by integrating with Tycho.

You will find several examples in this repository ranging from launchging an UML to C
code generation to exporting a Modeling project as a website.
Model Editors
Amalgam
The Amalgam project brings a new view to navigate and explore models. Ecore models are supported right away and the view can be extended to support your domain specific models.

EcoreTools
When using the Ecore graphical modeler references might now be displayed directly within the class shapes if it’s target is not in the diagram.

Inherited references will also be displayed if the super types are not in the diagram.

EMF Parsley
EMF Parsley is a lightweight framework that allows easy and quick UI development based upon EMF. EMF Parsley is built on top of the EMF Edit framework and it implements features like Trees, Forms and Table builders with standard JFace databinding, providing a complete component-based toolset. EMF Parsley can be configured to use all kinds of EMF persistence implementations (XMI, Teneo, CDO).
Moreover a DSL allows to easily customize several behaviors in each component.

Model Comparison
Visual Comparison and Merge
The Neon release brings experimental support for comparing diagrams of Sirius based modelers.

With a right-click on a model element or resource in the viewer, a new context menu now offers you to merge all non-conflicting differences that are contained in the selected model element or resource with one click.
With local models (both writable):

With a read-only side (for example when comparing against a previous version in Git):

Each button now has a specific tooltip for each case depending on the selected element. It will display the best information depending on the context: which object will be affected by the merge action, and which side will be modified (or not) by the action.

Custom Graphical Editors
Rich Property Views
With the new version of Sirius you can now define rich property views alongside the diagram definition without having to write a line of code.
This capability is introduced as an experimental feature for Eclipse Neon and will be extended in the next months based on the user community feedback.

Image Rendering
Packs of SVG shapes can now be contributed through a plug-in to be reused in other modelers:


SVG rendering has been improved and is now pixel-perfect whatever the zoom level.
Before:

With Sirius 4.0:

It is now possible to define dash edge styles for both the nodes and the containers (like it was already possible for edges).

And the border node position relative to its parent can now be constrained on a specific side (NORTH, EAST, WEST or SOUTH).

More
The Link with editor support has been improved and is now bidirectional.

You now have the possibility to configure which elements to automatically select after a tool execution, using this it is possible to streamline the user experience by making sure that it is always possible to directly type right after the application of the tool.

The labels which are attached to an edge are now staying closer to it during a user modification.

A new mechanism is introduced to externalize the messages in a .odesign
model.

Lifecycle Tools
Gerrit Connector
Build Status on Patch Sets
The status of builds triggered by a patch set is shown on that patch set instead of appearing as comments. If the Hudson/Jenkins connector is installed, users can open the test results in the JUnit view directly from the patch set. This may not work if the Gerrit trigger plugin is configured with custom messages.

Task to Review Traceability
The task editor contains a section showing the reviews associated with the task, and indicates which reviews have unread incoming changes.

Comment Threads
Inline comments are shown in threads, directly in the patch sets section in the review editor. This makes it easy to see the conversation taking place at a given line of code. Unread incoming comments are highlighed in blue.

Inline Comments
Inline comments can now be edited and replied to inline, without opening a separate dialog.

Sources
Content for this document were harvested from multiple sources, including: