Eclipse Rich Client Platform (RCP) applications have been gaining popularity and momentum, and they are being used to build and deploy real enterprise applications. IBM Lotus Expeditor is a new offering from IBM to help build composite client applications, which include Eclipse RCP applications. In this article, we compare and contrast both platforms.
IBM Lotus Expeditor is built on top of Eclipse RCP and is IBMâs strategic platform for universal managed client middleware. It supports different operating systems, such as Microsoft Windows 2000, Microsoft Windows XP, and Linux. It is targeted not just for desktops and laptops, but also for mobile devices and kiosks. This is achieved by the Managed Client Services, which include a selection of runtime environments, a robust OSGi component framework, and additional component services.
Another important feature of Lotus Expeditor is dynamic provisioning of the client and subsequent updates on an as-needed basis. Server-managed clients reduce the administration cost to deploy and maintain software. This function in Lotus Expeditor is often referred to as Platform Management Services, which include the Eclipse Update Manager and an enterprise management agent to install and update applications and services on the client platform.
Lotus Expeditor also provides a set of access services. These services are middleware for integration between client and server components. Lotus Expeditor can act as both a Web services provider and a consumer, and it can integrate with any Web services-enabled application. It has a local messaging provider to enable an asynchronous programming pattern. Lotus Expeditor also includes local databases for data and synchronization services. These features allow for a disconnected mode of application. Together with the server-side components, transactional synchronization can happen when networks and target parties are available.
Finally, Lotus Expeditor is designed as the client integration platform for composite applications. From a user-interface point of view, it aggregates a variety of application types in a single client view, including SWT applications, Web and portlet applications, ActiveX and native Windows applications, Swing, and others. It has a J2EE Web and portlet container to enable running these traditionally server-based interfaces locally. This feature is called interaction services.
Figure 1 gives you a simple visual view of what Lotus Expeditor is all about.
Figure 1. IBM Lotus Expeditor stack
As we discussed, Lotus Expeditor is IBMâs strategic client platform, which provides the underlying programming model for a universal user experience across the Lotus product portfolio including IBM Lotus Sametime V7.5, IBM WebSphere Portal V6.0, and the upcoming IBM Lotus Notes V8 release.
IBM Lotus Expeditor is built on top of Eclipse RCP, so it offers all the Eclipse RCP capability and more.
First, Lotus Expeditor supports development and deployment of a wide range of applications:
- Eclipse Rich Client Platform applications (desktop client only)
- Eclipse-embedded Rich Client Platform applications
- Web applications
- Embedded transaction applications
- Portlet applications (desktop client only)
- Database applications
- Messaging applications
- Web services applications
It is obvious from this list that Lotus Expeditor not only supports the client-side Eclipse RCP applications, but also extends the traditional J2EE server-side applications to run on the client side. It is empowered to do all these tasks by including middleware components, such as Web containers, portlet containers, and transaction containers.
Second, Lotus Expeditor is a platform for composite applications. It integrates stand-alone applications (ActiveX, Swing, Eclipse SWT, host access, and browser-based applications) into a single composite view. Composite applications enable the integration of information from multiple applications, providing users with the content they need based on their role and task. Lotus Expeditor enables you to integrate portlets and Eclipse applications through the use of the Property Broker.
In this article, we focus on development and deployment of Eclipse RCP applications in Lotus Expeditor. If you develop Eclipse RCP applications, why is Expeditor an attractive platform? The answer is simple: Lotus Expeditor not only provides all that the base Eclipse RCP platform has to offer, but also augments Eclipse RCP in a variety of ways so that you donât need to implement these functions from scratch yourself.
Eclipse lacks security out of the box. If you want to secure your Eclipse RCP application, you have to do so yourself. On the other hand, the Lotus Expeditor platform is a secure platform that protects your application data. Single sign-on capabilities with the operating system are built into the platform by default.
Lotus Expeditor secures the applications and application data running on the client by doing the following:
- You can implement authentication mechanisms using the Accounts framework API, which enables you to store, access, and use properties that are required to make a connection to, and communicate with, a local or remote service. The Accounts API provides a way to get, add, update, remove, and listen for changes to an account. The Accounts component also provides a common user interface from which users can see and change account information and passwords for all their services.
- Lotus Expeditor client can also use the Java Authentication and Authorization Service (JAAS) to provide a configurable and flexible platform login/authentication experience. The Lotus Expeditor client provides public login modules that you can extend to implement authentication to remote servers in your application.
- From the authorization point of view, Lotus Expeditor secures the applications and application data running on the client by limiting access to target features to only those users with valid authentication credentials.
- Lotus Expeditor also protects user credentials by storing authentication information, such as user names and passwords, in an encrypted key store.
IBM Lotus Expeditor has a network layer that provides a framework to applications and platform components for network invocations and network error handling. It provides users with the capability to determine the current status of the client platform as well as their connectivity to remote servers and HTTP resources including Web services. The application can choose to be notified of a client status change or to check the client platform status by using the public APIs for the offline manager. This capability can also be used in conjunction with Synchronization Manager, which allows users and applications to initiate, control, and monitor synchronization of local data stores using one or more synchronization services. Your RCP applications can definitely take advantage of these capabilities.
Lotus Expeditor provides the following two types of managed clients.
- Device Manager-managed client. The Device Manager server provides capabilities for managing devices, including query and update functions. The Enterprise Management Agent provided as part of the client platform is considered a device to the Device Manager server. The agent periodically polls the Device Manager server to receive any jobs that need to be processed for the client (pull). On the server side, you need to register Eclipse features with the Device Manager server and to create jobs to distribute the features to clients (push). The Device Manager server handles software distribution, inventory, and managed settings. Management is per device.
- Portal-administered client. The Lotus Expeditor client workstation can also be configured to receive configuration information from WebSphere Portal. Centrally administered role-based access control is a critical requirement of all large enterprises.
WebSphere Portal administrators can use the same Portal page and place management, user management, and access controls to integrate, manage, and reuse application components running across a variety of device types, ranging from pervasive devices such as cell phones and PDAs to browser-based desktops. The Portal administered client extends this reach further to support rich client desktop applications based on the Lotus Expeditor client. This management is per user.
Lotus Expeditor centrally controls management and provisioning of software by user or by device. This capability tremendously reduces the cost of deploying and maintaining software.
Another important reason you may want to deploy your next Eclipse RCP application to Lotus Expeditor is the IBM support. With Lotus Expeditor, you have an officially supported RCP stack and a client services middleware stack on which you can build your solutions. This helps you save debugging and troubleshooting time with production applications.
The Lotus Expeditor toolkit, built on Eclipse 3.2.1, provides a complete, integrated set of tools that allows you to develop, debug, test, package, and deploy client applications that use client services. The Lotus Expeditor toolkit is available through the Passport Advantage program.
The toolkit provides wizards that enable you to create Client Services projects to develop client applications. The toolkit uses target definitions to provide a convenient method for you to specify the runtime environment, the build-time environment, and the set of components that can run on the platform. For example, when you create a Client Services project, you select a target definition and set of features from a list of available targets, and the toolkit automatically sets up the Java Build Path and runtime for your project. You can then edit, compile, and debug your project. The toolkit provides a default list of target definitions; however, you can create your own definitions.
Make sure you have installed this toolkit before continuing to work through this article. We use it for rich client application development.
Here are instructions on how to migrate an existing RCP application to IBM Lotus Expeditor.
This article is not about how to develop RCP applications, so we do not go through the detailed development steps. Instead, we import an existing Eclipse RCP application, which will later be migrated. Before you start, make sure you have downloaded the sample code provided in the Downloads section of this article.
- Start Eclipse with a new workspace and switch to the Plug-in Development perspective by choosing Window - Open Perspective - Plug-in Development.
- From the File menu option, choose Import wizard.
- In the Import wizard, select "Existing Projects into Workspace," and then click Next.
- In the Import projects window shown in figure 2, select the Select archive file option, browse to the zip file org.eclipse.rcp.mail.zip you downloaded, and then click Finish.
Figure 2. Select project
- Once the project org.eclipse.rcp.mail is imported into the workspace, expand it, select plugin.xml, and double-click to open it.
- Choose the Overview tab, shown in figure 3, and click the "Launch an Eclipse application" link under Testing in the right column.
Figure 3. Launch RCP application
- After a few seconds, you see that the RCP Product window opens as shown in figure 4.
Figure 4. Eclipse RCP mail
This is an RCP application created with the default RCP mail template from Eclipse. We do not cover the details of how this application is created here. Refer to the Resources section for RCP documentation.
Now you are ready to migrate this RCP mail application to Lotus Expeditor.
- From the Eclipse File menu, choose New - Project.
- In the wizard dialog box, expand Client Services and select "Convert Project to Client Services Project" as shown in figure 5.
NOTE: Rich client applications in Lotus Expeditor are developed under the Client Services Project.
Figure 5. Convert Project
- Select the rich client plug-in project org.eclipse.rcp.mail you just imported, and then specify that you want to convert it to another Client Services Project called com.ibm.expeditor.mail as shown in figure 6.
Figure 6. Convert RCP mail
- Accept the Default Target in the Target Definition window, and then click Finish.
- Now, in the Package Explorer view shown in figure 7, the original project is decorated with a new icon, which identifies this project as a Client Service Project.
When you develop applications for Lotus Expeditor, everything is organized under a Client Service Project, which has an Eclipse Nature com.ibm.pvc.tools.bde.ExtensionServicesNature with its own set of builders and launchers.
Figure 7. Project Nature
- Select the project com.ibm.expeditor.mail, expand it, select plugin.xml, and double-click to open it.
- Select the plugin.xml tab, and then copy the code snippet shown in listing 1 at the top after the <plugin> tag.
NOTE: To be recognized by the Lotus Expeditor runtime, a Lotus Expeditor application must register and extend the WctApplication extension point. Be aware, though, that this Lotus Expeditor application is no direct match for your expectation of an RCP application. In fact, a Lotus Expeditor application closely mirrors an RCP perspective as shown in figure 8.
Listing 1. Define Lotus Expeditor application
<extension id="com.ibm.expeditor.mail" point="com.ibm.eswe.workbench.WctApplication"> <Application DisplayName="Expeditor Mail" PerspectiveId="org.eclipse.rcp.mail.perspective"> </Application> </extension>
Figure 8. Define extension
- Now, switch to the Overview tab and click the "Launch Client Services application" link under Testing in the right column.
- After a few seconds, you see the window shown in figure 9, which prompts you for a password. Enter the password you chose when installing the Lotus Expeditor desktop client.
Figure 9. Login to platform
- After you have logged in and the workbench window is open, click Open, and a drop-down menu appears. Select the converted application, ExpeditorMail, as shown in figure 10.
Figure 10. Select application
The original RCP mail application is now running inside of Lotus Expeditor, using the Lotus Expeditor default personality configuration as shown in figure 11.
Figure 11. Mail application in IBM Lotus Expeditor
You have successfully migrated an Eclipse RCP application to IBM Lotus Expeditor client. As you can see, the migration is straightforward and easy with the help of the Lotus Expeditor toolkit. To take full advantage of the Lotus Expeditor platform, you may still want to enhance the existing application by exploring Lotus Expeditor features such as security or by customizing and branding Lotus Expeditor to suit your needs. Lotus Expeditor provides many ready-to-use features and services to speed up your RCP application developments.
The author would like to thank J. Christopher Hawley and James Robbins for reviewing this article.
Read the developerWorks Lotus article, "Creating collaborative components for IBM Lotus Expeditor Property Broker."
Read the developerWorks Lotus article, "Developing an OSGi service as a Web service in IBM Lotus Expeditor."
Read the developerWorks Lotus article, "Building and deploying a simple Web Services Resource in IBM Lotus Expeditor"
Read the IBM Redbook, Building Composite Application in Lotus Expeditor V6.1.
Learn more about the Eclipse RCP Platform.
Read the developerWorks Lotus Expeditor page.
Refer to the IBM Lotus Expeditor Education Assistant.
Refer to the IBM Lotus Expeditor Information Center.
Peter Xu is a Senior Managing Consultant with IBM Software Services for WebSphere, working directly with IBM's largest customers and helping them design and deploy SOA-based solutions on broad range of IBM Software offerings. Peter specializes in business process analysis, modeling for execution and end-to-end BPM solutions.