Technology has a definite cycle. After a decade of dominance by thin clients, rich-client technology is making a comeback. Numerous organizations are building their applications as rich clients and many of them are basing their applications on the Eclipse Rich Client Platform (RCP). The term “rich client” implies first that the application provides the user with a rich experience; second, it implies that the application is a client for some server. While it is not necessarily the case that a rich client has a corresponding server component, this is often the case.
Rich clients are in many ways comparable to fat clients. Both provide the user with a native desktop experience, presenting information and functionality for the user that is difficult, undesirable, or impossible to deliver using thin-client technology. However, rich clients provide so much more. Where fat clients tend to be large monolithic applications that are difficult to deploy and update, rich clients are lighter weight and based on a component model that makes them relatively easy to deploy and update. Historically, fat clients have been built to be platform specific; today’s rich-client technologies expose the power of the underlying platform, but hide away the details of that platform, allowing the developer to focus on the task rather than idiosyncratic details of any particular platform.
Rich clients also tend to be more scalable than fat clients. Traditionally, fat clients connect directly to a database. This limits the environments where fat clients can run (firewalls may restrict connections from the fat client to the database) and the scalability of the application (the total number of connections from the clients to the server) may be limited by the database. Rich clients tend to leverage application servers that are responsible for making connections to the database. This sort of configuration is very flexible (firewall friendly) and is highly scalable. Of course, there is nothing in the technology that necessarily limits fat clients from communicating with an application server, it’s just that in the heyday of fat-client technology, application servers didn’t exist like they do now.
Rich clients also tend to be more scalable than fat clients. Traditionally, fat clients connect directly to a database. This limits the environments where fat clients can run (firewalls may restrict connections from the fat client to the database) and the scalability of the application (the total number of connections from the clients to the server) may be limited by the database. Rich clients tend to leverage application servers that are responsible for making connections to the database. This sort of configuration is very flexible (firewall friendly) and is highly scalable. Of course, there is nothing in the technology that necessarily limits fat clients from communicating with an application server, it’s just that in the heyday of fat-client technology, application servers didn’t exist like they do now.
Eclipse RCP offers the application developer:
- A consistent and native look and feel for applications and features
- Common application services such as window management, update management, help, and selection management
- A native look and feel, leveraging real platform widgets on Windows, Mac OS X, Linux, Solaris, HP-UX, AIX, and embedded devices
- A standardized component model
- Pervasive extensibility
- Integrated update mechanism
- First-class development tools (the Eclipse Software Development Kit (SDK) is a world-class software development environment)
Although it is actually an inappropriate use of the term, Eclipse RCP can be considered middleware for building rich-client applications. It provides the infrastructure that your application needs, which allows developers to focus on core application functionality not the plumbing. Don’t reinvent the wheel: use Eclipse RCP.
The Eclipse RCP is composed of numerous components, and each component contributes to some part of the overall functionality of the environment. In fact, almost all of the Eclipse RCP is made of components; every part of RCP, with the exception of a small amount of bootstrap code is a component. Components are more commonly known as plug-ins in Eclipse circles (or bundles in OSGi terminology). The term “plug-in” implies that the functionality contained within the component is somehow second class, or an add-on to built-in functionality. This is not the case; Eclipse RCP treats all plug-ins as equals and there is no explicit notion of built-in versus custom. The plug-ins that you create to contribute your application’s behavior are run alongside those that make up Eclipse RCP.