Eclipse Rich Client Platform: An Important Strategy for the Eclipse Foundation
While the Eclipse platform is designed to serve as an open tools platform, it is architected so that its components can be used to build just about any client application. The minimal set of plug-ins needed to build a rich client application is collectively known as the Rich Client Platform.
Applications other than IDEs can be built using a subset of the platform. These rich applications are still based on a dynamic plug-in model, and the UI is built using the same toolkits and extension points. The layout and function of the workbench is under the control of the plug-in developer in this case.
“When we say that the Rich Client Platform is the minimal set of plug-ins needed to build a platform application with a UI, we mean that your application need only require two plug-ins, org.eclipse.ui and org.eclipse.core.runtime, and their prerequisites. However, rich client applications are free to use any API deemed necessary for their feature set, and can require any plug-ins above the bare minimum. Examples include the Help UI, and the Update Manager,” officials at the Eclipse Foundation say.
An RCP is usually made of the following components:
A core
A standard bundling framework
A portable widget toolkit
File buffers, text handling, text editors
A workbench (views, editors, perspectives, wizards)
Essentially, an RCP concept brings a framework to the world of Java desktop applications, says Stephen Lum. An RCP provides a skeleton/shell of an application, along with a module-based API that enables you to build your own application. The RCP does all the plumbing, such as creating a good design for adding menus, toolbars, different views, etc. Lum believes that the Eclipse RCP is also ideally suited to leverage Spring, a framework touted by Eclipse’s rival Sun Microsystems.
Todd Williams has justified the use of Eclipse RCP. According to him, a much better approach than rolling your own application framework would be to find one that could fulfill the design requirements while simplifying and accelerating project development. He has created a wish-list for such a framework and finds that Eclipse RCP fulfills almost all conditions. The list includes:
Implements a clear, consistent, and cohesive architecture
Supports development and execution on all the major desktop platforms (Windows, Mac OS X, Linux, QNX Photon, Pocket PC, HP-UX, AIX, Solaris)
A snappy UI response that maintains the platform's native look-and-feel
Provides a large variety of widgets, both standard (that is, button and checkbox) and extended (that is, toolbar, tree view, and progress meter)
Provides extensive text processing that includes editors, position/change management, rule-based styling, content completion, formatting, searching, and hover help
Supports using platform-specific features (that is, ActiveX) and legacy software, if desired
Enables branding the application
Contains an integrated help system
Manages user configuration and preferences
Supports remote discovery and installation of application updates
Created and backed by respected software companies experienced in creating object oriented frameworks
Supports internationalization and national language translation
Designed for flexibility with natural features for adding new functionality
"Pay" only for what you need—base frameworks can be easily reduced as well as extended to tailor capabilities to precise requirements
Ian Skerrett, director of Marketing at the Eclipse Foundation, feels it is important to be able to describe when someone should consider using Eclipse RCP, instead of alternative technologies. “In the space of platforms for rich user applications, there seems to be a number of potential solutions, including Eclipse RCP, AJAX, MS .NET and Flash. At the high level, I think there are a couple of decision points that lead you to a different technology alternative,” he says. Ian’s decision points include:
Organization Culture: Is your organization considered a Microsoft or Java shop? Are most of the programmers trained on .NET or in Java? Do you have a strategic direction to develop all applications on Java or .NET. An organization that is 100% Microsoft probably won't/shouldn't consider Eclipse RCP. If it is 100% Java, then Eclipse RCP would have a lot to offer.
Type of End User: The end user could be a casual one who uses the application occasionally or a power user who ‘lives’ in the application. Also integration with other applications on the desktop is often important. Here, Eclipse RCP will be a big win.
Type of Application: There are different types of applications that are better suited for Ajax, Flash or RCP. At a very simplistic level, there are three types of applications: content delivery, i.e. portals, dashboards, where presentation is very important, collaboration/workflow applications, where context and tasks switching is important and transactional applications. For the content delivery, Ajax and Flash seem to be better suited for presentation and ease of content delivery. However, when it comes to sophisticated workflow or collaboration, the ability to work offline and have persistent data is pretty important. Here RCP is better suited.
In the end, however, seamless integration and faster, more efficient development is what is desired by developers and ISVs. Eclipse RCP is on the right path to reach the pinnacle—not by being the leader, but by being the constant facilitator.