Meet Eclipse, Page 2
More than IDE
After visiting the downloads page, you may have noticed that there is more to Eclipse than just the SDK. Instead of clicking the prominent Eclipse SDK 3.1 link, go to the Other downloads for 3.1 page and you will find that each release build consists of a rather large number of deliverables.
First, there is the SDK, which consists of the core platform, Java Development Tools (JDT), and the Plugin Development Environment (PDE). As I mentioned earlier, its purpose is to provide developers with all tools necessary to build Java applications as well as extend Eclipse itself. The ability to use Eclipse to extend itself (specifically provided by the PDE) is very powerful, and you will examine it in much more detail in a later installment of this series. Another way to look at the SDK is that it contains everything from the main Eclipse project (you will take a look at other projects shortly). You will notice that there is a separate downloadable archive file for each supported platform. In addition, there are also source build packages that can be used to build the SDK from scratch (with the provided instructions).
There are some deliverables that are not packaged with the SDK and must be downloaded separately, namely the documentation in PDF form (an on-line version is provided as part of Eclipse's Help system); automated JUnit plugin tests, which can be used to verify the build (this is especially useful when building your own, customized distribution because all official distributions must already pass all unit tests before being published); the Release Engineering (releng) plugin, which aids in building customized releases; and finally the Example plugins, which serve as an excellent starting point for learning how to extend Eclipse. There's also FTP and WebDAV support, which is only needed if you plan to use these services, so that too must be downloaded separately.
If you don't need the entire SDK, you can download only a specific subset of it. There's the RCP Runtime Binary, which can only be used as the target platform when developing RCP applications (more on that later), and the RCP SDK (same as the runtime binary, but with source code included). The Platform Runtime Library is the core "tool platform" and can be used as the foundation for your own Eclipse-based tools—it does not contain the Java Development Tools or the PDE. Again, the Platform SDK includes the corresponding source files. The JDT Runtime Library and SDK provide only the runtime binaries and binaries with sources, respectively, for Java Development Tools. Likewise, the PDE Runtime Library and SDK do the same for PDE. Lastly, there are platform-specific releases of the Standard Widget Toolkit (SWT), which can be used to build standalone applications that don't need the entire Eclipse platform.
But what about all those "projects" listed on the downloads page? In fact, Eclipse consists of several projects, most of which have their own sub-projects. To learn more about them, you can click the projects link on the left-hand side. Generally, you will find that some of these projects have large corporate sponsors, while others are supported solely by individual volunteers and enthusiasts. Why and how these projects are structured the way they are should be clearer once you've read about the Eclipse platform architecture and the Eclipse community. For now, it'll suffice to say that there is a formal project proposal process and anyone with a good idea, large or small, is encouraged to participate.
The main Eclipse Project delivers what you already know as the SDK—the core platform, Java Development Tools, and PDE. Formally, its mission is to realize the vision of Eclipse as an industry platform for integrated tools as well as rich client applications. As the oldest Eclipse project, and also delivering the components that Eclipse is best known for, its structure and development process serves as an example for other projects to follow.
The Tools Project oversees the development of a number of mature tool technologies that build upon the Eclipse platform. It consists of several sub-projects, each of which deserves not an article, but a book of its own, so I will not go into much detail here. They are the Visual Editor, GEF, EMF, UML2, C/C++ IDE, and COBOL. The Visual Editor project delivers a GUI builder framework for Eclipse. An included reference application can be used to rapidly develop SWT as well as Swing user interfaces. The framework's ultimate goal is to provide the foundation for development of non-Eclipse GUIs. The Graphical Editing Framework (GEF) supports the creation of rich graphical editing tools, such as diagrams, graphs, figures, and other visual components. The Eclipse Modeling Framework (EMF) provides a powerful foundation and tools for creating application models. Its code generation tools support round-trip engineering, which eases code and model maintenance headaches while providing rapid application development capabilities. The UML2 project delivers an EMF-based UML2 meta-model, which can be used as a basis for developing UML modeling tools. The C/C++ and COBOL IDEs provide their respective equivalents of the Java Development Tools.
The Technology Project is a kind of incubator for new ideas, tools, and core platform enhancements. Its list of sub-projects is rapidly growing. After reaching a certain level of maturity, some projects "graduate" into the Tools Project or become part of the Platform itself. Others may be merged together as their concepts evolve. Currently, there are 19 approved sub-projects and nine proposals, so I won't mention each separately. For their detailed descriptions, please visit the Technology Project home page.
The Web Tools Platform (WTP) Project aims to provide a standards-based platform for developing vendor-neutral Web application development tools. It is a relatively new project whose first release is widely anticipated. The project was jump-started by an initial contribution from IBM, most of which came from its WebSphere Studio product line. Its two sub-projects are the Web Standard Tools (WST), which focus on tooling for Web-based applications in general, and J2EE Standard Tools (JST), which specifically target J2EE application development.
The Test and Performance Tools Platform (TPTP) Project provides an open platform for the development of testing and performance tools. Its sub-projects are the Platform, Monitoring Tools, Testing Tools, and Tracing and Profiling Tools. What was initially IBM's Hyades project is now a multi-vendor effort involving IBM, Intel, Compuware, CA, Scapa, SAP, Fokus, and OC Systems.
The Business and Intelligence Reporting Tools (BIRT) Project addresses the need for common reporting features in Java. Although it is also a fairly new project, it already has the first official release behind it. Currently, it provides an Eclipse-based Report Designer, Report Engine, and Chart Engine, and produces output in HTML and PDF.
The latest addition to the list of approved top-level projects is the Data Tools Platform Project (DTP). Its mission is to foster the creation of data-centric tools, frameworks, and applications, such as data source management consoles and browsers. It was established as a response to the community's demand for these technologies.
This list will likely grow in the near future as new projects are proposed and approved. Additionally, there is a number of very useful open-source projects based on Eclipse that may be hosted elsewhere and are not formally a part of the Eclipse offering.