Tuesday, June 24, 2008

Imminent Cosmic Collision: You and Eclipse Ganymede

The arrival of Eclipse's latest release (named, like other Eclipse multi-project simultaneous releases, after a moon of Jupiter: Ganymede) is upon us. It represents version 3.4 of the platform what I'd call the "core" set of tools on top of it, and I applaud Eclipse for not succumbing to the version numbering frenzy that most vendors seem to follow, where new releases with only minor or cosmetic changes are given entirely new major version numbers. I've been using the milestone and release candidate builds for a couple of months now, and here are some of the items that I've noticed (the good with the bad).
  • p2, the replacement for the much-maligned Update Manager (among other things), is a big step in the right direction. Up until the RC builds it had some pretty serious UI and error-handling problems, but it is now a pretty good front-end to the complex problem of managing an open-ended platform of plugins and update sites. I think there is still a lot of room for improvement and enhancement in the UI, but what will ship with 3.4 is certainly good enough and a LOT better than the old update mechanism (in terms of both underlying architecture and user experience). I still think it is too complicated and subtle for inclusion in the average RCP, but for developers (the primary audience of Eclipse applications, including the Java IDE), it will be welcomed with open arms.

  • Plug-in Spy is a very handy tool for those of us who develop Eclipse-based applications (or for anyone who is trying to learn how Eclipse is put together and/or how to mimic what you see in the "standard" plugins). Just hit Alt+Shift+F1 and a convenient view will appear giving lots of details about current state of active Part (View or editor), such as the class that implements it, he plugin that contributes it, and lots of other details.

  • Mark Occurrences has been enhanced to use different colors for write occurences and read occurences. This is a small thing that makes a big difference.

  • The Error Log view has been vastly improved. Not only is it now packaged as a separate plugin/feature that is more easily included in RCP apps, but it now has the ability to group messages by various criteria, provides a "quick search" box for filtering the logs, and allows you to easily view the logs of workspaces that have been used when launching an Eclipse app to test/debug plugins and RCPs. Very nice!

  • "Rich" hovers/tooltips. This is a broad improvement to many of the hover/tooltip lightweight windows that Eclipse pops up to give you information about elements under the cursor.
    • The Javadoc hover is really nice now - links work seamlessly, it is easily resizable, and it has a great little toolbar with actions like navigation (back and forward), transferring to the Javadoc View, and opening the source code for the thing whose doc is being viewed.
    • The debug hover is also much improved, letting you explore the contents of rich objects without using a separate View.
    • My favorite hover enhancement has to be the hover for errors and warnings. It now presents hyperlinks to Quick Fix options, right there in the hover window. Before, you had to manually invoke Quick Fix, but now my hands don't have to find the awkward keyboard combo of Ctrl+F1; I just hover over a problem marker and click the link for the fix I want. Very nice!

  • Performance. The UI is as snappy as ever, I don't notice and decrease or improvement there. There is reportedly a lot of internal improvement made to the JDT compiler to take advantage of multi-core and multi-CPU hardware, especially when running on a Java 6 JVM. I did seem to notice some improvment in Java build times. Startup time seems to be slightly better than 3.3, but that is hard to really judge because of all the variables that OSGi, p2, and the list of 3rd-party plugins that might be installed, can introduce.

  • Collapse-all button for the Projects view. OK, so this one is only on my list because I contributed the idea and code for it :-) Still, it is something that I have longed for for quite a while: in the Projects view (usually used in the Java Browsing perspective), there is a new button to collapse the entire tree (Collapse-All), similar to what you find in other tree-bsaed views like Navigator, Package Explorer, etc. Here's the bug report for the curious.
Overall, I am very pleased with this release and applaud the various project teams for their accomplishments over the past year. I even can brag that a piece of my own code has finally found its way into an official Eclipse release, so that makes it especially cool. :-)
The next challenge will be getting Skyway Visual Perspectives working with 3.4 and, eventually, taking advantage of the new features and API that are available.