Interview with Sven Reimers: Winner of Duke Award 2009
Well, sometimes (sometimes?) it happens that I'm just a moron. I followed the latest JavaOne from home, because of personal troubles, and tried to participate as I could by blogging and commenting what I was able to hear from the public keynotes. I was also able to make a few interviews with relevant people... but completely forgot to publish one! I sincerely apologize with my readers, with Sven (the interviewed guy) and with the rest of the NetBeans Dream Team. Here it is the missing one.
Going on with the series of interviews during JavaOne 2009, now it's the turn of Sven Reimers. Sven is a NetBeans Dream Team fellow and... he has just won the Duke Award 2009 in the category “Java Technology in Network Solutions”! :-) He leads the team that developed “The NetBeans Satellite Tracking System, ND SatCom Network Management Systems”. Looking at the short description, it's definitely a great desktop application, it's based on the NetBeans Platform and we're going to have Sven tell us something about it.
Q. First, congratulations Sven! How does one feel in being given the Duke Award at JavaOne?
A. It is a great honor to receive such an award and getting it live on stage from James Gosling as part of his keynote – I do not think that it will get much better than that, besides coming back and doing it once again!
Q. As usual, before going on, please tell us something about you.
A. I graduated as an industrial engineer and started as a consultant and developer with T-Systems. As a contractor for ND SatCom I started working on a network planning tool, before I got hired by ND SatCom as a software architect and system engineer.
I am developing Java based applications now for more than 10 years and still no Java EE just straight Java desktop applications. Although my main work is done in Java there still is place for other languages as well, mainly Python (or better Jython).
Q. And now, let's go straight to the thing! I'm reading from the short description in the Duke Awards page: “The NetBeans satellite tracking system is built with about 1 million lines of manual code, 3.5 million lines of generated Java code, more than 100,000 lines of C++ code for device communication, and more than 1000 NetBeans modules.”. Those are impressive numbers. But first tell us what the application does.
A. The Satellite Communication Network Management System aims at providing a complete integrated workflow for customers providing or using satellite communication networks. To get a better grasp on how this works think of it as a set of 4 different parts. The first one called System and Network Manager (SNM) covers the management of resources, i.e. groundstations, satellites and devices, as well as the planning and monitoring of networks, i.e. transmissions und resource usages. The second part is a monitoring and control (M&C) application which can be used to monitor and control multiple groundstations and their equipment down to device level. As a counterpart for the M&C of the groundstations a third system called “Communication Satellite Monitoring (CSM)“ is available for monitoring the transmission over satellites. The last but not least part makes it even possible to do the in orbit testing (IOT) of satellites. All these parts can be run as one application, so that an optimal workflow can be achieved.
Click to enlarge the screenshot below:
The complete application is designed as a multi user, multi client application to allow for maximum flexibilty during operation, because we typically have distributed systems in satellite communications. A lot of the aforementioned features can be used remotely over satellite connections as well, especially the M&C and CSM features.
Q. For readers that don't know it, how would you describe the NetBeans Platform in a few words?
A. The NetBeans Platform is a set of well thought out libraries with well designed APIs, called modules, that provide all the necessary infrastructure for building small and large Swing based desktop applications, without the effort to maintain your own frameworks, e.g., the handling of windows and their persistence.
One thing that is quite important is that the NetBeans Platform grows with the complexity and size of your application. If it becomes more complex you can just add some of your own basic functionalities to the NetBeans Platform and call it your inhouse platform. Once you are doing this you have achieved the same the NetBeans IDE developers are doing – extending the NetBeans Platform to its limits and beyond.
Another thing you have to bear in mind is that underlying the NetBeans Platform is a modular architecture kernel, which is called NetBeans runtime container. This can be used to write non-UI applications using the same deployment as you would have for the rich client.
Q. Why did you choose it? There are other famous platforms around, most notably the Eclipse RCP.
A. We selected the NetBeans Platform because we already had a Swing based application and were looking to subsitute our own application framework with something that we would not have to maintain and develop ourselves, enabling us to concentrate on our own business logic. That way we attained modularity, which was not such a big concern in the beginning, but already something we had to consider, and the update center mechanism as a basis for change management for free as well, making it the obvoius choice. Besides that, I am not sure that something like the Eclipse RCP already existed back in 2001.
From a today's perspective with about 9 years of NetBeans Platform experience I have to say, that I really like the design and the philosophy of the NetBeans API's a lot, they just seem natural to me.
All this is based on being a real early adopter, so that my knowledge about the concepts and design ideas grew together with the NetBeans Platform. Looking back, the decision taken was not as difficult as it might have been today. But the main reason is still valid – if you are a Swing shop – definitely go for the NetBeans Platform.
Q. What are the APIs that you used the most?
A. Maybe I should start with APIs we do not use – DataSystem. Since our application reads nearly all data either from database servers or software services, we typically do not have any files. So we wrote our own replacement for this. Since we are talking about rich client the Window System API, Visual Library, Nodes and Explorer API as well as Dialogs API are very important for us. We invested in writing a complete interactive design tool based on the Visual Library, so this is now a key API for us. Additionally, we use Navigator SPI and Options SPI to provide an enhanced integration experience for our customers.
My personal favourite API is still Lookup API – if you want to decouple your modules there simply is no better way to go.
Q. 1000 modules is a large number. What challenges did you face in dealing with this complexity, including things such as managing the workload distribution to the team? Any tips or tricks?
A. The way we took to achieve this, is a step by step migration of existing technologies and applications. In the beginning we had 5 different applications. With step one we integrated the first two, then we got a partial integration of the third one. With all this experience we took the decision to move the other two as well – and we never looked back.
The main trick getting 1000 modules to work is quite simple “Divide at impera” or how Jarda Tulach may put it “modules, modules, modules and Lookup, Lookup, Lookup”. You can not succeed trying to build such a big application in a monolithic way – without decoupling it would be impossible to manage this.
Besides the advantage that decoupling shields us from getting an untangle web of API's, we are not building the application by source in one big batch, but assemble it from already built binaries (modules). This gives us a quite good turnaround time for our continuous integration and allows each developer to focus on his actual task using the latest build as basis for his daily work. This also has the advantage, that issues are discovered early and fixed in time.
Q. What are the things that the NetBeans Platform still lacks? What do you wish in the NetBeans Platform's future?
A. Well, this is a difficult question. I am not sure I have a favorite missing feature or API.
I think what I find most annoying is if I discover a new feature in NetBeans IDE, like “Profile Me” or the new “System Slowness Detector” and I cannot use it for my NetBeans Platform application since those modules are not optimized for non-IDE usage, so I end up with having the complete IDE in the application, which does not work for me. So I hope we will find a better way to get those things to behave more NetBeans Platform application friendly from the beginning.
For future development, I hope for more community involvement in driving the support for NetBeans Platform development tools inside the NetBeans IDE – so maybe companies who use and extend the NetBeans Platform to suit their needs find a simpler way to give back something to the community, e.g., modules containing new components for the NetBeans Platform.
Oh, and in terms of marketing and visibility I hope Sun (or the powers that will be) will recognize the value of the NetBeans Platform for application development – there is real business based on the NetBeans Platform!
Thanks for your time, Sven - and thanks for making the world more aware of how powerful the NetBeans Platform is!