Five years ago I looked at Eclipse and NetBeans as rich client platforms (RCPs) and thought both were crap for the purpose. Slow, ugly, immature, incomplete and bringing little but complexity to the table. I looked at both of them again anew last week.

The executive summary: both now look wonderful for Rich Client Platforms, you would need some pretty strong particular reasons to build your own framework now; Eclipse has the edge if your market is Java developers who probably have Eclipse already and your application can be made a suite-enhancing plug-in; Eclipse also has the edge if you want to provide a plug-in and a standalone version; NetBeans has the edge if you need Swing or all the OpenSorce libraries which use Swing—the wonderful SwiXML (which lets you specify Swing interfaces in XML, and uses reflection and the JavaBeans conventions to be very small and very fast) and the Substance look and feel library (whose Flamingo sub-project Topologi has contributed our BreacrumbBar control to) being high on my list.

NetBeans has had a documentation problem that has been addressed recently to a good extent; Eclipse has a much more active developer base. But Eclipse is saddled with SWT whose justification of performance: this has always struck me as entirely bogus given that most applications are just menus and standard controls. IBM could have spent the same resources on improving Swing. Recently Eclipse allows you to open a Swing window, which does give a route for a semi-integrated (disintegrated?) port, for example if you have one major Swing-based control. NetBeans allows you to cut out modules from the standard distribution until you get just the sized platform you need; however, once you get rid of the Java-specific modules, the user interface largely disappears, so it is still more work that I would like; on the other hand, NetBeans has nice wizards available for creating some basic RCP configurations.

One option I didn’t look at was whether a Swing applet could run in a browser page embedded in Eclipse. It is a technical option, but klunky. I would say the decision tree for OS-neutral desktop applications now would be something like:

1. Can we implement this using browsers?

2. Should we implement this using Java or Mozilla RCP?

3. (If Java) Eclipse RCP or NetBeans RCP?