As we start talking more and more about Eclipse RCP, I find it important to be able to describe when someone should consider using Eclipse RCP, instead of alternative technologies. If anything it starts to help people better understand the capabilities of Eclipse RCP.
In the space of platforms for rich user applications there seems to be a number of potential solutions, including Eclipse RCP, AJAX, MS .Net and Flash. (I am sure I am missing other potential solutions, feel free to add a comment.) At the high level, I think there are a couple of decision points that lead you to a different technology alternative.
Point #1 – Organization Culture
Is your organization considered a Microsoft or Java shop? Are most of the programmers trained on .Net or in Java or something else? Do you have a strategic direction to develop all applications on Java or .Net. Lets face it, an organization that is 100% Microsoft probably won’t/shouldn’t consider Eclipse RCP. If it is 100% Java, then I would hope Eclipse RCP would have a lot to offer. Lots of shops are heterogeneous, so the decision might be less than obvious.
Point #2 – Type of End User
What is the user profile of the application end user? Is it a casual user that uses the application occassionally or a power user that ‘lives’ in the application. For instance, I am fine doing my on-line banking via a browser, since I do it only once or twice a month. However, a bank employee that manages high-end banking customers probably wants to have a desktop application. They need to be able to save local information, switch between different contexts and tasks. Also integration with other applications on the desktop is often important. Here I think something like MS .Net or Eclipse RCP would be a big win.
Point #3 – Type of Application
I think there are different types of applications that are better suited for AJAX, Flash or RCP. At a very simplistic level I think there are three types of applications: 1) content delivery, ie portals, dashboards, where presentation is very important. 2) collaboration/workflow applications,where context and tasks switching is important and 3) transactional applications. For the content delivery, AJAX and Flash seem to be better suited for presentation and ease of content delivery. However, when you get into sophisticated workflow or collaboration, the ability to work offline and have persistent data is pretty important. Here I think RCP might be better suited. For transactional applications, I think it will depend, maybe on the type of user?
Of course none of this is black and white; there is a lot of gray in all of this. However, I am interested if people think this begins to hit home on when thinking about RCP? Or is this just pure marketing fluff and I’ve missed the important stuff?