I'd like to interrupt the relentless stream of data on new NetBeans Platform applications, made possible despite the fact that everyone is supposedly only creating mobile and web apps nowadays, which has been going on consistently one per day in this blog every day for over a month, weekends included, well spotted and supported by Kevin Farnham on java.net and Yolande Poirier in "Everything on the NetBeans Platform", to briefly report on something slightly different. I recently attended JavaOne Russia in Moscow, last month, 23 and 24 April, 2013. Around 2000 attendees, approximately twice as many as last year. That statistic on its own indicates it was a great conference. I attended last year too. Clearly this year was bigger and better.
The big news from a NetBeans point of view (but also, of course, Java in general) was that one of the three Duke's Choice Award winners was the air traffic control system created in St. Petersburg on the NetBeans Platform. From https://www.java.net//dukeschoice/russia:
VNIIRA created an air traffic control system, consisting of dozens of Java NetBeans modules, that allows tracking of hundreds of flights using primary and secondary surveillance radars. Application features include flight tracking, conflict detection and resolution, data display from various sources, together with playback and recording of all system events and user actions. Using the modular NetBeans Platform, the team was able to compose features from multiple modules to provide the necessary functionality tailored to various roles, from flight executive officer to air traffic controller to combinations of these.
I discussed this application some time ago here:
Alexandre Teterin and Mikhail Kuznetsov, two of the key developers on the above project, were at the conference too. It was great to meet them. Afterwards, Alexandre pointed me to the link below about the news about the Duke’s Choice Award on the site of the major Russian government news agency ITAR-TASS:
Also, this news was cited by another official agency, INTERFAX:
Alexandre writes: "Maybe this news will help in hotting up the attention of government (and private) enterprise management to the usefulness of the NetBeans RCP."
Some other applications in and around Russia that have been created on the NetBeans Platform include Platypus Platform, Silver Solution Studio, ObjectsX, Epictetus Database Manager, and a set of reservoir simulator applications.
I led a hands on lab on the NetBeans IDE tools for creating hybrid Java EE / HTML5 applications, to a packed out room:
The PDF used in the lab can be found here:
And another way to attain the same result is to follow the instructions in this article:
Later in the conference I did a session on loose coupling in Java desktop applications, using patterns and strategies from the NetBeans Platform. Unfortunately, at the same time as my session, Paul and Gail Anderson were doing a very similar session, about the NetBeans Platform and JavaFX. Together, we had about 80 attendees, so we could have had a full room if our attendees hadn't beeen split across two sessions.
Here's an impression from my session, Alexandre Teterin was there too, he talked a few minutes about the air traffic control system that won the Duke's Choice Award. Unfortunately, I didn't take a pic of him while he was talking!
Most of the presentation was a generic introduction to the NetBeans Platform. The reasons for using the NetBeans Platform were covered, many examples were shown, and key concepts, such as "Module" and "TopComponent" and "Node" were touched on:
I then discussed in detail a real life use case, based on Alexandre's scenario, i.e., an air traffic control system. The imaginary requirement is that an air traffic control system needs to be developed, for managing runways and their engineers, but that the implementations for our two customers, one in Moscow and the other in St. Petersburg, need to be slightly different. The imaginary Moscow airport has multiple runways, while the imaginary St. Petersburg airport only has one runway. Hence, the feature for reassigning engineers to different runways is only relevant to Moscow, not to St. Petersburg.
How to create a codebase that effectively handles the above requirements? I discussed that the starting point would be to create a RunwayFramework, i.e., a suite of modules that provide base functionality for all implementations. Next, on top of that basis, two applications, one for Moscow, one for St. Petersburg, can be created. Each runway (with imaginary names such as "Pushkin") is defined within its own module and loaded into the system at runtime, so that the application can be extended via modules, either at design time or runtime.
The above structure is visualized as follows in the IDE:
And here's the Moscow implementation, each top node in the Runway Viewer showing the available runways, with their engineers, together with a button in the toolbar that is highlighted when an engineer is selected, so that the selected engineer can be reassigned to another runway. Clicking on a runway shows the runway (in the prototype below, each runway is simply an image of course):
Next, here's the St. Petersburg implementation, which only has one runway, hence there's no button in the toolbar (other than the Save button, which is there too in the Moscow implementation) for reassigning engineers to runways:
A few people have expressed an interest in playing with this code and adapting it to other purposes. Here each of the above can be found and downloaded:
In addition to the above, I attended sessions on JavaFX (by Steve Chin
and Jim Weaver), as well as a Steve Chin session on the Raspberry Pi. Good times with Paul and Gail Anderson, in particular, too, wandering around a very tall shopping mall on the last night especially.
And, finally, I spent a lot of time at the Tretyakov, I especially liked the collection of late 19th century Russian paintings.
In short, JavaOne Russia was great, I really enjoyed it, great to be in Moscow, and I met a lot of cool Java developers at the same time.