Eclipse Europa Needs Some
The Eclipse project has matured as a solid IDE, but the latest version—Europa Release 3.3—is a bit rough around the edges.
By now, you have probably heard of Eclipse, and if you havent used it for yourself, you are likely to know someone who has. IBMs Object Technology International group released Eclipse as open source in 2001, and it has since matured into a premier development environment that is the IDE of choice for many professional software developers. While in most engineering offices the dominant platform continues to be Microsofts Windows, and the dominant development tool Microsofts Visual Studio, Eclipse has incrementally edged its way into the mainstream. It is now quite common to find Eclipse users interspersed among the coding masses.
The Eclipse community consists of more than 60 distinct projects, many of which are plug-ins that extend the capabilities of the platform. Updates from these projects are organized as yearly “simultaneous releases,” for which packages are bundled into separate tool kits. This years release, Europa, consists of five separate tool kits: Java, Java EE, C/C++, RCP and Eclipse Classic. The tool kits can be downloaded for free from the Eclipse Foundations Web site.
What I Reviewed
As a C/C++ developer with a Windows background, I primarily write embedded code for mobile platforms. So when selecting a package appropriate for my needs, I naturally reached for the C/C++ IDE from the Eclipse Web site and then installed it on an x86 computer running Windows XP.
After downloading, installing and building a few simple console applications, I used the Software Updates feature from the Eclipse Help menu to install the Ruby Developers Toolkit, or RDT. This essentially equipped me with all that I needed to develop, compile and test my production C code and to edit the library of Ruby scripts that I use for analyzing and formatting test data.
As is often my experience with open-source software, the “environment” did not work immediately after the initial installation—that is, it would not compile a simple C program. Eclipse is based on the GCC (GNU Compiler Collection) compiler, and the Windows version of the installer does not include the compiler in the standard package. This is an annoyance but is not insurmountable. The recommended GCC installations for Windows are MinGW (Minimalist GNU for Windows) and Cygwin. I opted for MinGW. After downloading and installing it—then manually setting up some environment variables, then rebooting, then selecting the “internal builder” for “builder type” in the project properties—I finally had Eclipse running and compiling code.
Even smart IT people do stupid things. Check them out here.
Needless to say, the installation procedure was rather unpolished, involving far more manual installation and configuration steps than a professional-grade application installer should require. There really is no reason why the installer on the Eclipse Foundations Web site shouldnt include all dependent packages (GCC) or why the default project options shouldnt be set in a way that will compile code (Internal/External Builder Type). Nothing leaves a more sour taste in a Windows users mouth than an application not working properly, or requiring additional manual configurations, after clicking finish on the installation wizards final panel.
If you have a Visual Studio background, one of the first things that takes some getting used to in Eclipse is the work space model. In Eclipse, the work space is closely coupled with the systems directory structure. In fact, a work space is defined by specifying a top-level directory that houses all its contents. Every subdirectory and file contained therein is, by default, part of the work space.
A work space can contain multiple projects, but the files associated with these projects must be organized into different subfolders. This constraint is somewhat annoying, as it dictates how you must organize the location of your source. For example, files shared among the projects must be kept in a folder that is included in every project, which may break some natural associations that those shared files have with other project-specific items. Comparing this with a Visual Studio paradigm, in which source files can exist wherever you want them to, any constraint imposed on your organizational method feels unnecessarily restrictive.
Why It Is Cool
Why It Is Cool
Eclipses most powerful feature is its extensibility: Because Eclipse is a broad collection of projects, there are a wide variety of packages available that plug into Eclipse and extend its capabilities. One example is the CVS client that installs with the standard package. Unlike other plug-ins, the CVS client is easily configured, and after a few simple clicks, it works properly and can be used to check out code from your favorite CVS repository. The interface is extremely easy to use, giving good visibility into the entire repository via a file navigator widget. Once projects are checked out locally, CVS features such as compare and commit are made available by right-clicking on the file icons in the work space navigator. The entire interface is integrated seamlessly into Eclipses front end, and it is implemented in a way that is far superior to other attempts at the same, such as SlickEdit 2007, which spawns a separate CVS interface window from a drop-down menu option. The Eclipse CVS client is easily one of the best such clients available for Windows today.
The Eclipse text editor is also a very polished component of the IDE. Its smart line selection and Auto Syntax Completion are similar to Slick Edit 2007 in many ways. Quick access to its menu of keyboard shortcuts is available through a pop-up that can be invoked by pressing Ctrl+Shift+L. This Key Assist feature gives a two-column overview of Eclipses standard editor features.
My favorite of these is Open Call Hierarchy, or Ctrl+Alt+H, which opens in the lower frame of the docked IDE layout. The call hierarchy of a selected function is displayed as an expandable tree, providing powerful visualization into your application. After discovering this, I found myself relying on it to quickly navigate through my source code layers and complex call stacks.
Other cool features are Move Lines (Alt+Arrow), which shuffles lines up and down, and Find Declaration (Ctrl+G), which lets you jump to the definition of a variable, structure or function.
Some of Eclipses default configuration choices are difficult to understand. For example, by default, the build command does not save all files prior to compiling. What developer wants to manually save each unsaved file he or she has edited prior to executing the build command? The option to enable this is not easy to find, either– from the Window menu, you have to select Preferences, then General, then Workspace. Then you have to check the appropriate box on the configuration panel to enable auto-save on build action.
Eclipse also defaults the builder type to External Builder, which, unless configured, does not work with the system GCC installation. To switch to the internal builder, you must select it through the project properties C/C++ build panel.
Dark Side of the Moon
While exploring the different options accessible from the menu bar, Eclipse twice hit run-time errors. And, in both cases, error dialog boxes popped up that required canceling. But error dialog boxes were only a harbinger of even more gruesome horrors.
After creating a work space, and adding a few projects to it, I installed the Ruby plug-in. After installing the plug-in, Eclipse did not open the previously loaded work space automatically, as it had done every time previously. Instead, I had to use the “import” feature to open the work space. But, upon doing so, Eclipse began recursively copying the entire work space contents into subdirectories. The result was an application hang in the import wizard and a long path containing copies, and copies of copies, of folders, source and project files. Worse still, the path length exceeded the Windows max path length spec, which blocked me from being able to delete the content.
Check out eWEEK.coms for the latest news, reviews and analysis in programming environments and developer tools.