NetBeans Platform Enables Intelligent Homes!
Marek Kliś works as a software developer for MCD Electronics, a company in Żywiec, Poland, which produces electronic equipment. It is his responsibility to develop software for the configuration of this equipment and for the visualization of the related functionality, more info about which can be found here. He also develops software for the company's management system.
In addition, Marek is a fan of Java and its related technologies. He's an active member of the Polish JUG and the Silesia JUG, where a recent NetBeans Platform Certified Training was held.
You've been using the NetBeans Platform at work. How did that happen?
Well, I needed to make software to configure the building management system worked out by my company. In the beginning, I started with Swing without any framework. However, it took too much time to create the user interface and the result was not satisfactory because the application was not friendly to the end user.
So then I started to look around for a framework that could help me. I came up with two possibilities: Eclipse RCP and NetBeans Platform. After a few tests I chose the NetBeans Platform, which seemed to be the right solution for my Swing application.
What exactly is the application you're developing?
The application is needed for configuring the system that controls the lighting, heating, and opening/closing of gates in houses. In the building sector, a system of this kind is known as an "intelligent home". Our goal is to create a multipurpose system available for home management.
Therefore, the application has to be easy to use and intuitive to install. It also needs to be very simple to maintain. Even the most complicated system functions must be
simple to configure.
What are the main features and highlights of the application?
The application has its own project type. A "project" consists of a database and some specific XML files that can be visualized and modified graphically by user, thanks to the Visual Library's widgets. The database contains the complete system's configuration.
The user can create a separate project for each installation.
Every installation is different. It can consist of up to 640 specific logical modules. Each module has to be configured and the user must configure the connections between modules. The application helps to do this by means of several wizards.
The application helps to restore system configurations if/when the hardware crashes.
How is the NetBeans Platform helping?
Thanks to the NetBeans Platform, I was able to concentrate on the application logic, since the NetBeans Platform made the various GUI mechanisms available to me.
For example, I found the Visual Library very helpful for my purposes. The Visual Library provides widgets that helped me to illustrate the connections between the system elements in a very simple way. For this reason, the system configuration has now become very easy and fast:
Another useful part of the NetBeans Platform is its Wizard API. The Wizard API helped me create a set of wizards that make some operations much easier for the end user:
What are your favorite features of the NetBeans Platform?
The Visual Library API is one of the coolest libraries on the NetBeans Platform. It enables you to illustrate graphically the different data sets and data schemes in a very simple way.
Another favorite feature for me is the fact that NetBeans Platform is built on Swing!
The third and most important NetBeans Platform feature is... that it is an open source project! I can look at the NetBeans Platform source code and see how the NetBeans engineers use the various platform libraries. That's very helpful.
What could be better?
I encountered difficulties regarding refactoring. Not every change of class names causes a related change in the XML configuration files, i.e., the layer XML file.
In my opinion, it would be great to have a tool for including automatically all the necessary libraries needed in the Project Properties dialog, for the NetBeans Module Suite project type. For example, if I include a module that depends on 10 others, I currently need to find and explicitly include them manually one by one! NetBeans IDE informs only about the first dependency, and after resolving it, NetBeans IDE informs about the next one, and so on, which is a bit cumbersome.
Can you give a few tips and tricks for getting started with the NetBeans Platform?
Start at the NetBeans Platform homepage. There are many tutorials and a lot of documentation that can help you to get acquainted with the NetBeans Platform.
Next, take a look at screencast series "Top 10 NetBeans APIs".
I recommend to download the NetBeans IDE source, where you can find a ready solution for most problems.
Look at planetnetbeans.org. PlanetNetBeans is an aggregator of NetBeans-related musings from all over the blogosphere.
When will the application go into production? What are the main features you will add in the future?
The application, as a Beta, has just become available. The application needs to be extended with a reporting system. In the future, we plan to add a module that will show system state in real time.
Any other thoughts to share?
I think that the NetBeans Platform is a perfect solution for building modular desktop applications.
Let's concentrate on application logic and don't try to solve problems that have already been solved by NetBeans engineers, such as modularity and a window system.
Finally, I'd like to thank the Polish Team for translating the NetBeans Platform into Polish. It made my work a lot easier because one of the requirements was that it had to be in Polish!