War Fighter on the NetBeans Platform
Agile Client is a NetBeans Platform application developed by Northrop Grumman in partnership with the Defense Information System Agency (DISA). It brings the war fighter a 3-D common operational picture (COP) workstation designed for greater efficiency and mission effectiveness. This efficiency is empowered by its ability to be installed and upgraded on demand. Its mission effectiveness is permitted by the ability to tailor the user’s application with only the capabilities and data they need for their specific mission.
The interview below is with Charlie Black, who runs the team using the NetBeans Platform at Northrop Grumman.
Hi Charlie, who are you and what do you do?
My name is Charlie Black and I have worked for Northrop Grumman since 1998. Over that time I have been working as a software engineer on a Global Command and Control System (GCCS) program supporting data fusion, dissemination and display technologies.
I am currently running a team that uses the NetBeans Platform for a product called Agile Client, which is now part of GCCS.
Team: Greg Gibsen, Charlie Black, Brice Bingman and James Maloney
What are the technical specifics of Agile Client?
The Agile Client uses several commercial off the shelf (COTS) products that make up its core feature set:
- It uses the NetBeans Platform, which provides the services common to almost all large desktop applications: window management, menus, settings and storage, an update manager, and file access.
- For map and visual rendering, Agile Client uses NASA’s World Wind product, enabling the retrieval of geospatial data via open standards that are embraced by the international community.
- For providing data services, Agile Client uses Gemstone GemFire, which provides ultra low-latency distributed caching with high availability and no data loss.
Here's a screenshot of Agile Client in action:
Agile Client is also integrated with GCCS COP Collaboration. This allows one or more war fighters to work simultaneously on a single map. They can collaboratively create GCCS Overlays, share files and communicate by instant messaging and Voice over IP. This is all done with the Extensible Messaging and Presence Protocol (XMPP), which is a set of open XML technologies for presence and real-time communication.
What are the two or three things that you are happiest about, relating to this application?
- Since the NetBeans Platform is based on standard Java UI technologies, we are able to integrate existing Java windows directly, without any issues. This has accelerated our development substantially.
- Using Sun UI guidelines and reusable components in any new development, we have actually made an application that is embraced by our customers as looking modern.
Underneath this application is the NetBeans Platform. Why?
The main reason for going with a rich client platform such as the NetBeans Platform was the module system. It will help with our deployment of a large scale application on an enterprise level. I can envision a future where there will be hundreds of modules deployed in the application. Then, using the update center, we can keep those applications up to date.
How did you find out about it? When? Why did you start using it?
We have known about NetBeans for a long time. However it was used mainly as a developer tool. It wasn’t until NetBeans 6.0 that we started using it as our platform for basing new work on.
What are the main things you gained from the NetBeans Platform?
- Using the NetBeans Platform, we decreased our time to develop our application by using existing window components.
- Also, the automatic updates are integral to our final application. In the past, it would have taken months or even years to get a patch to our end users.
- That said, the most significant gain has been the community!
Which APIs have you used? Which ones are your favorites and why?
We actually use several API sets, with just about every one enabled. The Windows API is incredible, as that is what the end user sees that allows them to tailor their display. With the customization of toolbars, the end-user can make their own ad-hoc workflow. The other API that we have been impressed with is the Nodes API, providing a view to our layers on the 3D globe.
What could be improved about the NetBeans Platform?
- In our community OSGi is a big item, so if NetBeans could formally handle them for module deployment that would be a monumental win. Imagine a module of business intelligence that can be deployed in Glassfish and in the NetBeans Platform. I realize that some work has already been done in this area, but to see it on an official roadmap would be remarkable.
- After that, the Properties window could use something to make it more appealing. We are thinking of dropping our own Properties window in favor of the NetBeans implementation.
Overall, we have been really happy with the NetBeans Platform and the features it provides.
Do you have some tips and tricks for a complete newbie, who is getting started with the NetBeans Platform?
When new team members join, I customarily distribute to them a book on the NetBeans Platform. For further aid, I point them to the NetBeans Developer Wiki. There is an amazing amount of information available, detailing not only what the NetBeans Platform can do for you, but what can you do with the NetBeans Platform as well.
If more assistance is needed, I recommend just asking the community. Someone can usually help in answering any level of questions.
How have customers responded to this application and what are your plans for its future?
Our customers are very pleased with the application and they are moving forward with plans to base future work on the Agile Client.
Internally, we have made Agile Client with the goal of releasing portions back to the community. However, before that can be done, we have to figure out what that means from our customer’s standpoint.