Some people think that because Eclipse is better than Visual Studio, it must be the best there is. I've made a table out of the Eclipse 3.2 M4 "New and Noteworthy" document which lists new features and describes which competitor already had that feature. Some features are indeed new, and are not implemented by any other product; however, most "new" features were already present in existing tools and frameworks (mainly in Swing and IntelliJ IDEA).
You may want to read the original Eclipse 3.2 M4 New and Noteworthy.
Eclipse Feature (from New and Noteworthy document) |
My Comparison | |||||||||||||
Platform UI |
||||||||||||||
[omitted eclipse-specific features] |
||||||||||||||
JFace field assistance |
JFace introduces new support for assisting the user in completing fields inside dialogs and forms. The org.eclipse.jface.fieldassist package provides classes that let you decorate arbitrary controls with images and corresponding hover text. These can be used for purposes such as marking required fields in a dialog, showing field-based error conditions, or showing content-assist prompts. The package also allows you to install content proposals on a control, including a popup dialog with content proposals, secondary popups for further information, and options for invoking proposals explicitly or in an automatic (type-ahead) style. Try it out and get your requests in before the M5 API freeze! |
(Swing does not provide an automated framework for such popups and tooltips.) | ||||||||||||
User Assistance |
||||||||||||||
[omitted eclipse-specific features] |
||||||||||||||
SWT |
||||||||||||||
HSB color support |
A color can be created by specifying the hue, saturation, and brightness. In addition, for a given color, the hue, saturation, and brightness values can be queried. For an example, see the SWT snippet |
HSB support has been in AWT since Java 1.1, and is present in the Swing color chooser. See Color.HSBtoRGB | ||||||||||||
|
||||||||||||||
StyledText alignment, indentation, justification |
StyledText now supports indenting, justifying and aligning text. For an example, see the SWT snippet |
Swing has supported indentation and justification since Swing 1.0 in JDK 1.1. See ParagraphConstants for example. | ||||||||||||
|
||||||||||||||
Embedded objects in StyledText |
StyledText now allows you to embed objects such as images or widgets inside the text. Objects wrap with the text. For an example, see the SWT snippet |
Any Swing or AWT component can be embedded into text components since Swing 1.0 in JDK 1.1. See JTextPane.insertComponent | ||||||||||||
|
||||||||||||||
Background image |
A background image can be set into a control. In addition, the background can be inherited by child widgets such as labels. For an example, see the SWT snippet |
(Neither Swing nor AWT provides a method to easily set a background image.) Any Swing component can be given a background image by overriding the component class. |
||||||||||||
|
||||||||||||||
Native image loading |
The constructor |
(AWT and ImageIO do not use native image loading calls.) | ||||||||||||
|
||||||||||||||
Dragging text |
If the For an example, see this SWT snippet |
Swing text components have supported drag and drop since Java 1.4, released 3 years ago. | ||||||||||||
Team/CVS |
||||||||||||||
[omitted - I am not familiar with CVS or either IDE's support for it] | ||||||||||||||
JDT Core |
||||||||||||||
Support for secondary types |
Secondary types (i.e. top-level types defined in a file with a different name than the type) are now found by the reconciler, code assist, etc. | This language feature has been supported in almost every IDE since their first releases. | ||||||||||||
|
||||||||||||||
Completion on labels |
Code completion is now available on labels in break and continue statements. | Label completion is present in IntelliJ IDEA 5.0. | ||||||||||||
|
||||||||||||||
CamelCase support in code completion |
Code completion now supports CamelCase patterns. For example, completing on "NPE" will propose "NullPointerException". This support can be enabled or disabled using the Java > Editor > Content Assist > Match CamelCase proposals preference. | Present in IntelliJ IDEA 5.0, released six months ago. | ||||||||||||
|
||||||||||||||
Support for Java-like extensions |
Files with a file extension other than '.java' and containing pure Java code are now supported. Adding a Java-like extension is done using the General > Content Types > Text > Java Source File preference. | All file types are configurable in IntelliJ IDEA for many years. | ||||||||||||
Resources |
||||||||||||||
Linked resources anywhere |
You can now create linked resources at any depth within your projects. This allows you to put resources from different places in the file system anywhere you like in the project structure, including below other linked resources. | (IntelliJ IDEA does not support linked resources in this way.) | ||||||||||||
JDT UI |
||||||||||||||
Clean Up wizard |
The Code Clean Up wizard has been extended with the following new options:
Select a project, package, or file and start Source > Clean Up... to start this wizard. |
"Clean up" is not present in IntelliJ IDEA. Equivalent inspections & quick fixes are available in the editor as warnings, and in batch mode as reports. These inspections have been present since various versions of IntelliJ IDEA. | ||||||||||||
|
||||||||||||||
Surround-with template |
The existing Surround With Quick Fix is now aware of variables that need to be pulled out or made final. Select the lines to surround (full line selection required!) and press Ctrl+1 to see all templates. Note that you can add your custom 'surround-with' templates on the Java > Editor > Templates page. All the template needs is a${line_selection} variable. |
This feature is partly present in IntelliJ IDEA: Surround With will extract variable definitions from surrounded code if necessary, but will not make variables final. The feature has been present for several years. | ||||||||||||
|
||||||||||||||
Content Assist remembers right hand sides |
Content assist (Ctrl+Space on most platforms) remembers the types most recently used in similar situations. For example, if you always assign |
IntelliJ IDEA orders or preselects by usage in all completion and import popups since version 4.0, released 2-3 years ago. | ||||||||||||
|
||||||||||||||
Rename Type updates similarly named elements |
The Rename Type refactoring has been extended to rename variables and methods with names similar to the renamed type. Name matching can be configured with a new option dialog. There is also a new preview page which shows all affected elements. | This feature is partly present in IntelliJ IDEA: it offers to rename variables and getters and setters, but not all methods. | ||||||||||||
|
||||||||||||||
Delete Package is now hierarchical |
Deleting a package now automatically removes empty parent packages. A new option in the delete confirmation dialog allows deleting subpackages as well. | Recursive deletion has been present in every commonly used filesystem, file explorer, and IDE, for over 20 years. | ||||||||||||
|
||||||||||||||
Refactoring-aware JAR File Import/Export |
The current refactoring tools of JDT have been extended to support applying refactorings across different workspaces. Refactoring information can now be exported using the JAR Export Wizard. This feature can be enabled on the first page of the JAR Export Wizard by checking the option Annotate JAR file with refactoring information. A corresponding JAR Import Wizard is available as well, guiding the user through the process of updating an existing version of a JAR file with a new one, executing all refactorings performed between the two versions of a JAR library. This works for the following refactorings:
|
(Reapplying a refactoring log is not present in IntelliJ IDEA.) | ||||||||||||
|
||||||||||||||
Javadoc view and tool tips from attached Javadoc |
The Javadoc view and the Javadoc hovers now extract the information from the attached Javadoc for libraries that do not have source attached. | IntelliJ IDEA has extracted Javadoc from generated HTML since version 4.0, released 2-3 years ago. | ||||||||||||
|
||||||||||||||
Java Outline view and Quick Outline for Java files that aren't in the workspace |
The Java Outline page and the Quick Outline can now show the outline for external Java files and Java files from repositories. | (IntelliJ IDEA does not offer outlines for files outside the project.) | ||||||||||||
|
||||||||||||||
Smart caret positioning in dialogs showing Java names |
Text fields for editing Java names now support smart caret positioning as you know it from the Java editor.
Ctrl+Left and Ctrl+Right now stop at camel case boundaries inside a name. Their shifted equivalents extend the selection in small steps, and Ctrl+Delete / Ctrl+Backspace delete the next / previous part of a name.
|
IntelliJ IDEA has provided rich editing in dialogs gradually since version 3.0, released 5 years ago. Today, most code or symbols in dialogs are edited with a rich editor with camel case, completion, auto-import, and so on. | ||||||||||||
|
||||||||||||||
Quick fixes for annotations |
New quick fixes have been added to deal with Java 1.5 annotations:
|
(IntelliJ IDEA does not offer these quick fixes.) | ||||||||||||
Platform Runtime |
||||||||||||||
[omitted eclipse-specific features] | ||||||||||||||
Debug |
||||||||||||||
Execution environments |
You can now specify a JRE to use for running, debugging and building based on execution environment. An execution environment describes the capabilities of a Java runtime - for example, J2SE-1.4. The new Execution Environments preference page displays the JREs installed in your workspace compatible with each execution environment. JREs that meet the exact requirements of an execution environment are displayed in bold, and JREs that surpass the requirements of an environment are displayed in the default font. When more than one JRE is compatible with an execution environment, you can select a default JRE to use for that environment by checking it. A build path or launch configuration that references an execution environment is more portable than one that references an explicit JRE as a JRE's execution environment can be resolved independently of its name. Use the JRE tab or Edit Library wizard to specify an execution environment for running and building. |
(This JRE abstraction mechanism is not present in IntelliJ IDEA. JRE's must be specified manually.) | ||||||||||||
PDE |
||||||||||||||
[omitted eclipse-specific features] | ||||||||||||||
|
||||||||||||||
Structural compare and syntax highlighting for manifest.mf files |
When comparing two versions of a bundle manifest.mf file, the new structure compare viewer will let you easily see what headers have been added, removed or modified.
Syntax highlighting has also been added to the manifest.mf source page. Colors and fonts preferences can be set on the Plug-in Development > Editors preference page. |
(Structural compare is not present in IntelliJ IDEA.) IntelliJ IDEA supports syntax highlighting in manifest files through a free plugin. |
||||||||||||
|
||||||||||||||
Templates for launching arguments |
[omitted] | |||||||||||||
Update |
||||||||||||||
Install/Update enhancements |
[omitted] | |||||||||||||
|