Historically, development tools have been tied to a specific operating system. Yet, some vendors have seen success in building products that target multiplatforms. A new phenomenon, a modular open-source project called Eclipse, is now changing the way things work. In fact, it's forcing vendors of IDE tools to adjust their long-term plans to take advantage of, or compete with, Eclipse.
This doesn't mean that Eclipse will have an easy ride (Fig. 1). Well-established products like Wind River's Tornado, Green Hills Software's Multi, MetroWerks' Code Warrior, and Microsoft's Visual Studio will definitely give Eclipse a run for its money. They're optimized for the environments that they support and have a large following. Wind River's Tornado and Microsoft's Visual Studio dominate their target operating-system (OS) markets. For Tornado, it is Wind River's VxWorks users, and for Visual Studio, it is Microsoft Windows.
Products like Green Hills' Multi and MetroWerks' Code Warrior cover a range of target platforms. This includes various processors and OSs, such as Linux, VxWorks, and Windows. Developers prefer this multiplatform approach because their experience transfers well to new projects. This holds particularly true when the target OS remains the same but the underlying target hardware changes.
Eclipse is also target agnostic, and, like most integrated-development-environment (IDE) products, programming-language agnostic. Eclipse's Java roots also make it host agnostic. This is one place where Eclipse differs from most alternatives. Eclipse is written in Java, so a host platform must run Java to support Eclipse. On the other hand, most IDEs are written in C/C++. Therefore, the IDE is portable to most systems that support a C compiler. Unfortunately, this is only part of the host requirements. A graphical user interface is also necessary, so at this point, Java's platform portability will come into play. Eclipse requires SWT (Standard Widget Toolkit).
Moving an IDE from a Windows host to a different graphical environment like X-Windows on Linux can be daunting at best. It's one reason why most IDE vendors support a small number of host platforms, often limiting that number to one—Windows. This is also why the success of Eclipse is so important to the Linux realm. It's not surprising that Linux companies, like TimeSys, are utilizing Eclipse as their system-oriented IDE.
IBM uses Eclipse as the development tool for its WebSphere product line. This is actually where the Eclipse project started before being turned into an open-source project.
IBM had a long track record of building flexible IDEs, including those that support SmallTalk. The SmallTalk programming language didn't become as hot as C++ or Java. However, many features in the SmallTalk IDE system found their way into Eclipse, such as the ability to extend the IDE. IBM also uses Eclipse to cover a range of languages and target environments from Web servers to embedded Java applications.
Eclipse started out as a Java IDE implemented in Java. It was an alternative to Sun's successful Sun ONE (Open Network Environment) Studio. The two provide similar services and run on most systems that support Java. But, Sun ONE Studio uses AWT (Abstract Window Toolkit), while Eclipse employs SWT (Standard Widget Toolkit). Another big difference is that Eclipse supports a range of programming languages, including C/C++ and many OSs, while Sun ONE Studio specifically targets Java.
Requirements for IDEs are now much more demanding than in the past. At one time, a basic IDE included a text editor, a project build system, and a debugger. The current IDEs have the same core tools, but even the simplest IDE exhibits numerous enhancements that reflect today's development environment.
For example, many programming languages are used for embedded developments like C++ and Java. These have class hierarchies that can be presented in a tree structure, showing developers the capability of classes. Also, the graphical interface is often enhanced so that source code for a particular method or procedure within a class can be easily viewed. Some systems can even view code where the method or procedure is employed. As with many new IDE features, this approach performs actions that were manually handled by the developer by searching text files for a particular string. Having the IDE do the job often works better because it can take context information into account. For instance, a function foo for class X and Y will be different. A text search for foo finds all instances, but a context-sensitive search could isolate functions for class X and ignore those of Y.