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.
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.