Thomas Würthinger is a researcher and PhD student at the Institute for System Software at the Johannes Kepler University Linz in Austria. His main research interests are virtual machines, modular programming, and visualization tools. Recently, he developed a new array bounds check elimination algorithm for the Java HotSpot VM. His Masters thesis was about a visualization tool based on the NetBeans Platform called the Ideal Graph Visualizer. Currently, his focus is on development for the meta-circular Maxine VM as well as on the implementation of dynamic software updates for the HotSpot VM.
You've been using the NetBeans Platform for some time, can you say something about that?
My first usage of the NetBeans Platform was during the development of the visualization tool as part of my Masters thesis. Especially the NetBeans Visual Library helped me a lot when building the application. My Masters thesis can be read here:
For my Bachelor thesis, I contributed to an originally Eclipse-based project (c1visualizer), but our experience with the NetBeans Platform was so good that we later ported the project to the NetBeans Platform (click to enlarge the screenshot below):
For writing a debugger for the metacircular Java Maxine VM, I wrote plugins that extend the NetBeans Java debugger. This approach shows that also the NetBeans IDE itself is designed to simplify software reuse.
Recently you participated as a trainer in the NetBeans Platform Certified Training. What kind of training is that?What are the main things that are taught?
The goal of a NetBeans Platform Certified Training is to teach the main concepts that are needed to build applications on top of the NetBeans Platform. It is not about the NetBeans IDE itself, but about the underlying infrastructure only. After finishing the training, it should be relatively straightforward for anyone to build their own NetBeans Platform application. The main things taught are the module system, the System Filesystem, the Lookup concept, the explorer views and Nodes API and some other useful APIs that make developing a Java application on top of the NetBeans Platform simpler.
How was it to be a trainer on the course? What did you teach? What did you learn?
It was quite fun being a trainer as it is not a mandatory course, so all the students sitting there are quite motivated to learn something about the NetBeans Platform. I tried to add pratical demos to the course such that the students would not get sleepy when listening to too much theory! The demos are published and can be found here:
Besides a general introduction to the module system, the System Filesystem, and the Lookup concept, I did a presentation about the NetBeans Visual Library.
I find that the trainer is the one who always learns the most during a course! That's mainly because for the making of the slides and the demonstrations, you have to be very clear about what are the essential things to teach and what is not primary. I think this selection process is the most difficult thing when giving such a course. Hopefully, I solved this problem such that also my students learned a lot during the course as well. :-)
What are the main problems that students have with the NetBeans Platform?
The concept of modular programming is usually not deeply covered in standard programming studies. Additionally, for a small student project it does not matter whether the application is designed in a modular way or not. In this case, it is a rather unnecessary overhead. So, it is difficult to get students to accept that those concepts are important in larger applications.
Here's a screencast that addresses this topic in some detail:
Do you think the course was helpful to cover these problems?
I hope so, at least I tried to underline the importance of modular programming. In order to finish the course, the students need to apply the learned things by building an application or a plugin on top of the NetBeans Platform.
How was the reaction from the students? The students will give a short presentation when they finish their projects. This will be the time I will ask for feedback on the course, as well as when I will get an impression of their first experiences with the NetBeans Platform.
Will you continue being a NetBeans Platform Trainer?
Sure, because I think it is important that ongoing programmers learn how building upon a platform leads to high levels of code reuse and that modular programming is an important concept when it comes to building large applications.