Fionn is one of the translators of the upcoming NetBeans Platform book "The Definitive Guide to NetBeans Platform 6.5". Here, however, he talks about a different document he's worked on:
The above is a link to his thesis on modular development on the NetBeans Platform. It is highly recommended reading, if your understanding of German is up to it!
Hi Fionn, first please tell us about the background of this interesting document.
Producing a written thesis is part of the German IT apprenticeship, which I completed in June 2008.
The thesis describes the creation of software that communicates with many different tendering-platforms at runtime. More particularly, it is concerned with the handling of different tendering-platform modules.
At work, we had to develop a more dynamic and modular solution than the one we had, because we were establishing more and more platform types and customer claim types. In the past, we developed all this in plain Java. It was sufficient to have a core part, including standard software functionality, document managment, and so on, and two parts for the communication to the various tendering-platforms. These parts are in a single Eclipse project, separated in packages, and therefore not very modular. Depending on the application running mode, the communication mode is chosen by "if-else" statements, interfaces, and abstract classes.
What I'm trying to say is that we always deliver the complete software but that only one communication mode can be used. This is very hard or even impossible to extend with other tendering-platform types.
A further advantage in a modular architecture is the ability to have an extended financial concept, meaning that Customers must pay for every tendering-platform module they want to use.
What are the main arguments of the document?
- Advantages of choosing a rich client platform with a modular framework.
- Eclipse RCP with OSGI vs NetBeans Platform: We decided to take NetBeans Platform because we have some libraries based on Swing and the NetBeans Platform matches our requirements very well in that area.
- The qualities and functionality provided by the NetBeans Platform.
- Using the Lookup API for locating desired implementions.
- Using the Java Persistence API, which provides a POJO persistence model for object-relational mapping.
- Decoupled module communication, i.e., declaring a service with individual modules providing implementations.
How did you come into contact with the NetBeans Platform and why did you start using it?
We got more and more requirements for our software... our current software solutions couldn't cope with them all... and we did not want to reinvent the wheel.
So we re-architected, creating an application built on top of the NetBeans Platform to use its features, such as the module system, the update manager, window management, and so on.
What do you find most useful about the NetBeans Platform?
I can't really decide between the module system and the window system! Both are very useful for our requirements. The persistence of TopComponents is especially useful as is the discovery modules at runtime by the Module System.
Also the Quick Search API is exellent!
If we had to develop features like these ourselves, I think it would have taken years to come up with comparable solutions.
How has your document been received?
After the presentation of my thesis project, I received a lot of positive feedback from the moderators who're familiar with modularity. Others in the audience, less familiar with "modern" software development approaches, didn't really understand the advantages of a modular architecture.
I don't want to judge anyone, but a kind of abstract or modular perspective is required before the advantages of modularity can really be understood. And some of the people on the examation board asked the same standard questions, for example "What is XML-DTD" or "Please explain the MVC pattern" and so on. But, all in all, it was well-received!
What are your future plans with the NetBeans Platform?
Next steps are to decompose the current solution into smaller parts. We will port the reusable parts to the new NetBeans Platform application.
So, this project is not yet finished, despite the conclusion of my thesis!