Eclipse Project 4.4 M1 - New and Noteworthy

Here are some of the more noteworthy things available in milestone build M1 (August 9, 2013) which is now available for download.

Platform
Contribute E4 Views into the IDE As part of our goal to remove some of the barriers between e4-based code and the IDE we've just added a new element 'e4view' into the org.eclipse.ui.views extension point. This allows you to declare a new view for the IDE whose implementation is done in the e4 style (i.e. an annotated POJO).

new extension

The new type of extension is identical to the original 'view' except for relaxing the requirement that the 'class' implement IViewPart.

This is the first trial run for this type of extension. Once we are sure we have the pattern correct, we'll make similar changes to other extension points such as org.eclipse.ui.menus.

For those that are unaware of the e4 way of coding, here's what the implementation of an e4 view looks like:

import javax.annotation.PostConstruct;
import org.eclipse.e4.ui.di.Focus;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;

public class RealE4View {
	Label label;

	@PostConstruct
	void createView(Composite parent) {
		label = new Label(parent, SWT.BORDER);	
		label.setText("Testing");
	}

	@Focus
	void setFocus() {
		label.setFocus();
	}
}
      

Note how it's a simple POJO and how few dependencies it has; this has already proven itself as a far more convenient way to write the code and has great advantages in testing (because of its few dependencies).

Tweaking the UX We've finally gotten to the point where we can return and address some of the current pain points you all see when using Eclipse 4. This will be part of our focus for each milestone in Luna...while not necessarily 'New' these changes *are* 'Noteworthy'...;-).

First up is fixing how we handle minimized views that are brought up by the framework being hard to dismiss. The most common (and justifiably complained about) use case for this is having the Debug view overlay the editor when it hits a breakpoint. This has been refactored to match the 3.x behavior more closely and should now work as expected.

Next up will be re-enabling the ability to reorder the perspectives on the perspective bar.

Signed SDK Executables (for Windows and Mac) Thanks to the efforts of the Eclipse Foundation (see bug 388878), we now provide signed Windows and Mac executables for the Eclipse SDK. This improves the initial impression of the software, as well as improves security for you, since there is no need to disable "Gatekeeper" or other security measures of the operating systems.
Improved Recenter command Like in Emacs, the Recenter command in textual editors now cycles between center, bottom and top.
Ant 1.9.2 The platform has been updated to use the latest version of Apache Ant (1.9.2). For more information on what is new in Ant 1.9.2, see the official what's new.
Platform Ant BREE update Platform Ant has had a BREE update to require a Java 1.6 compatible execution environment (or newer).
Collapse All in Ant view The Ant view now supports the Collapse All command:

The Ant view showing the collapse all action

Platform Debug BREE update Platform Debug has had a BREE update to require a Java 1.6 compatible execution environment (or newer).
JDT
Failure trace font for the JUnit view The font for the failure trace in the JUnit view is now configurable on the General > Appearance > Colors and Fonts preference page.

Contributed VMs are more recognizable You can't remove VMs that have been contributed to Eclipse via the org.eclipse.jdt.launching.vmInstalls extension point.This fact is now more recognizable:

The Installed JREs preference page showing a contributed VM install

Improved HCR for member types Hot Code Replace (HCR) has been improved in the Java debugger to ensure the correct method is dropped to in member types (inner / anonymous / local classes).

For more information see the bugzilla entry.

PDE
Display target platform in the status bar You can now have target platform information displayed in the workbench status bar. Currently it displays the active target name and double clicking on it will open the Target Platform preference page. This feature can be enabled on the General > Plug-in Development preference page.

Target platform in the status bar

PDE UI tracing options available The tracing options provided by PDE UI can now be enabled from the General > Tracing preference page:

PDE tracing options

Warning if PlatformAdmin is unavailable PDE requires the PlatformAdmin service to function. The Equinox Framework has moved this service to the org.eclipse.osgi.compatibility.state compatibility fragment. If the fragment is not installed, PDE will write an error to the log and will not function correctly. The fragment is included in the Eclipse SDK, so most users will be unaffected.

Error message for PlatformAdmin unavailable

PDE Build moved to JavaSE-1.6 The org.eclipse.pde.build bundle now has a bundle required execution environment (BREE) of JavaSE-1.6, matching the Platform Ant bundles.
Equinox
Equinox OSGi framework update The Equinox Framework implementation has been updated to implement the latest API available for the upcoming OSGi R6 Framework specification. The OSGi R6 Core Framework specification (finalized in March 2014) will contain enhancements in the following areas:
  • Introduction of Service Scopes to the OSGi Service Registry (RFC 195)
  • Improvements of Weaving Hooks (RFC 191)
  • Clarification of hooks on the system bundle (RFC 198)
  • Native environment namespace (RFC 188)
  • Data Transfer Objects (RFC 185)
  • Addition of FrameworkWiring.findProviders
From an Equinox perspective these are considered incremental enhancements. The enhancements mentioned above are implemented in M1. A majority of the development effort during this release cycle is focused on refactoring and, in many cases, rewriting the core Equinox Framework implementation to be based on the OSGi generic dependency model.

For most consumers and developers this change should not be noticed. But, as documented in the wiki, there are four main areas of concern that the community should be aware of:

  • The Framework no longer uses the old Equinox resolver API org.eclipse.osgi.service.resolver internally to resolve bundles.
  • All Equinox Framework specific hook implementations are broken and will need to migrate.
  • Removal of old style plug-in support. A compatibility fragment is available to add the support back.
  • Removal of PlatformAdmin Service Implementation. A compatibility fragment is available to add support back.