Eclipse and Eclipse RCP
Eclipse RCP is a platform for building and deploying rich client desktop applications. The rich means "rich" user experience, It provides high-quality end-user experience, native user interfaces, high-speed local processing, rich UIs support such as drag-and-drop, system clipboard, navigation, and customization.An RCP application is a collection of plug-ins and a Runtime on which they run. An RCP developer assembles a collection of plug-ins from the Eclipse base and elsewhere and adds in the plug-ins he has written.
Eclipse RCP consists of the following components:
* Core platform, runtime, lifecycle manager
* Equinox OSGi – a standard OSGI bundling framework
* Standard Widget Toolkit (SWT) – a portable widget toolkit
* JFace – viewer classes to bring model view controller programming to SWT, file buffers, text handling, and text editors
* Eclipse Workbench – views, editors, perspectives, wizards
* An update manager
Advantages of Eclipse RCP
Native look and feel - SWT
SWT uses native widgets as much as possible; this makes the look and feel of SWT-based applications match that of the host window system.
Eclipse plugin mechanism and Extensibility - OSGI
Eclipse RCP applications are composed of a collection of existing plug-ins and plug-ins we developed, and applications can evolve over time by adding and replacing components.
Many available Eclipse components/Plugins for reuse
There are many other Eclipse components or plugins available for reuse (e.g. Help UI, Update Manager, Cheat Sheets, Intro, etc.), also many third-parties components.
Intelligent install and update
Due to OSGI, you can install, uninstall, start, and stop different modules of your application dynamically without restarting the container.
Disconnected operation
Development tooling support
Some History
For traditional desktop application, deploying and upgrading clients is a manual task, and need much time and money.
Then along came the Internet and Web-based applications, or thin clients.
Thin clients solved many of the deployment and management problems related to rich clients. Since applications were on servers, updates were made centrally. User machines required only a Web browser. This reduced the cost of deploying and maintaining enterprise applications at the expense of the user experience thin clients did not provide the UI features and high-speed interactions users had come to expect.
Thin client applications, using the request-and-response model, required more networking capability to ensure optimal interaction performance.
Standard Widget Toolkit (SWT)
SWT is a low-level graphics library that provides standard UI controls such as lists, menus, fonts, and colors. To display GUI elements, the SWT implementation accesses the native GUI libraries of the operating system using JNI
Pros and cons of SWT
Native look and feel
The real trick of SWT is to use native widgets as much as possible. This makes the look and feel of SWT-based applications match that of the host window system.
And to avoid the least-common-denominator approach that doomed AWT to mediocrity, SWT implements widgets in Java if no native counterpart exists on the target platform
Better Performance
Cons:
Swing is distributed with the JRE, to use SWT, application must add additional SWT libraries.
SWT is not available on all Java-supported platforms, though SWT has already supported almost all mainstream platforms.
There is also some evidence that the performance of SWT on platforms other than Windows is noticeably less efficient.
Since SWT uses a different native library for each platform, SWT developers may be exposed to platform specific bugs.
JFace
JFace is built on top of SWT, and provides classes for handling common UI programming tasks. It brings MVC programming to the SWT, and includes a whole range of UI toolkit components, from image, standard dialogs and wizards etc.
Whereas SWT provides access to the widgets as defined by the window system, JFace adds structure and facilities for common UI notions.
UI Workbench
As JFace adds structure to SWT, the Workbench adds presentation and coordination to JFace. To the user, the Workbench consists of views and editors arranged in a particular layout. In particular, the Workbench:
* Provides contribution-based UI extensibility
* Defines a powerful UI paradigm with windows, perspectives, views, editors, and actions
OSGI
The Eclipse plug-in component model is based on an implementation of the OSGi framework, OSGI defines architecture for modular application development, OSGi specification forms a framework for defining, composing, and executing components or bundles.
OSGi offers the following advantages:
* Dynamic Updates, you can install, uninstall, start, and stop different modules of your application dynamically without restarting the container.
* Your application can have more than one version of a particular module running at the same time, you can enable the version you want.
* Reuse - The OSGi component model makes it very easy to use many third party components in an application. An increasing number of open source projects provide their JARs ready made for OSGi.
* OSGi provides very good infrastructure for developing service-oriented applications, as well as embedded, mobile, and rich internet apps.
OSGi container implementations include Eclipse Equinox, Knopflerfish, and Apache Felix. Many web servers such as Apache geronimo, SpringSource dm Server, also in IBM WAS are built on OSGI.
Eclipse
Eclipse is a multi-language software development environment comprising an IDE and an extensible plug-in system. It also can be used to develop C, C++, COBOL, Python, Perl, PHP, and others.
Users can extend its capabilities by installing plug-ins written for the Eclipse software framework, such as development toolkits for other programming languages, and can write and contribute their own plug-in modules.
Resources:
Eclipse Rich Client Platform: Designing, Coding, and Packaging Java(TM) Applications
http://www.ibm.com/developerworks/websphere/techjournal/0608_xu/0608_xu.html
Hello, OSGi, Part 1: Bundles for beginners
http://www.osgi.org/About/WhyOSGi
http://en.wikipedia.org/wiki/Rich_Client_Platform