Eclipse 3.1 M7 - New and NoteworthyIt's spring once again, and it brings with it a host of new and interesting things to round out milestone build M7 (May 13, 2005) which is now available for download. See the M7 build notes for details about bugs fixed and other changes. M7 is the final milestone build of the Eclipse Platform 3.1 development cycle, and marks the official start of the 3.1 endgame.
JDT
New Open Type dialog
The Java Open Type dialog has been improved in a number of ways: There is now only a single list to select from. A history of recently opened types shows up first in the dialog; workspace types matching the pattern appear below the separator line. CamelCase pattern matching takes you to a type with fewer keystrokes. For example TZ matches TimeZone or IOOBE matches IndexOutOfBoundsException.
There are major architectural changes under the hood as well. The types shown in the dialog are now found with a Java search engine query. This nets a saving of 4-6MB on a normal Eclipse development workspace over the memory hungry approach used previously.
Performance improvements
Performance has been improved across JDT Core. As an example, launching a workspace containing all Eclipse SDK sources used to take close to 2 minutes in 3.1 M6. It now takes under 10 seconds. Below is a snapshot of fingerprint performance tests for JDT Core.
See the Eclipse project performance page for details on all the performance work that has been going on throughout the 3.1 cycle.
Refactoring Undo/Redo available from Edit menu
Refactoring Undo/Redo is now available from the Edit menu, and the separate Refactor Undo/Redo actions have been removed from the global menu bar. Additionally, refactoring Undo/Redo operations are now integrated with Java editor Undo/Redo, resulting in a more transparent undo story in the editor. For example, a refactoring triggered from within the editor is now undoable in the editor by simply pressing Ctrl+Z.
New Type wizards support generics
The New Type wizards now support J2SE5 generic types in various fields: The Name field can include type parameter declarations. The Superclass and the implemented Interfaces can include generic type arguments.
Improved folding icons
The new lightweight folding icons shown in the Java editor now differ from the override and implements indicators:
Parameter guessing for type parameters
Code Assist now inserts the correct type parameters when completing a type in the Java editor. Type parameters that cannot be disambiguated will be selected, and the Tab key will move from one parameter to the next. In this example String is inserted as the first type parameter, while Number is proposed for the second:
To try out this feature, you need to enable Fill argument names on the Java > Editor > Code Assist preference page.
Mixed indentation settings
The Java formatter preferences now allows the tab size to be configured independently from the indentation size (see the Indentation tab in your formatter profile):
For example, set Tab size to 8 and Indentation size to 4 to indent your source with four spaces. If you set the Tab policy to Mixed, every two indentation units will be replaced by a tab character.
Formatter profiles can be configured on the Java > Code Style > Formatter preference page.
Move Lines adjusts indentation
The Move Lines (Alt+Up/Down) and Copy Lines (Ctrl+Alt+Up/Down) commands now automatically adjust the indentation of the selected lines as you move them through Java source code.
Shortcuts for quick assists and quick fixes
Some of the popular quick assists like Rename In File and Assign To Local can be invoked directly with Ctrl+2 R and Ctrl+2 L. Check the keys preference page for more quick fixes that support direct invocation.
Support for @SuppressWarnings annotation
The J2SE 5.0 @SuppressWarnings annotation is now supported. Examples of recognized warning names are: "all", "deprecation", "serial", "unchecked", "finally". In the example below, the first field is tagged with the @SuppressWarnings("deprecation") annotation and no deprecation warning is reported. The second field is not tagged and a deprecation warning is reported.
Note that a compiler option controls whether @SuppressWarnings annotations are active or not.
By default, unhandled warning tokens are signaled by a warning. This warning can also be suppressed using the @SuppressWarnings("warningToken") annotation.
Support for capture conversion
In J2SE 5.0 compliance mode, the compiler supports capture conversion as defined in the JLS 5.1.10 (3rd edition). This restricts the possibility of assignment when wildcards are involved.
Improved completion on empty word
Java code completion on an empty word no longer automatically proposes all types visible at the completion location. You have to type the first character of the type to get a completion proposal.
Completion inside annotations
Code completion inside a J2SE 5.0 single member annotation or annotation attribute value is now supported.
Support for Javadoc inside package-info.java
Doc comments inside the package-info.java (the J2SE 5.0 replacement for package.html) are now processed, and the syntax and references in standard comment tags are verified.
Class file naming change for local inner types
In 5.0 compliance mode, the Java compiler now generates class files that follow the naming convention specified in JLS 13.1 (3rd edition) for local inner types. As a consequence, instead of generating a file named X$1$A.class, it will simply be X$1A.class.
PDE
Bundle manifests for plug-in
In Eclipse 3.1, it is strongly recommended that plug-ins contain an OSGi bundle manifest.mf. In addition to faster startup and classloading, this format will allow you to take advantage of many of the new runtime capabilities such as fine control over what packages you want to expose to clients. The option to create a manifest.mf in the New Plug-in Project creation wizard is now on by default.
You can create a bundle manifest.mf for an existing plug-in on the Overview page of the plug-in manifest editor.
PDE enforces code accessibility
The plug-in's manifest.mf file allows you to control on a per-package basis the visibility of your plug-in's code to downstream plug-ins. PDE manages each plug-in's Java classpath and checks these visibility rules at compile time. This means no one will never be caught by surprise by classloading errors at runtime, and will always be aware when they are referencing internal (discouraged) types.
Cross-platform product export
If you have the RCP delta pack installed, you can now build and export your product for multiple platforms at the same time via the Eclipse Product export wizard (File > Export > Eclipse Product).
RCP template with an intro
An intro part is a workbench part designed to introduce users to your product. The New Plug-in Project creation wizard now provides a template that give you a head start at creating the intro for your RCP product.
Platform UI
New splash
The new 3.1 splash screen is in:
We like it, but we're interested to hear what you think of it. Comments are welcome (use bug report 95034).
Import existing project from archive
You can now import an existing project from an archive file (.tar or .zip) as well as from the file system.
MessageDialog has accessible listener
MessageDialog now shows accessibility information for the info, error, question and warning graphics when accessibility tools are enabled.
The screen shot below shows the resulting information using Microsoft™ inspect32.
Preferences and properties dialog highlights hits
The preferences and properties dialog now highlights hits on the type filter. Keywords are also supported. The example below shows the hits for the keyword "tab".
Improved error part
If an internal error occurs while initializing a view or editor, the workbench will substitute an error part that describes the problem. This eliminates many modal error dialogs, and helps keep failures from spreading beyond the failing part.
File permissions propagated on import
Import now propagates user file permissions for archive, read-only, and executable files.
Update/Install
Improved handling of feature dependencies
When installing a feature that depends on other features, the install wizard lets you automatically include all available dependencies. If you see a dependency error when selecting a feature to install, press the Select Required button to have the pre-requisites automatically selected.
Platform Text
Undoing first change
The dirty indicator (*) in the editor tab now goes away if the initial change is undone.
Help
Dynamic content injection in Help topics
The Help web application can now inject content in the topics it serves. This feature is used to inject: The narrow_book.css style sheet that is used when showing topics inside the Help view. We can now use system fonts that match the rest of the workbench. The disabled_book.css style for topics that belong to disabled activities. A warning at the top of these topics, with a link to the preference page.
Support for per-plug-in search index
It's now possible to include a pre-built search index within a documentation plug-in or fragment. The pre-built index gets merged into the master search index on the first search. This feature cuts down the first search delay dramatically (example: first-time search for Eclipse SDK is now down to 2-4sec from 40+sec). Indexes can be built manually from PDE pop-up menu, and also through the PDE-provided Ant task.
Intro
Help system topics in welcome
The Welcome framework now has enhanced support for displaying help system topics in an Intro page. An Intro URL command can be used to specify the Help topic id and the path to a target <div> element in the Intro page where the embedded documentation should appear.
HTML-based welcome on Linux and Mac OS
Windows, Linux, and Mac OS X now all use an HTML-based presentation to show intro content. This is what Linux users will see when they start 3.1:
Mac OS X:
Support for JARing Intro plug-ins
Plug-ins that have Intro content can now be JAR'ed just like any other plug-in.
Ant
system-path variable
A new dynamic variable "system-path" allows you to define an external tool simply by specifying the name of a tool on the system path when configuring your external tool launch configuration.
Reconcile control in the Ant editor
You can now turn off the automatic background reconcile for the Ant editor. This improves typing performance for buildfiles with numerous "large" imports. The Ant editor outline and internal data structures will be resynchronized automatically when the editor is saved (or when the reconcile is toggled back on).
The above features are just the ones that are new since the previous milestone build. Summaries for earlier 3.1 milestone builds:
New for Eclipse 3.1 milestone build M1 (August 13, 2004) New for Eclipse 3.1 milestone build M2 (September 24, 2004) New for Eclipse 3.1 milestone build M3 (November 5, 2004) New for Eclipse 3.1 milestone build M4 (December 17, 2004) New for Eclipse 3.1 milestone build M5 (February 17, 2005) New for Eclipse 3.1 milestone build M6 (April 1, 2005)