Eclipse Neon Top Ten
On June 22/2016, the Eclipse community released Eclipse Neon, the eleventh named release of Eclipse software. Combining the efforts of almost 800 software developers organized into more than one hundred individual development teams, the release is a massive undertaking that involved months of collaboration, communication, and hard work.
To insiders, the Eclipse Neon release is actually the thirteenth simultaneous release. Eclipse development teams are organized into open source projects that each focus on different functional areas. Individual teams set their own goals and priorities, but work directly with other teams to manage interdependencies between projects to ensure that the end result is a single coherent offering. The primary means of coordination between teams is the production of regular milestone builds during the release cycle: a total of seven milestones and four release candidates are built from the combined efforts of all the teams before the final bits are assembled and shipped.
As usual, this release brings many new features and enhancements, but Neon is the first release that can benefit from the Automated Error Reporting Initiative added to the last year release, a.k.a. Eclipse Mars. The numbers as compiled by Marcel Bruch (the project lead of the error reporting system) are quite impressive, and demonstrate that the community took great care in fixing users issues.
For the Eclipse Mars (2015) release, 350,000 users sent 3,000,000 error reports. Don’t rush on Twitter to say that last year Eclipse release contained 3 millions issues :) These reports has been grouped (via automated and manual analysis) into 25,000 issues. What is impressive is the amount of issues have been fixed: around 30% of them were fixed before the second service release (Mars.2) released in March 2016. It'll be interested to see how many issues have been fixed since then for the Neon release!
Here are some of my top ten favourite things in the Eclipse Neon release.
1. Word Wrap
If you follow the trail of duplicate issues reported, support for soft word wrap in Eclipse Platform editors has been on our
wishlist since 2002. The issue was closed in December 2015, just in time for inclusion in the fourth milestone build of Eclipse Neon.
It’s turned off by default, but you can easily enable it via a toolbar item, or via the
Alt+Shift+Y keyboard binding.
2. Editor Font Size Zoom
As a regular presenter at conferences with a love of doing live demos, making it possible for everybody in the presentation
room to actually see my Eclipse Workbench has been a challenge. In earlier versions, it is possible to modify the fonts via the preferences,
but with the Eclipse Neon release, you can now use Zoom In
(Ctrl++ or Ctrl+=) and Zoom Out
(Ctrl+-) commands to dynamically increase and
decrease the font size in text editors. This doesn't apply to views, so presentations to a large group may still require some preferences tweaking.
Like a change in the
General → Appearance → Colors and Fonts preference page, the zoom commands persist the change for 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. To temporarily zoom the editor font in the current
editor only (changes are neither propagated to other editors nor persisted), use a "pinch" gesture on a touchpad (OSX and Windows only).
3. UI/UX Improvements
A number of other helpful user interface improvements that will both make day-to-day development easier, but are also helpful when you need to do
a live demo. You can, for example, toggle the Eclipse Workbench into and out of fullscreen mode via the
Alt+F11 key binding. To give yourself even more
available screen space, you can turn off the main toolbar, all window toolbars and the status bar.
There’s a handy menu entry to turn off the main tool bar under
Window → Appearance; to toggle the state of the window toolbars, you’ll need to use
the Ctrl+3 Quick Access feature. Type
Ctrl+3 and “toolbar” to access commands, views, etc. related to toolbars.
The Neon release features HiDPI support on Windows and Linux, so the toolbar icons will be usable on your monstrously large monitor.
Finally, if you don’t care about things like the dark theme in particular or CSS theming of your workbench in general, you can turn off theming in the preferences. This should result in some performance improvements, most notably on startup.
4. Smart Import
The new Smart Import wizard will help you get up and running quickly by configuring one or more Eclipse projects based on the contents of a directory.
The wizard automatically detects different programming languages used and installs the necessary natures and builders into the newly-minted Eclipse projects.
Open the new wizard via the
File → Open Projects... menu.
Click on the installed project configurators to get a list of the configurations supported. The wizard is extensible, so support for other types of content will grow over time.
5. File Editors
One of my pet peeves with the Eclipse Workbench is the default behaviour when I click on a file type that’s not directly supported: it opens a system editor outside of the IDE. You can now decide for yourself how your IDE will behave.
There are currently four options:
- 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).
The default behaviour is to search the Eclipse Marketplace for a solution to install.
The Eclipse Marketplace contains a wealth of plug-ins, extensions, and solutions that greatly enhance the Eclipse IDE experience.
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
debug Node.js applications. Node.js applications can be debugged directly from the editor via the Chromium V8 debugger, with full support for breakpoints
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
7. Java Language
A lot of work has gone into improving and stabilizing the support for Java 8 language features, including more than 35 separate fixes for lambda expression support (including numerous compiler and type inference fixes along with user interface improvements).
Some new options have been added to the code formatter: 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, and you can control if new
lines should be added after annotations on enum constants.
Null analysis with generics has been improved, and includes more configuration options. A new Info problem type and decorator for “information”
severity problems detected by the Eclipse Compiler for Java has been added along with a new Quick Fix to configure how the compiler reports problem severity.
Java content assist provides substring completion. It even helps you identify which part matched what you typed by highlighting matched characters.
Though not strictly part of the Eclipse Neon release, a technology preview of Java 9 support is available via the Eclipse Marketplace. In order to run this functionality, you must download and install a Java 9 Java Development Kit (JDK) and launch your Eclipse IDE. The Eclipse IDE itself requires a Java Runtime Environment (JRE) to run. With the new modular delivery of the base Java libraries, command-line switches are required to make required to ensure that required functionality is available to the Eclipse runtime. There is more information in the New and Noteworthy documentation. Once you have your Eclipse IDE running, you can add the Java 9 support by dragging the “Install” button from the Eclipse Marketplace onto your running Eclipse instance.
The technology preview supports the new image and module layouts, editing module info files, and more. Note that this is an implementation of an early-draft specification developed under the Java Community Process (JCP) and is made available for testing and evaluation purposes only. The code is not compatible with any specification of the JCP.
The Eclipse Foundation's website theme has been extended into the Eclipse IDE in the form of a revamped Welcome page.
The Welcome page has become more useful as well, with valuable functionality that has previously been buried brought to the top.
The IDE configuration settings, for example, has been a part of the Eclipse IDE since the Mars release, but was difficult to find. By placing this front-and-center on the Welcome screen, you can now readily leverage it to configure some of the most common options like whether or not to show line numbers in editors, whether or not to run the spell checker, preferred character encoding, and more.
If you’re new to the Eclipse IDE and want to learn more about building Java applications, run the “Hello World” tutorial. Again, the tutorial itself isn’t new, but it sure is easier to find.
9. User Storage Service
The new Eclipse User Storage Service (USS) provides a means for you to store metadata regarding the configuration of your Eclipse workspace(s) on an Eclipse Foundation server. The intent is to make it easier to create a common configuration for your environment that you can share across workspaces on one or more workstations.
The storage service is implemented as a generic service that can be leveraged by plug-ins. With the Neon release, the preferences recorder that was introduced with last year’s Mars release has been extended to use the storage service to record common workspace preferences. The Eclipse Marketplace also leverages the storage service to record your favourites, making it easy to add your favourite plug-ins to all of your Eclipse IDE installations.
Note that the USS is intended to be used for data that may be exposed publicly. Take care when using the USS to avoid saving preferences that may contain personally identifiable information.
Read more about USS here.
As a long time Fedora user, I couldn’t be more excited about the improvements made to the GTK3 support in the Eclipse Neon release. There is certainly more work to do, but the latest versions of Eclipse IDE all run very well on the platform.
Note that if you’re using Ubuntu 16.04, you may have to fallback to GTK 2, as there are still outstanding issues with this distribution. It seems that some specific changes Ubuntu made in GTK3 for the 16.04 release it breaking normal consumer of GTK3. If you face the issue, I highly recommend you ask to Ubuntu to revert to standard GTK3. Join the forum discussion here.
11. PHP 7 Support
Neon brings complete support for PHP 7 in the PHP Development Tools. You can now enjoy typing the return type of your function! Read more about it in this Eclipse Newsletter article "What's New in Eclipse PHP Development Tools".
12. Gerrit Integration
EGerrit, a new project joining the simultaneous release this year, provides an awesome Gerrit integration into the Eclipse IDE. It minimizes the context switch from the IDE to the web and leverages IDE specific features such as syntax coloring, navigation, etc. Eclipse Gerrit integration allows to perform most operations on reviews such as voting, submitting, abandoning, etc. Finally, it also gives the user the ability to directly comment in the file when reviewing the changes.
You can activate the auto saving for all opened editors and say goodbye to the
cmd+s on macOS) habit!
Note that this feature has been implemented thanks to the Friends of Eclipse Enhancement Program (FEEP). Read the Mikaël Barbero's blog
post about this program to know more about what has been done and what is the current plan for next release. Also,
don’t forget to continue to donate to the program to see more features and bug fixes coming (or to get a limited edition Neon t-shirt).
14. Packaged Distributions Updates
At last, features included in Eclipse Packaged distributions can now be updated (or removed) individually. In the past, when you were using an Eclipse Packages (e.g. Eclipse IDE for Java EE Developers, Eclipse IDE for C/C++ Developers, Eclipse for PHP Developers…), it was not possible to remove or update any of it's feature independently. You had to wait for a new version of the full Package. Now, if you download the Eclipse IDE for Java EE Developers, but don’t want Eclipse Mylyn, you can remove it. Or, if you're annoyed with a bug in the Eclipse Git integration, you can now update it to a snapshot build that fixes your bug or to a newer release that is not yet integrated in a new version of your Package.
15. And Even More...
We tend to focus on IDE (and especially Java development tools) improvements when we talk assemble a top ten list. But there are a lot of other projects that participate in the release that contribute great functionality that often plays more of a supporting role. The Eclipse community has a rich modeling tradition, for example, and with the Eclipse Neon release, we’ve stepped up our game to make modeling even more appealing. In addition to a great many fixes that improve the stability and performance of the modeling tools, and visual improvements (e.g. high quality rendering of SVG images) in generated editors and views, there is some very cool experimental new tools for visualizing models.
The Eclipse Neon release brings experimental support for comparing model diagrams visually.
You can easily merge all non-conflicting differences that are contained in a selected model element or resource with one click. This works in both directions when comparing local models, or one-way when comparing against a static source (e.g. when comparing against a previous version in Git).
Also experimental with this release, you can now define rich property views alongside the diagram definition without having to write a line of code. This capability will be extended in the next months based on the user community feedback.
The Eclipse Foundation maintains a database that indexes every Git commit in our repositories. According to this index, more than 2,300 distinct individuals have contributed at least one commit to at least one of the open source projects that are part of the Eclipse Neon release since the beginning of time (the first commit is dated May 2001). This does not include any contributors to our SVN support (the Eclipse Foundation has mercifully granted an exception to let the Subversive project team use SVN for their work), nor does, the number include all authors from the time that our project teams used CVS (these commits were migrated to Git, but since CVS tracks committer, but not author information, some commits are not properly attributed; this attribution is tracked elsewhere). So the actual number of contributors to Eclipse Neon is considerably higher than 2,300.
The Eclipse Neon release is a marvel of software engineering. But, it is perhaps equally interesting that Eclipse Neon is the result of years of practiced communication and coordination between project teams that separately work out their own priorities without coordinated direction from above: it is a marvel of coopetition with forces pulling project teams in different directions chasing different priorities, but still coming together to produce a great set of products.
If you’ve made it this far, you’ve no-doubt already noticed that my top ten list actually contains fifteen items. It’s actually more than that if you consider that I’ve mashed together some features that could easily be kept apart. There’s a lot of cool stuff in the the Eclipse Neon release: download it today and take a look.
Some of the content (especially screenshots) and most of the inspiration for this document comes from new and noteworthy documents provided by the project teams, including:
- Eclipse Project Neon (4.6) M1 New and Noteworthy
- Eclipse Project Neon (4.6) M2 New and Noteworthy
- Eclipse Project Neon (4.6) M3 New and Noteworthy
- Eclipse Project Neon (4.6) M4 New and Noteworthy
- Eclipse Project Neon (4.6) M5 New and Noteworthy
- Eclipse Project Neon (4.6) M6 New and Noteworthy
- Eclipse Project Neon (4.6) M7 New and Noteworthy
- Eclipse C/C++ Development Tools 9.0 New and Noteworthy
- Eclipse PHP Development Tools 3.7 New and Noteworthy
- Eclipse PHP Development Tools 4.0 New and Noteworthy
- Eclipse User Storage Service
- Eclipse Web Tools Platform 3.8M6 New and Noteworthy
- Eclipse Web Tools Platform 3.8M7 New and Noteworthy