Currently I work at the NATO Programming Centre ( as Software Architect. I am in charge of the development of a new console application for MASE (Multi-AEGIS Site Emulator), one of the Air Command and Control applications maintained at the centre. Being one of the most experienced engineers in the software engineering team, I am also the technical mentor for the team in the area of the real-time systems and tactical data links. Angelo has posted 2 posts at DZone. View Full User Profile

Updated NATO Air Defence Solution Based on the NetBeans Platform

  • submit to reddit

I am Angelo D'Agnano and currently I work at the NATO Programming Centre as Software Architect. I am in charge of the development of a new console application for MASE (Multi-AEGIS Site Emulator), one of the Air Command and Control applications maintained at the centre. Being one of the most experienced engineers in the software engineering team, I am also the technical mentor for the team in the area of the real-time systems and tactical data links.


MASE is the standard NATO system to support the execution of air operations in a real-time environment; though it has been in operational use for many years, it still provides a flexible, state-of-the-art solution for Command and Control in Air Defence.

MASE was developed and is maintained by the NATO Programming Centre located in Glons, Belgium.

To assist units using MASE in gaining and maintaining air superiority, three major functional areas are supported:

  • Production of a real-time Recognized Air Picture (RAP) including identification of aircraft based on input from active/passive sensors and civilian Air Traffic Control (ATC);

  • Exchange of the RAP with other military units in a NATO-wide, real-time network;

  • Battlespace Management and provision of weapons guidance solutions.

Both military and civilian radars can be connected and the data from these sources are processed to provide a real-time air picture. The air picture is a synthetic representation of all aircrafts flying in a given area.

Flight plan data from civilian or military ATC centres are received, correlated with the air picture, and displayed to the operational user to support identification of aircrafts.

The Battlespace Management function assists the operational users in threat assessment and allocation of weapon resources.

MASE Integrated Console Environment

The MASE Graphical User Interface, derived from the original air defence consoles designed in the seventies, is now perceived as unnecessarily awkward by the new generation of operators. For this reason, it was decided to renew the console and develop a new application.

MICE (MASE Integrated Console Environment) is the platform at the heart of a newly developed MASE console. It is based on Java and it is developed using the latest trends and concepts in the area of HMI development.

MICE largely relies on two external libraries: LuciadMap for the geographic information display, and the NetBeans Platform for the application framework. While the usage of the LuciadMap has helped to achieve the required real-time performance for the display, the NetBeans RCP allowed the development team to save significant time; the ready to use solutions, design patterns and guidelines helped to achieve a solid and consistent design of the application.

MICE is meant to be a rich-client platform for Air Defence applications. The new MASE console represents for MICE what the NetBeans IDE represents for the NetBeans Platform: both its main application and the proof of concept about its usage. Being that the new MASE console is based on the NetBeans RCP, the choice of using the NetBeans IDE was logical and with time the development team learnt to leverage several of the IDE's features to boost productivity. In particular, areas that proved to be most appreciated are the Profiler (which is at the base of the VisualVM distribution shipped with the JDK), together with Matisse, the GUI editor.

The NATO Programming Centre delivered the first beta version of the console to those units that had subscribed to the beta program in June 2011. An Operational Test and Evaluation delivery is expected for September of the same year.

Once complete, MICE will be used in air defence units of all NATO nations that are currently using MASE; today more than 60 installations in 20 NATO countries use MASE to execute Air Command and Control on national territory. In addition, MICE will be available to create, if required, console applications for other air defence related systems.


The screenshots are based on a development version of MICE, data displayed are simulated and do not reflect any real sensor of flying aircraft and are "artificial".

Overview. The application shows two geographic displays where the aircraft tracks are presented together with additional information. Data in the displays are organized in layers that can be enabled and disabled. Each item on the map can be accessed to display its properties. Since MICE uses the NetBeans window manager, the application layout can be customized at users' will:

Flight plan. Together with the tracks, the users can display the Flight Plans received from civilian or military Air Traffic Control centres:

Multiple flight plans. The user can display multiple flight plans simultaneously:

Depths & streets. A number of geographical layers are available to be displayed, for example seas/oceans depth lines (first pic below) or streets (second pic below).

Track over. The tracks on the screen can be displayed together with labels; any of the track properties can be set by the user to be part of the label.

Published at DZone with permission of its author, Angelo D' Agnano.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Andy Till replied on Wed, 2011/07/13 - 10:46am

How much testing did the software have to go through?  I didn't think java could pass any safety critical tests since it is so massive and indeterminate (GC/JIT).

Angelo D' Agnano replied on Wed, 2011/07/13 - 12:56pm in response to: Andy Till

First, it is important to mention that the Java developed application is only the front-end of the entire system.

Garbage Collection was (and still is) one my greatest concerns. We spent a considerable amount of time tweaking the JVM settings to make sure that the garbage collector would not impact the real-time performance of the application.

Up to now, we have been quite successful and we do not experience, in normal use, on our reference platform, "Stop the world" pauses affecting the overall performance. In case any external factor degrades the performance, the operator is informed so that corrective actions can be taken timely.

For what concerns the safety aspects, we adopt specific procedures for the design the coding and the test; all aspects of the development process adhere to standards that will support the appropriate SIL (Safety Integrity Level) claim for the operational use.

Andy Till replied on Thu, 2011/07/14 - 4:01am

Congratulations, getting good GC performance is no mean feat, especially when I expect 3rd party code makes up a decent percentage of the code base. 

Rob Ratcliff replied on Mon, 2011/08/15 - 9:25pm in response to: Angelo D' Agnano


Could you share the JVM settings that you used to optimize the real-time performance? It may save other developers some time iterating on the various flags.




Angelo D' Agnano replied on Mon, 2011/08/22 - 4:17pm

Hi Rob, sorry for the late reply.

I am on vacation and I do not have the exact setting available.

There is no silver bullet valid for all applications, we regularly have to check and tune the settings while the application grows.

So to say that the best settings really depend on the amount and on the nature of the data that your application processes.

For example, in MICE, radar data are stored to provide a history function so they normally last quite some time, map data are basically permanent, on the other end, all network messages used to exchange data with the servers live only for a very short period of time.

We do use the concurrent low pause collector (-Xincgc) together with a careful sizing of the minimum and maximum heap size.
We have experienced that, despite what may seem logical to some, increasing the maximum heap size beyond a certain limit is counterproductive because it increases the duration of the 'stop the world' pauses.

We have also tried the 'NewRatio' , 'SurvivorRatio' and the 'CMSInitiatingOccupancyFraction' settings with mixed results, so currently we do not use them.

Useless to say, all the settings will have to be verified again when we will migrate to Java 7. 

A real goldmine on this subject is: Tuning Garbage Collection with the 5.0 Java[tm] Virtual Machine from Oracle.

I hope I answered your question.


Danish12 Ali replied on Mon, 2013/07/08 - 5:54am

 Good to see Chris is still doing interesting courses.  The Advanced Scripting, PyGame assignment is probably my most memorable at Sheffield Hallam. haynes t-shirt

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.