Jean-Michel Lemieux
Starting with the good things about Eclipse and RCP development, we pushed the limits of plug-ins and extensibility from the client to the server, into the data storage, and into the web. This section explores the extensibility concepts we added to allow data, web, and server extensibility using plug-ins.
How to design plug-ins when code runs on the client, on the server, and in different configurations. Monolithic plug-ins don't cut it anymore. I'll introduce the guidelines we introduced for plug-in architecture and naming to make the plug-in architecture explicit from the beginning.
We all know what happens when a long running task hogs the UI thread. We designed into the system a way to detect if anyone was talking to the server from the UI thread and throw an exception.
Plug-ins are nice, but what happens when you have to integrate with other tools? From plain java clients such as Ant, to other languages such as Javascript or C++, I'll outline the techniques we used to allow plain java applications to know about plug-ins by extending the plug-in registry and for other languages, the exposure of REST services. This is critical for any realworld RCP application which needs to integrate with others.
Once you have to support integrations with plain java and other languages, how can you write portable business logic? We put in place guidelines for writing client/server agnostic business logic which was also Eclipse agnostic so that it can run in plain java environments.
Even after all this work, it's still unfortunate that Java and Eclipse still get in the way. This last section talks about where Java and Eclipse have to go to make Eclipse RCP a more viable platform.
Jean-Michel Lemieux is the co-author of the Eclipse Rich Client Platform book published by Addison-Wesley (http://wiki.eclipse.org/RCP_Book). He's been a lead architect and developer on the Jazz project (jazz.net) since 1995 which has allowed him to put his RCP experience to work on a large scale client-server application. On Jazz, he is the SCM component lead. Jean-Michel has been a committer on the Eclipse Team and CVS components since their inception.