What's New in Kepler

Here are descriptions of some of the more interesting or significant changes made to the Eclipse Platform for the Kepler (4.3) release of Eclipse.

Plug-in developers will also be interested in the corresponding What's new document in the plug-in developer's guide.

Detached windows with sash When you detach a view or editor into its own separate window, it now has all the capabilities of a normal workbench window. They now support multiple stacks of views separated by sashes with arbitrary layouts. The detached parts will remain synchronized with the master window that they were detached from. This is especially handy for people developing with two or more monitors, so they can spread views across several monitors and keep them synchronized.

Detached window with multiple views separated by sash.

Trim dragging You can now drag toolbars to reposition them.

Dragging a toolbar.

The perspective switcher can also be dragged to the left or right of the window and it will switch to a vertical orientation.

Dragging perspective switcher to vertical orientation.

Import nested projects The Import Projects wizard now has an option to continue searching for projects to import recursively within any project it finds. This allows you to import physically nested projects at the same time.

Import nested projects.

Option to omit -XstartOnFirstThread If you are launching an SWT program on Mac OS X, you can now selectively add / remove the -XstartOnFirstThread VM argument in the event your VM does not support it. This option can be configured per launch configuration and is available on the standard Arguments tab for Java configurations (Java Application, Eclipse, etc.).

New VM preference allowing users to selectively add the -XstartOnFirstThread argument per-configuration

Global preference to include exported entries during launching A new global preference has been added so you can only allow exported classpath entries to be used during launching. Previously, this was only customizable per launch configuration on the default classpath entry on the Java Classpath tab. The new preference does not affect launch configuration data, so no migration is needed.

The new preference can be found on the Java > Debug preference page.

New global preference to only include exported classpath entries

Launch configuration dialog can show warnings Previously, contributors could only set an 'ok' or an 'error' state in their launch configuration tags / groups. Now, contributors can set a warning state with a message for their tabs / groups - possibly warning users about set options that might be problematic, but do not necessarily need to prevent launching.

Launch configuration dialog showing warning message / state

Performance enhancements Significant performance enhancements have been made in the Platform user interface in this release. In particular, some applications that were experiencing slow editor opening, closing, and switching are now much faster. Editor selection changes and the Open Resource dialog have also been made faster. A number of leaks have been addressed to avoid long-running applications don't run out of memory.

Photographer: YtseJam Photography / Creative Commons Attribution 2.0

SWT for GTK3 32-bit and 64-bit GTK3 have joined the lineup of supported configurations for which SWT and Eclipse are routinely built. This implementation is currently early access. Everyone is encouraged to download and test these new builds, and to log bugs in bugzilla.

Note to load the SWT GTK3 libraries, you must set an environment variable SWT_GTK3 prior to starting Eclipse. (ex. export SWT_GTK3=1)

GTK3 Control Example

Support for the Ant augment task The Ant editor now has support for the Ant augment task.
Open Resource dialog enhancements The Open Resource (Ctrl+Shift+R) dialog now offers direct access to the Show In and Open With menus via drop-down buttons. On platforms that support mnemonics, the buttons are also accessible via Alt+W and Alt+H.

Whole word option on File Search page The File Search page now allows to search for words via a new option:

Open Search dialog on last used page The Search dialog can now be configured to open on the last used page, instead of computing the best matching page based on the current selection:

Detection of shared install changes When running in a read-only folder (also known as shared install) and the read-only installation has changed (e.g. new plugins installed, new version of Eclipse installed), Eclipse will now detect this change and warn that your personal additional plugins have been uninstalled. A migration wizard will then guide you through the steps to re-install your plug-ins, if they are still compatible with your other installed software.

This wizard is presented in two situations. First, when a read-only installation is being changed (i.e. your application is being updated or plugins are added or removed), second when a new read-only installation is run for the first time.

Installation Remediation In order to help you deal with dependency errors while installing software, the various installation wizards now contain a new wizard page. This page, called remediation, proposes various solutions in order to help you proceed with the installation, even when the exact change you requested is not possible.

The picture below shows a screenshot of this page in action. In this particular case the user is trying to install something that is conflicting with what is installed, and the wizard gives the option to update what is installed so that the installation can proceed.

Stop thread from OSGi console If a bad plug-in runs into an endless loop, then you usually had to kill the whole Eclipse process. Now, you can launch Eclipse with -console [[host:]port] to get a safety ring. If you're then stuck in an endless loop and Eclipse doesn't respond any more, you can just execute
osgi> threads stop main
at the OSGi prompt. This will send an IllegalStateException to the "main" thread. This is usually enough to stop the endless loop, but keep the Eclipse workbench running.

If you don't want to keep a console window around, you can pass a port number (e.g. 12345) after the -console command line argument and later use telnet localhost:12345 to connect.