Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

NASA Conjunction Assessment with JavaFX and the NetBeans Platform

DZone's Guide to

NASA Conjunction Assessment with JavaFX and the NetBeans Platform

· Java Zone
Free Resource

Bitbucket is for the code that takes us to Mars, decodes the human genome, or drives your next car. What will your code do? Get started with Bitbucket today, it's free.

The Tracking and Orbit Determination Quality (TODQ) Viewer is a collection of prototype 2D and 3D interactive visualizations for analysis software updates by NASA Robotic Conjunction Assessment Risk Analysis (CARA) using Java and JavaFX 8.  

The NASA Robotic CARA team is currently interested in looking for unique ways to display data in order to better analyze potential satellite collisions.  Better understanding the sources of error in the position and velocity estimates of the two satellites allows for better recommendations made to satellite owners/operators.

Why is Java 8 / JavaFX 8 Important?

The TODQ Viewer is a plugin to the more comprehensive plugin library and NetBeans Platform application named Polaris, developed by a.i. solutions, Inc. (http://www.ai-solutions.com/), in support of operational analysis. Over the course of the past two years, Polaris was extended to host various tools and plugins within a single application hosted within a secure environment at Vandenberg AFB. The application and its initial plugins were developed using an early version of Java 7 and NetBeans IDE 7.3.

While in a typical environment, bringing in third party plugins and libraries is a simple process, it certainly is not the case for a secure environment. After a developer submits requests for software approval and accreditation and the approval process can take months to complete, without any guarantee that the software will be approved. In this case, many smaller libraries are not cost effective to push through this process. With the recent approval for Java 8 / JavaFX 8 usage on the system hosting Polaris, significantly more capabilities are available in a single accredited software package. Additionally, JavaFX 8 opened a new world of interactive visualization possibilities where previously we relied on ASCII files being fed into Matlab or LibreOffice.

How Does the NetBeans Platform Help?

The budget for this prototype development effort was thin, so there wasn’t much time for writing plumbing code and perfecting UI features. The NetBeans platform really delivered most of that in a nice and easy to use package, and allowed us to deliver significantly more capability than initially promised.

Once JavaFX became a possibility for us, the NetBeans platform provided the ability to mix Swing plug-ins with newer JavaFX plugins. In addition to speeding development by using two technologies within the same platform, the NetBeans Platform windowing framework helped alleviate technical issues JavaFX windowing.

The NetBeans Platform Lookup made connecting the custom graphic JavaFX components to the standard interactive 2D components simple yet independent.

Nick Sabey (nick.sabey@ai-solutions.com, @nsabey) is a senior developer and analyst for a.i. solutions, Inc. Nick is a contractor to NASA with the NASA Robotic Conjunction Assessment Risk Analysis (CARA) group, working remotely at Vandenberg Air Force Base in California. This effort and others will be presented in the NASA Mission Software Development on the Eights: Java 8, JavaFX 8, and NetBeans 8 (CON1994) panel at JavaOne 2014, alongside Sean Phillips, Keith Chapman, and Sean Henely.

Are you using Bitbucket to accomplish your company's mission? Share your company’s mission with #Forthecode for a chance to be featured on our homepage, our social media channels, or win a free t-shirt!

Topics:

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}