Search code examples
javaosgircp

Which Rich Client Platform to use


We recently started to develop a Java desktop app and management has requested that we make use of Rich Client Platform. I know of four for Java namely:

  1. Eclipse RCP - www link to ecipse rcp,
  2. Netbean RCP - Netbeans RCP web site,
  3. Spring RCP - spring rich client
  4. Valkyrie RCP - Valkyrie rich client

Has anyone got any experience in any of these and if so what are the strength and weaknesess of each?

thanks


Solution

  • I recommend that you take a look at JSR 296 - it's not complete yet by any stretch, but I think it hits the sweet spot for providing certain core functionality that you really, really need in every Java GUI app, without forcing you to live in an overly complicated framework.

    I have used JSR 296 successfully to create a mid-sized application. For window layout in this app, we use MyDoggy (highly recommended). For layout management, we use MiGLayout (Beyond highly recommended). For data binding, we use a modified form of JSR 295 (we implemented something similar to PresentationModel on top of JSR 295 that we use for our GUI binding). I'm in the process of incorporating Guice as a DI mechanism but haven't finished that effort (so far, I think it will 'play well' with JSR 296 with a tweak here and there). Let's see... persistence is the big missing link here - I am currently evaluating Simple for XML persistence, but am running into issues with getting it to work with DI containers like Guice. I have Betwixt working, but the dependencies on Betwixt are huge so we are looking for something more streamlined.

    Opinions on other RCP options for Java:

    NetBeans: I have some fundamental philosophical objections to the approach used by NetBeans (too many design anti-patterns for my taste). In the end, the framework forces you to make poor design decisions - and it's almost impossible to use if you don't use NetBeans as your IDE (I tried, but I just couldn't switch from Eclipse to NB). It's probably just me, but it seems that it should be possible to write code for an RCP framework without using big complicated wizards and reams of auto-generated code and XML files. I've spent so many hours troubleshooting old Visual C++ code generated by Visual Studio that I'm extremely leery of any framework that can't be coded up by hand.

    Spring RCP: The folks at Spring have a good solid design, but the documentation is really, really weak. It's pretty difficult to get up to speed on it (But once you do, you can get things done pretty quickly).

    Eclipse RCP: Haven't used Eclipse just because of the deployment overhead (depends on your target audience - for us, deploying an extra 50 MB of runtime just didn't work). Without question Equinox is a beautiful thing if your app needs significant plugin functionality (of course, you could run Equinox with JSR 296 as well, or use design patterns similar to the Whiteboard pattern promoted by OSGi).