days
-4
-3
hours
0
-7
minutes
-2
-4
seconds
-1
-8
search
JAX Developers Puzzle deadline approaching: Play for a chance to win a complimentary JAX London 2018 ticket!
Part I – A new look and feel

A look back on a year of changes to Eclipse Luna

Holger Voormann
Night sky with moon via Shutterstock

This lunar year we saw some major changes to the Eclipse IDE. Holger Voormann walks us through the good, the bad and the ugly modifications to Eclipse and Luna.

A new website. A new logo. Java 8 support. This is what is most people notice when downloading Eclipse 4.4 and trying it out.

For many, the Java 8 support is probably the main reason to switch to Eclipse Luna. However, Luna has far more to offer and the Java application development system is only a small part of this. The fruits of 71 out of 76 Luna projects would be avoided when using Eclipse Standard 4.4. The 76 projects – or rather 120 if you include their sub-projects – that revealed their software this year through the simultaneous release of Luna, in turn make up about half of all the Eclipse projects.

In the following article I will outline what’s new and what’s noteworthy about Luna, what happened in the last twelve months in the Eclipse Community and which trends are on the horizon. I’ll also discuss some of the criticisms of the neglected Eclipse platform.

The new look

The website eclipse.org received not only an aesthetic redesign but also a structural one. The working groups and industry representatives within the Eclipse Foundation, which were until now only to be found on the very bottom of the homepage, have been moved beside Tools and Projects as one of the three main areas in focus (more to come later about working groups and their strategic meaning). Assigning the new look to all Eclipse websites will take some time.

The partly static and partly creative pages that Wiki, the Bug-Tracking-System etc belong to, are technically different. The individual projects are responsible for their own pages and can create their own look, which is the case with eclipse.org/Xtext, eclipse.org/orion and eclipse.org/recommenders.

eclipse logos

The path to a new logo

A noticeable part of the new look is the modernisation of the logo. The first attempt to renew the logo failed at the start of 2010 when Ian Skerrett, the marketing director of the Eclipse Foundation, put 650 US-Dollars prize money on a Crowdsourcing Platform. From the 232 entries, four made it into the final round but there was no clear winner. The same amount of people voted to keep the old logo as the combined amount of votes for the top two designs.

At the start of 2014 Ian Skerrett initiated a new attempt to create a logo. Unlike the first attempt, a new phase followed the initial selection of entries. The new fine-tuning phase was based on the voicing of critical opinions and it was a successful addition to the process. In this phase it was also possible to combine multiple suggestions for the font and colour which is a good idea, as far as I’m concerned. One of the downsides of Crowdsourcing is the lack of collaboration. In contrast to the original suggestions, the modernisation of the new logo was widely accepted and more successful than the first.

Java 8

To bridge the period between the release of Java 8 in March and that of Luna in June, a Kepler Package was offered on the download page under the Reiter Java 8 Support. This showed download numbers but didn’t receive much attention. What is meant here by “advanced” is the Java Development Tools:  Eclipse’s own incremental compiler, the debugger, the editor with auto complete that shows mistakes, warnings, quickfixes (see illustration) and the formatter. Even if there are separate settings for the Java source code and Bytecode, it’s still not possible to generate Java 7 code from Java 8 source code with Lambda terms.

quickfix

Using Quickfix (Ctrl+1) or clean-up (Source | Clean Up …) you can change individual or entire functional anonymous classes into lambda expressions or vice versa.

Through Luna, the API tools control the Java 8 code. They display errors or warnings if you do not stick to the specifications of foreign plug-in interfaces – or your own plug-ins, if you forget to increment the version according to the semantic versioning and the previous baseline setting is to be monitored, as the plug-ins need their basic versions.

The API tools are part of the Plug-in Development Environment (PDE) and thus are available in all Java development packages except the Eclipse IDE for Java Developers, which is intended for the pure Java development without OSGi.

Content assist without (left) and with (right) code recommenders

Content assist without (left) and with (right) code recommenders

