Lately I've been working with the Eclipse Rich Client Platform (RCP) on a small pilot project to replace an existing Java Swing UI for a current client. There certainly is an initial learning cliff, but now that I'm starting to grok the whole platform I'm more impressed every day at RCP's elegance.
Yesterday, Wayne Beaton from the Eclipse Foundation came and spoke to the team (one of the benefits of living in Ottawa!). It was a great talk and filled in the gaps in my knowledge of the Eclipse platform. Wayne was also able to provide some of the history behind RCP, and one of the key points was that the platform evolved out of the tool, and not the other way around. There's a lesson to be learned there!
At any rate, one of the key points I took away from the talk was just how modular applications are when using the Eclipse model and OSGi framework. I'm reasonably good at separating concerns within an application's architecture, but I can't hold a candle to what the contributors to Eclipse do! I can see how that would provide the ultimate in flexibility and a way to constantly add/update/replace functionality over time without necessarily replacing the entire application. This is very, very interesting in environments where there is a significant cost incurred by pushing a monolithic application to production. If you can update incrementally, you may spend more over a long period of time, however each individual update costs considerably less and has less impact on the users.
So, all in all after working with RCP for the past few weeks I'm quite impressed and two of us have been able to become quite productive with it in a relatively short time period.