Platform Changes
|
Declarative services added to the platform
|
The Eclipse rich client platform now includes an implementation
of OSGi declarative services (DS). This allows a lazy-starting plug-in to make OSGi services available
to other plug-ins before it has been started. Finally the powerful OSGi dynamic service architecture
can be fully exploited in the Eclipse world of lazy activation. DS also includes support for
dependency injection, so services can be injected into plain old Java objects (POJOs),
without adding a dependency on the OSGi framework into your application code. This
new platform bundle is complemented by new tooling support in PDE for declarative services.
|
Compare Core Plug-in
|
Some of the patching functionality provided
by the compare plug-in has been refactored into a separate org.eclipse.compare.core plug-in
that can be used by headless Eclipse applications |
Improved look for filtered tree
|
The button for clearing the filter field of filtered trees has
been moved into the text box, even for platforms that don't have a native search field with
this functionality.
For backwards compatibility reasons, existing subclasses of FilteredTree
will not get the new look automatically. Clients of the FilteredTree
are encouraged to switch to the new look as recommended in the
porting guide.
|
Multiple fonts in one cell
|
The existing owner draw support for JFace TableViewer and
TreeViewer has been extended to allow multiple fonts within cells. For example, this can be used to
highlight matching text in search results using a bold font.
|
Using sheets on Mac Cocoa
|
For general prompts and dialogs regarding editors, or
the current Workbench window, sheets are now used on Mac Cocoa. In addition to the
new style bit SWT.SHEET , new API has been added to MessageDialog
and MessageDialogWithToggle so that clients can set the appropriate style for their dialogs.
|
JFace dialog button order on GTK+
|
JFace dialogs now respect the default button
order on the GTK+ platform. Example: "Cancel" "OK". It is possible to revert
the order used by SWT and JFace, see
Alternate button order.
|
New "check state" provider
|
JFace now has a new type of provider, called ICheckStateProvider , that can be used to
manage the checked and gray states of elements in CheckboxTableViewer or CheckboxTreeViewer
objects. This is useful in situations where the viewer should come up with pre-checked
elements, or when the check state changes are not always triggered by the user.
|
Show welcome checkbox
|
A checkbox can be added to a welcome page that will cause the
welcome to show when Eclipse is restarted, even if it was closed previously. The
unextended Eclipse platform does not show this checkbox, but it can be added using
an intro extension that uses the class AlwaysWelcomeCheckbox as a content provider.
The example below shows this checkbox added to the What's New page.
|
Help content filter
|
A new extension point org.eclipse.help.webapp.contentFilter
allows for pre-processing of help content before it is delivered from the help server. |
Jetty version 6.1
|
Version 6.1 of the
Jetty Web server is now included in the platform,
replacing the 5.1 version in the previous release. This brings along an implementation
of version 2.5 of the javax.servlet API, replacing the 2.4 version in the Ganymede release.
|
New release of ICU4J
|
The platform has adopted a major new release of the
ICU4J localization library: version 4.0. This
release includes support for Unicode 5.1, and the Unicode standard
Common Locale Data Repository (CLDR) 1.6
See the ICU4J 4.0
release notes for more details.
|
Extensible installation details
|
The About Dialog now provides a mechanism for plug-ins to
contribute installation pages to the platform about dialog. The buttons for showing feature,
plug-in, and configuration details have been replaced by a single Installation Details button.
Pushing this button will launch a dialog that shows all of the installation pages contributed by
plug-ins in a single Installation Details dialog. Plug-ins may contribute installation pages and
define buttons that operate on the information in the installation page.
The new extension point is org.eclipse.platform.ui.installationPages. Example implementations
can be found by browsing the hierarchy of org.eclipse.ui.about.InstallationPage.
|
New intro theme
|
A new intro theme called "Slate" has been added.
Slate is not the default theme for Eclipse but can be specified using the
preference org.eclipse.ui.intro/INTRO_THEME=org.eclipse.ui.intro.universal.slate . The main differences in the root page between the new
theme and the two existing themes are:
- Each link has a label.
- The images are transparent and will display well if a background is
added using an extension.
- The page displays well at high screen resolutions.
Non root pages also have a label for each link.
|
Equinox Changes
|
New publisher bundle
|
p2 has introduced a new bundle
called the publisher, which provides infrastructure for generating, packaging, and publishing metadata and artifacts
into p2 repositories. The publisher provides an extensible API that clients
can extend to perform customized publishing to repositories, and includes an advice mechanism for injecting
additional metadata into the generation and packaging process. |
New Equinox concurrency API
|
This release includes a new provisional API for futures. Futures
facilitate handling of concurrency and synchronization in multi-threaded and/or
distributed systems. They serve as a proxy for a result that is not known,
because the computation of the result is not yet complete. See the
wiki documentation
for more details on this new experimental concurrency API.
|
Enhanced DebugOptions
|
The Equinox DebugOptions API has been enhanced
to support dynamic changes to option settings. Now debug option settings can be modified while
an application is running to facilitate problem determination and support. A new interface,
DebugOptionsListener , can be registered as a service to enable your plug-in to
respond to dynamic debug option changes.
|
New tracing API
|
A new debug tracing API, org.eclipse.osgi.service.debug.DebugTrace ,
has been added to enhance and simply writing of debug trace messages in your code.
The DebugTrace object will take care of writing additional trace information along
with your message, such as your bundle symbolic name, and the class, method, and line
in which the tracing message was written. This reduces clutter in the code being traced, while ensuring
that consistent and complete contextual information is recorded. The tracing data can
either be directed to a file, or written on stdout, depending on the setting of DebugOptions#setFile .
By default the Eclipse platform will write trace data to the file trace.log in the workspace
metadata location (next to the platform log file).
|
Security Manager enhancements
|
This release includes an implementation of the updated Conditional Permission Admin
Specification included in the OSGi Service Platform Core Specification Release 4, Version 4.2.
This version of the specification includes enhancements to the Conditional Permission Admin service which is used to manage
the permissions assigned to bundles. The enhancements include adding the ability to grant or deny permissions based on conditions,
and to manage conditions as an ordered list of rules. For more information see the
OSGi Release 4 Version 4.2 specification. |
OSGi service registry enhancements
|
This release includes an implementation of the new Service Hooks Specification
included in the OSGi Service Platform Core Specification Release 4, Version 4.2.
Certain specialized bundles need to be able to alter
output results of service layer's find and event delivery operations to
affect their purpose. The Service Hooks Specification enhances the service registry to allow
service registry hooks to affect the service registry's find and event
delivery operations.
The Service Hooks Specification is targeted at bundles which need to observe and react to
selected service layer operations. In general these will be highly
specialized bundles written by systems programmers. The is not
intended to be used by so-called "normal" application bundles.
For more information see the
OSGi Release 4 Version 4.2 specification.
|
OSGi framework launching
|
The OSGi Service Platform Core Specification Release 4, Version 4.2 defines a standard
way to launch an OSGi framework implementation.
This release of Equinox includes an implementation the OSGi standard launching APIs.
A framework implementation must provide a factory class. A factory class is
an indirection to create a framework implementation object. The implementation factory
class must implement the FrameworkFactory interface. A launcher can use the following ways
to get this class name:
- The Java-SE Service Provider Configuration model.
- Get it from some configuration and use Class.forName.
- Hardcode the factory name.
To create a framework instance a launcher uses the FrameworkFactory to constructs the
implementation's Framework object. The Framework can then be
used to control the lifecycle of the framework (e.g. start, stop, update
etc.) The org.eclipse.osgi.launch.EquinoxFactory class is the public
class in Equinox which implements the new
org.osgi.framework.launch.FrameworkFactory interface.
This Release 4, Version 4.2 specification also defines standard configuration properties which all
framework implementations must recognize. This allows for a generic
framework launcher to be implemented that can launch any framework
implementation.
For more information see the
OSGi Release 4 Version 4.2 specification.
|
OSGi Declarative Services Changes
|
This release includes an implementation of the updated Declarative Services
Specification included in the OSGi Service Platform Core Specification Release 4, Version 4.2.
The following list highlights the changes to Declarative Services for Version 4.2 of the
OSGi Specification:
- The definition of the
Service-Component header now uses the definition of a
header from the module layer. It also allows wild-cards to be used in the
last component of the path of a header entry.
- The DS runtime now follows the recommendations of Property Propagation and
does not propagate properties whose names start with '.' to service properties.
- The component description now allows for a configuration policy to
control whether component configurations are activated when configuration
objects are present or not.
- The component description now allows the names of the activate and
deactivate methods to be specified. The signatures of the activate and
deactivate methods are also modified.
- Additional signatures of the bind and unbind methods have been added.
- The definition of accessible methods for activate, deactivate, bind and
unbind methods is expanded to include any method accessible from the
component implementation class. This allows private and package
private method declared in the component implementation class to be
used.
- The XML schema and name space have been updated to v1.1.0. It now
allows for wild-carded attributes and elements for extensibility. The
name attribute of the component element is now optional and the
default value of this attribute is the value of the class attribute of the
nested implementation element. The name attribute of the reference
element is now optional and the default value of this attribute is the
value of the interface attribute of the reference element. The Char type
for the property element has been renamed Character to match the Java
type name. The attributes configuration-policy, activate and deactivate
have been added to the component element.
- When logging error messages, SCR now uses a
LogService obtained
using the component's bundle context so that the resulting log entry is
associated with the component's bundle.
- Target properties are now component properties that can be set
wherever component properties can be set, including configurations.
For more information see the
OSGi Release 4 Version 4.2 specification.
|
New core framework API
|
The OSGi Service Platform Core Specification Release 4, Version 4.2 is adding a number of small API additions
to the core Framework. The following is a list of API additions included in this release.
-
org.osgi.framework.Bundle#getVersion()
- Returns the Version of a bundle.
-
org.osgi.framework.Bundle#getSignerCertificates()
- Returns the signers of a bundle.
-
org.osgi.framework.BundleException#getType()
- Returns the error type for a BundleException. For example, a resolver error.
-
org.osgi.framework.BundleReference
- Interface which must be implemented by bundle classloaders. This gives clients the ability to determine what bundle a ClassLoader is for.
-
org.osgi.framework.Constants
- A number of new constants have been added to define standard launching configuration properties.
-
org.osgi.framework.FrameworkEvent
- A number of new FrameworkEvent types have been added give launchers standard notification when a framework is stopped or restarted.
-
org.osgi.framework.FrameworkUtil#getBundle(Class)
- Utility to get a Bundle object for a given class. A static method equivalent to the PackageAdmin#getBundle(Class) method.
-
org.osgi.framework.FrameworkUtil#matchDistinguishedNameChain(String, List)
- Utility to match a certificate chain against a pattern. This is used for permission and condition checks against signed bundles.
-
org.osgi.framework.ServiceEvent
- A new ServiceEvent type has been added to indicate the properties of a registered service have been modified and the new
properties no longer match a listener's filter.
-
org.osgi.framework.ServiceException
- A new ServiceException type has been added to indicate that a service problem occurred.
-
org.osgi.util.tracker.BundleTracker
- The BundleTracker class simplifies tracking bundles much like the ServiceTracker simplifies tracking services.
|
Composite bundles
|
This release includes an implementation of the Composite Bundles specification.
The Composite Bundles specification is a proposed specification for the OSGi
Release 4, Version 4.2 specification. In a large system built upon a large number of modules,
sometimes it is necessary to provide a mechanism for isolating the various
modules from each other at runtime. Composite Bundles introduces a concept
to provide isolation for a group of bundles.
Conceptually a composite bundle is composed of
a set of bundles which are contained in another (nested) framework instance.
New API is introduced in the org.osgi.service.framework package to
manage composite bundles. The CompositeBundleFactory service interface is
used to install composite bundles. The CompositeBundle interface is used to
manage the bundles which compose a composite bundle.
For more information see the
OSGi Release 4 Version 4.2 specification.
Note: The API introduced in the org.osgi.service.framework package
is a proposed OSGi API. This API is considered provisional in Equinox and
may change drastically or be dropped altogether in a future release of
Equinox. We encourage use of the API and any feedback on the
specification, but consumers must be aware that breaking changes may occur
in a future release.
|
SWT Changes
|
Cairo on AIX
|
Cairo support has been added to Eclipse on AIX.
This enables advanced graphics support on AIX.
|
JNI Generator
|
A new plug-in based tool has been added to simplify the process of generating the SWT JNI code.
For more info click
here.
|
Block selection in StyledText
|
StyledText can be switched into block selection mode with new API StyledText.setBlockSelection(true) .
|
JavaScript-to-Java
|
JavaScript can now call out to Java in the Browser widget.
Supported types are numbers, booleans, strings, null, and arrays (example
snippet).
|
Improved Java-to-JavaScript
|
Java can now call into JavaScript. An expression is evaluated in the context of a Browser document and
a value is returned. Supported types are numbers, booleans, strings, null's, and arrays (example
snippet).
|
New caret listener
|
New API has been added to StyledText to allow you to listen for changes in the caret offset.
See StyledText.addCaretListener() and StyledText.removeCaretListener() for more information.
|
New text editor demo
|
This new example makes extensive use of StyledText to demonstrate how it can be
used to create a multi-font rich text editor with bullets, links and embedded objects.
|
Improved search field
|
The SWT.SEARCH style is now supported on
all platforms, allowing the application to display a text message when
the control is awaiting input. The SWT.ICON_SEARCH and
SWT.ICON_CANCEL hints control the appearance of the search field (example
snippet).
|
Improved copy and paste
support
|
Support has been added to the FileTransfer
class to allow for copy/paste operations between the Explorer and
the Nautilus file manager.
|
Links in StyledText
|
StyledText now allows users to add
hyperlinks to the text in the widget.
|
StyledText margin spacing and color
|
New API has been added to StyledText to set margin spacing and color.
See
Snippet316.
|
Disabling Javascript
|
Javascript can be disabled from running in a Browser with the new API Browser.setJavascriptEnabled(boolean) .
|
Browser wants a cookie
|
Cookies can be created and accessed in the Browser with new API Browser.setCookie() and Browser.getCookie() .
|
Authentication listener
|
Browser clients can now provide a listener that responds to basic authentication challenges. This is
useful for enabling users to access sites without presenting them with a manual authentication prompter.
See
Snippet317.
|
Shell modified state hint
|
New API has been added to Shell to provide a user hint that the window is in a modified state.
See
Snippet314.
|
DateTime DROP_DOWN
|
DateTime widgets created with SWT.DATE style can now also have SWT.DROP_DOWN style.
|
SWT.SHEET style for Shell and Dialog
|
Sheet windows are now supported on Mac OS X Cocoa.
|
Mozilla browser support on Solaris x86
|
Mozilla browser support has been added to the Solaris x86 platform.
|
Improved DND feedback on Cocoa
|
Cocoa drag and drop in trees and tables is now fully supported. Aside
from the visual feedback, other native features are supported, such as automatic collapse of tree items
when the drag is finished.
|
Paper orientation
|
Applications can now programmatically select portrait or landscape mode when printing,
or when opening a PrintDialog.
See
Snippet318.
|