The Art of Software Development

Jim Boone’s thoughts on software development and other important matters

Eclipse RCP

Eclipse Rich Client Platform Applications

How many people have used Eclipse, the popular Java integrated development environment (IDE)? How many people have used the Flex Builder IDE? If you’ve used either of these development environments you know how powerful the Eclipse platform really is! Now imagine taking the application framework “middleware” code for the Eclipse IDE and building your own applications on top of it. That is exactly what the Rich Client Platform (RCP) for Eclipse is. The brilliant folks working on the Eclipse project have factored out all the IDE specific code and allow you the developer to take advantage of the powerful application framework that they have built.

Back in the early days of the Rich Internet Application (RIA), there were not many choices available for building a rich applications that were deliverable via the web (Flex was just a dream in Adobe’s eye). RCP gave me the event driven paradigm and widget set that I was used to when dealing with UI development. The web is just so crude compared to event driven programming with widgets. I wanted a more robust development environment!

In my employment situation at the time, I had the luxury of experimenting with new technologies as long as I could crank out useful applications within reasonable amounts of time. I was fortunate enough to spend a good eight months to a year working on developing RCP-based applications. I learned a lot from that experience and was able to write one of the most sophisticated applications in my group’s production tool set. That application is still in production today and is still one of the most sophisticated applications that our clients use. However, since I have built other applications using Adobe Flex, I realize that although RCP is powerful, it is a royal pain in the rear compared to the Flex development (Java classloader issues will ruin your day). If I had the same weapons in my arsenal then as I do now I would have chosen Flex for the project in a heartbeat. But then again hind sight is 2020. For what it is worth we have a UI rewrite project in the works and the RCP application will be converted to Flex. Don’t get me wrong RCP is awesome, but Flex wins hands down in terms of development efficiency and application footprint size.

Below I share some screenshots of the BPASS application which is written in RCP (don’t worry about what BPASS means, I’d have to kill you if I told you). What you will notice is a very rich user interface. That is because RCP utilizes a widget toolkit that is called Software Widget Toolkit or SWT. SWT is a direct competitor with the native Java Swing widget set that is included with your standard Java distributions. SWT widgets are heavy components while Swing implements light weight components. The merits of the two technologies could be compared and contrasted in a book. The bottom line is, SWT widgets are based on the native operating system which means they look and indeed are the same widgets that the native OS uses. I prefer SWT over Swing, but that’s just my opinion.

All that being said, what is the real purpose of this post? Employers today want to see examples of your work and I don’t blame them. Instead of sending a prospective employer a few source files, I am offering anyone who is interested the opportunity to look at some of my source code. What I share in the following link is not the source code from the BPASS project because that code is proprietary and I cannot share it with you. What I do share is code that I have written as part of the Altruix, Inc. effort. This code never saw the light of day and has not been thoroughly documented, but it is based upon what I learned from BPASS. Come to think of it, I have a colleague that says the code is self-documenting so I will say the same :-) . Production quality code should be documented better but who wants to document if no one will read it. Enjoy!

No comments yet. Be the first.

Leave a reply