Even code recommenders work with Java 8, as with all other versions of Java: In auto-completion, the most popular entries in the otherwise alphabetical list are pushed all the way up and added to percentages. However, Java 8 also shows a weakness: Code recommenders draw their data from the analysis of numerous open-source projects, which for Java 8 is still unknown, meaning newly added methods fall through the cracks.

For example, with lists such as the ArrayList, the new (and therefore unnoticed by code recommenders) the default method forEach () may soon overtake iterator () or at least become used with similar frequency. In addition to the innovative auto completion, code recommenders offer, as before, the API Docs View, which provides more information than the old, established Javadoc View.

A new addition is SnipMatch: In the Java editor CTRL + ALT + SPACEBAR, a search box will appear at the keyboard shortcut CTRL for searching for code snippets (see below). You can create your own snippets and make them available to the public. I’m curious how much the utility by quality and quantity of Snippets will be changed by the community.

Code Recommenders’ new SnipMatcher (CTRL+ALT+SPACE)

Code Recommenders’ new SnipMatcher (CTRL+ALT+SPACE)

Xtend is also referred to as “Java 8 ready”, but for Lambda expressions it has its own syntax. In this way, Xtend is removing itself even further from Java 8, which Java has simplified by allowing programmers to leave out standardisation. While the simplification of Xtend is based on a different syntax, Object Teams Java is supplemented by a concept with teams and roles. ObjectTeams has gained even more from Java 8 than Xtend – the developer team had to work hard for the new support of lambdas.

The analysis tools also had to be partially adapted for Java 8. Fortunately, thanks to the natural heap-dump-format, you continue to go on the hunt for memory leaks in Java 8 applications and optimize the storage requirements with the Memory Analyzer (MAT). Luna version 1.4 brings minor improvements and has no more problems with huge heap-dumps.

Beyond Luna and the official Eclipse projects, EclEmma is managing nicely to measure test coverage with Java 8 code. For troubleshooting anti-patterns there is a first release candidate for version 3.0 (as of June 25).

Darkened IDE, shared editors and more

The surface of the Eclipse IDE can now darkened by using the Dark Theme: in the menu WINDOW | PREFERCENCES in the GENERAL area | in APPEARANCE select the Dark Theme.

eclipse play gif

A comparison of the run icon in GIF, PNG and SVG formats

The MoonRise UI theme by Andrea Guarinoni served as the basis for the Dark Theme. But because the colours are determined by the operating system and don’t change for scroll bars (context), menus or drop down menus in Eclipse’s Standard Widget Toolkit (SWT), it only looks good if you also select a dark design in the operating system (see right).

In some non-platform symbols, like the JDT, there are some ugly, bright pixels at the edges, due to GIFs without partial transparency that are optimized for lighter backgrounds. On the other hand, the icons of the platform look perfect. They have all been recreated as vector graphics (SVGs) to produce the necessary PNGs.

Equally bright and dark backgrounds blend thanks to the partial transparency (see below). Unlike JavaFX, SWT does not yet have high-resolution, on Apple’s “Retina” display. But once that’s the case, SVG icons could also go beyond the current standard 16 x 16 pixel size. For fans of Dark Themes, the website eclipsecolorthemes.org has a wide selection of colour schemes for Java, PHP and HTML editors.

eclipse dark theme

The dark theme is dependent on the selected theme of the operating system (shown here on Windows 7 with a light standard and dark “Steam VS” design)

Splitting text and word wrapping

