The famed science fiction author Isacc Asimov wrote a number of novels called the Foundation series. It is about a grand scheme started by Hari Seldon whose ultimate goal is the success of the human race. This is done by creating two Foundations. The First Foundation is based on technology and is known to all. The Second Foundation is based on Seldon's theory of psychohistory. If you have not read the series then I will not spoil it for you, but there is yet a third factor at work. It is definitely great science fiction.
Back in the real world, we have the latest release from the Eclipse Foundation. Its goals are not as ambitious as Hari Seldon's, but for a Java application that started out as an integrated development environment (IDE), Eclipse has grown to encompass a wide range of uses. Its affect on developers and vendors is remarkable, moving it up to the level of Linux and the Apache web server, two other significant open source projects.
For those unfamiliar with Eclipse, it is an open-source project that came out of work done by IBM. It is a Java application initially targeted at Java development, but it has since grown into a platform for any programming language. In fact, the C/C++ Development Tool (CDT) is now in its 2nd release while Eclipse is on its 3rd. The two will now be released in synch with each other. This is different from the past.
A major part of Eclipse's appeal is its plug-in architecture. This allows features like the CDT to be added and even used in conjunction with other plug-ins like the original Java development tool (JDT).
The latest release of Eclipse incorporates a number of enhancements that I take a closer look at. These include integrated graphic support of Swing and SWT, the Rich Client Platform, and, of course, CDT 2.0.
Swing on SWT
The Java graphic frameworks Swing and SWT (software widget toolkit) had been at odds in the past. SWT was developed by IBM as is the basis for Eclipse, while Swing was developed Sun. With the release of Eclipse 3.0, SWT and Swing can play nicely together (see figure).
Swing and SWT each have their advantages, but the ability to combine the two should facilitate a wider variety of plug-in and Java application development. It also opens up Eclipse to use widgets from Swing libraries.
Bigger and Better
Probably the biggest improvement to Eclipse is the move to a multi-threaded user interface. I definitely found Eclipse to be more responsive, especially when initiating time-consuming actions such as project builds.
The overall architecture has been reworked to handle very large number of plug-ins, as well as a large number of files within a project. As Eclipse has grown in popularity, the number of plug-ins available has skyrocketed, and developers with major projects are starting to move to Eclipse. This new support was necessary to handle this growth. Eclipse should be able to handle thousands of plug-ins and projects with thousands of files.
JDT and IDE Improvements
Eclipse started as an IDE (Integrated Drive Electronics) for Java, and the JDT continues to grow. There have been significant improvements in code refactoring and folding. For example, the refactoring menu is now context sensitive.
There has been some fine tuning in other areas as well. Additional controls are now available to disable reporting of specific Javadoc errors. The automatic name resolution within an edit window now allows creation of a constant for a name that cannot be resolved. There are even additions for easily converting single statement into blocks for use with statements like "if" and "for".
Another useful feature deals with JUnit test. The static setUpTest method has been added so test-specific set-up and tear-down can be performed.
Eclipse is now based on OSGi Service Platform (initially known as the Open Services Gateway Initiative). This provides a standard runtime for Eclipse. I also think it is key to the success of the Rich Client Platform, because it allows OSGi services to be easily supported in applications based on RCP.
The addition of the CDT to Eclipse was significant for embedded development, whose ranks typically employ C or C++. CDT 2.0 moves Eclipse onto the same level as existing C/C++ IDE toolsets. This version gains the advantages of improvements for the JDT, including support for a large number of plug-ins and large projects. Likewise, code refactoring and search capabilities are available to C/C++ developers.
The managed build performance and ease of use has improved significantly to the point where it will be preferred over the use of static make files. Debugging performance has been improved especially for remote debugging with slow connections, a common occurrence with embedded development. Other changes include the ability to filter out system threads.
Finally, the CDT application programming interface (API) has been set and documented. International text support has also been included with this rendition of the CDT.
What is Hyades?
Hyades is an automated software quality (ASQ) evaluation framework. In other words, quality control and testing. The Hyades project is designed so plug-ins for this type of work can be added to an already impressive development tool. Plug-ins would include features like tracing tools, monitoring software, and test generation, loading and verification tools.
Hyades is related to the Unified Modeling Language (UML), Meta Object Facility (MOF) and the UML 2 Test Profile (U2TP). These are part of the Eclipse Modeling Framework (EMF). These are designed to integrated model-based testing often found in large projects. Hyades supports a range of other test-related facilities, although the current direction leans heavily in the direction of UML.
As is, Hyades provides log processing facilities. The real power will come as more plug-ins become available for the hooks provided by Hyades.
Rich Client Platform (RCP)
I have written about Eclipse and its potential use as an application framework in a number of reports, including: Eclipse: IDE Or Application Platform? (#5599, August 18, 2003), Anatomy Of An IDE (#3376, May 12, 2003), and Eclipse: Write Once, Run Everywhere Platform (#6954, December 18, 2003). Finally the RCP is formalized.
The idea behind RCP is that Eclipse is actually a very thin framework that gains its development features through the addition of plug-ins. Change the plug-ins and you get a new application. Strip down the plug-ins with the standard version of Eclipse and you can get a very simple IDE. Both offer significant benefits. For example, many 8- and some 16-bit tools are designed to be simple and easy to use. Eclipse can provide the basis for such a tool while allowing a more sophisticated version to be created simply be including those basic plug-ins within a larger set of plug-ins allowing a developer to migrate to a more complex development tool.
The RCP simply formalizes something that some Eclipse developers had already been doing. Eclipse has a number of plug-ins that can be useful to applications in general, like editors and file browsers. It also provides a very sophisticated plug-in environment that allows a modular Java application to be built. This is just the type of platform an embedded developer might want to build on because it does not necessarily rely on a complex user interface in addition to the application. Likewise, there is no requirement that a user interface even be part of the system making it suitable for headless or client/server applications.
Applications are already being developed using the RCP. It may pay to give the RCP a closer look, especially for embedded applications that could use a sophisticated remote component.
Will The Foundation Survive?
The Eclipse Foundation is definitely into technology. While it is changing the views of developers, it is unlikely that this Foundation will try to shape the world the way Asimov crafted his. Eclipse will continue to grow. It's impact on embedded developers has already been significant, and it's influence can be expected to grow. The plug-in architecture allows for experimentation within a professional framework that will hopefully lead to new and improved development tools that might otherwise be impossible or at least improbable without Eclipse.
Take a look at Eclipse if you have not already. It's free from the Foundation's website. Custom versions are also available from a range of RTOS, IDE, and plug-in vendors. This list is extensive so check out the Eclipse website for details.
For me, Eclipse has been great. I have been able to check out a number of Eclipse-based tools more quickly than if each tool were built on its own unique environment. It allows me to concentrate on the differences. This is equally beneficial for developers as well since familiarity with this common platform allows easy migration to other tools as well as incorporation of Eclipse plug-ins into their current toolset.
By the way, if you like science fiction then check out some of Anne McCaffrey's books. I just picked up the latest in the "The Dragonrider's of Pern" series.
Eclipse plug-in vendor list
Info on Isaac Asimov