Eclipse software-development environment in the firing line
The Eclipse framework is starting to make its mark as a competitive, competent, and well-supported environment for software development.
By Robert Day
The Eclipse framework is starting to make its mark as a competitive, competent, and well-supported environment for software development. The question, however, is how widely it is being used, especially in applications outside of native Java development.
Eclipse was born in the enterprise world. In fact its birth came from a subsidiary of IBM called Object Technology International (OTI) in the late 1990s. IBM donated the technology that we now know as Eclipse to the open-source community in 2001, and founded a consortium to support the technology at the same time (Eclipse.org). This consortium became the not-for-profit Eclipse Foundation in 2004, which recruited top software-development companies as members. More than 150 companies use, develop, and maintain the Eclipse open-source technology.
An interesting feature of the Eclipse framework is its lack of adherence to any type of development or products. This is widely misunderstood, as Eclipse is perceived as everything from a Java IDE to full-fledged stand-alone development environment. The reality, however, is that Eclipse is an open framework that allows software tools for any purpose to plug in, providing the building blocks and infrastructure to create an environment for doing anything that users require.
As such, it is now widely used as a platform for doing native development (in any language), Web design, service-orientated-architecture (SOA) design, and embedded-software design. Eclipse has a standard look and feel provided by the framework, and also rules and tools to help build consistent plug-in tools. Among the key features of Eclipse: the framework itself doesn’t change regardless of what is plugged into it; several tools can plug in simultaneously and accessed without leaving the Eclipse environment; and the look and feel of the plug-in tools are relatively consistent regardless of what function they are doing.
The benefit of these features to the users is greater productivity, as they do not have to learn new interfaces continuously, they do not have to keep swapping from one environment to another, and all the tools required through the whole development lifecycle are available in one environment.
This is all good and compelling for embedded-software developers, who now at last have one open environment into which they can plug all their embedded-software tools. This only can take place, however, if the embedded-software vendors also can see good business in bringing their proprietary tools into an open framework. Eclipse helps here, too.
First, the open-source framework and projects are licensed and governed by the Eclipse Public License (EPL), which allows commercial vendors to use and distribute the open-source components and build commercial products on top of them without having to put the proprietary code back into the open source.
Second, Eclipse offers examples of plug-in tools and environments that can be used as building blocks and integration points for commercial products. There are 10 top-level projects that offer usable environments for doing different types of development. There are also more than 40 subprojects that are designed to do more specific tasks (often linked closely to a top-level project). There are also projects that are either well suited to, or specifically designed to support, embedded-software development.
The C/C++ Dev Tools (CDT project) is the basis of many Eclipse-based embedded-software development tools. The project uses the Eclipse Platform and corresponding project navigator as its IDE, and includes a build-and-make GUI that includes the GNU C/C++ compilers and allows for the easy connection to other embedded cross compilers. A C and C++ context sensitive editor is included, and for embedded debug there is an Eclipse-based GUI on top of the GNU GDB debug engine, enabling interaction between edit, build, and debug of embedded software. As this project is used as a plug-in perspective to the standard Eclipse platform, it is easy for other tools to be “plugged-in” and make a full embedded-systems development environment taking advantage of the benefits of open-source for many of the common build and debug elements.
The Device Software Development Project (DSDP) is a relatively new project that is looking at many of the aspects of debugging an embedded system. Initially, DSDP focuses on building infrastructure for Target Management, Device Debugging (DD), Mobile Java (MTJ), mobile Linux (TML) and Embedded GUIs. The first releases of the target management and device debugging will be released in the “Europa” release of Eclipse this summer. DSDP also encompasses the Embedded Rich Client Platform (eRCP) that is bringing out a version of the Eclipse platform that would be suitable for actually running on an embedded system, providing a Java-based platform on which to run embedded applications.
The Test and Performance Tools Platform (TPTP) is not specifically aimed at embedded-systems development, but offers some interesting plug-ins and example programs that can help show and utilize embedded test and performance software, and even act as an example front-end GUI for these embedded specific products.
The majority of embedded-RTOS and embedded-Linux vendors now use Eclipse as the basis for their development tools. This gives the embedded-systems developers a degree of flexibility when it comes to looking at what RTOS should be used for which project. The same Eclipse framework can be used, and the relevant development tools for the RTOS of choice are then brought in as an integrated plug-in. The more integrated the tool, the more the look and feel will be consistent with other Eclipse plug-ins.
The Luminosity embedded tools from LynuxWorks are based around the Eclipse framework and CDT project, and offer advanced debugging for the LynuxWorks operating systems.
Where life really gets interesting is at the intersection of embedded and enterprise-which the Eclipse framework is particularly well suited to. A couple of interesting examples show how the power of the Eclipse framework and the momentum that it has in both industries can benefits today’s developers of complex software systems.
The embedded software development lifecycle shares many aspects that are common with enterprise developers, and to that end the embedded developers can use the Eclipse framework as a common link for these common tasks. Examples include version management, high-level requirements and design tools, code analysis, code editors and native execution environments. None of these tools have any embedded specifics, but all of them come as Eclipse plug-ins. So, they can be called directly from the same environment as the embedded development tools, without the normal integration hassles that are found with proprietary GUIs and IDEs.
Many companies (especially in aerospace and defense) have embedded development and native systems in the same project that need to communicate with each other. The Eclipse platform allows native and embedded development system¸s to reside in the same IDE, allowing engineers a greater degree of harmony and consistency of tools when these two worlds meet. It also offers the interesting concept of mashing together the two worlds-having one perspective in the Eclipse framework that offers a view of both the embedded and enterprise systems that need to communicate with each other.
An interesting example of how the Eclipse framework is used in a native application for the Department of Defense is available at www.eclipse.org/community/casestudies/proteus.pdf.
Robert Day is vice president of marketing for LynuxWorks Inc., a developer of real-time software and software-engineering tools in San Jose, Calif.