Many will be looking forward to a further small improvement in Luna: The twelve-year-old request from editors to split text horizontally or vertically was finally realised in Eclipse 4.4. Using the menu, the Split Editor can be found through WINDOW | EDITOR | TOGGLE SPLIT EDITOR (HORIZONTAL) or TOGGLE SPLIT EDITOR (VERTICAL). The editor can be split via the keyboard shortcut  CTRL + _ or CTRL + {. The latter does not work with German keyboards, for instance, where the { character can be reached only by ALT GR. Luckily, shortcuts can be changed in WINDOW | Change KEYS | PREFERENCES | GENERAL.

There are only three entries in the bug tracking system, which received more than 200 votes. In addition to the Split Editor there is also: Word Wrapping (breaks in lines that would extend beyond the visible range) and better handling, especially for nested projects. There is already a solution for Word Wrapping by Florian Wessling.

Unfortunately, his solution has so far not yet been accepted – which I find frustrating. There’s also a proposal for nested projects, which has not yet come into effect. The working prototype is shown by Mickael Istria in a one-minute video. In contrast, it has a mechanism for changing the language during the run time, which is offered by the platform, but not yet used by the IDE in Eclipse 4.4. This is interesting for developers of country-specific Eclipse-based applications.

Large code changes were made in the OSGi framework Equinox. Those who don’t benefit from what was specified in OSGi Release 6 [9] and implemented in Eclipse 4.4, didn’t notice any real difference, unless he or she has Eclipse 2.x plug-ins, which now require a compatible plug-in.

Improvements beyond the IDE

In addition to improvements in the platform and the IDE, there are still many innovations from the numerous other Luna projects. I’ll introduce a selection of these in the following section.

Since Kepler, there’s been four releases from the two sibling projects, Java Implementation of Git (JGit) and Eclipse Git Team Provider (EGit). The version grew from 3.0 to 3.4. The new Git Interactive View should be of interest to Git professionals. However, I’m glad that you can now change messages later in the History View Commit (select version and right-click: MODIFY | REWORD).

In the Git Staging View, files can also commit but only partially. This was already available in Kepler, but hardly anyone knew about it. In comparison to Git a somewhat outdated version Control Subversion (SVN) is served by Subversive. With Luna, Subversive will make the leap to version 2.0. There is now support for SVN 1.8, and the programming interface has been changed.

terminals view

The terminals view with tabs on two levels: new terminals will be displayed within the view or – if the view is pinned – in a new view

Unlike JGit / EGit, there were only two, not four, releases for the C / C ++ – Development Tooling (CDT) project. In Version 8.3 there was support for the C++ Class Library Qt and in Version 8.4 updates included an improved debugger, eg. “C / C ++ Dynamic printf”, breakpoints, a graphic display in the Trace Control View and the debugger can now be used as a stand alone application. CDT 8.4 no longer runs with Eclipse 3.x, but only with Eclipse 4.x.

The new Terminal View, part of the Target Communication Framework (TCF) project, a sub-project of the CDT is a new development that even non-C++ developers will be interested in. (Fig. 7) The terminal view, which can also be installed separately (via Market Place [10] or under HELP | INSTALL NEW SOFTWARE … select at WORK WITH “LUNA” to select GENERAL PURPOSE TOOLS | TCF TERMINALS (CONSOLE) VIEW), you can access remote or local machines via the command line with SSH, Serial or Telnet. The terminals view replaces the popular program PuTTY. Developers on Linux should look at the different tools and other new additions on Version 3.0.

The major difference between Kepler and Luna is the Web-IDE Orion: from 3.0 to 6.0. Only Sapphire, one of several surface Frameworks in Luna has jumped an even longer distance from 0.6.2 to 8. However, that doesn’t count because the versions have been omitted between 0.7.3 and 8. At Orion, however, there were versions 4.0 and 5.0, but even minor releases every six weeks from the Orion team are too slow.

In the File Explorer sidebar there is an unusual web application for the right-click menu (whose functions are to work elsewhere without right-click), and instead of the main menu on the top left there is a ledge on the far left. I’m curious to see which operating concept will prevail in the end.

Read the second part of the Eclipse Luna retrospective here – the Eclipse project highlights,
the new IoT vogue and what Eclipse could and should be focussing on in future.

Author
Holger Voormann
Holger Voormann is a freelance software developer, consultant, avid Eclipse user, Eclipse committer and contributor. His interest is in the design of user interfaces, quality assurance and agile processes. He blogs at eclipsehowl.wordpress.com. You can e-mail him at: eclipse@voormann.de.

Leave a Reply

Be the First to Comment!

avatar
400
  Subscribe  
Notify of