Over a million developers have joined DZone.

NASA Conjunction Assessment with JavaFX and the NetBeans Platform

· Java Zone

Microservices! They are everywhere, or at least, the term is. When should you use a microservice architecture? What factors should be considered when making that decision? Do the benefits outweigh the costs? Why is everyone so excited about them, anyway?  Brought to you in partnership with IBM.

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.

Discover how the Watson team is further developing SDKs in Java, Node.js, Python, iOS, and Android to access these services and make programming easy. Brought to you in partnership with IBM.

Topics:

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

SEE AN EXAMPLE
Please provide a valid email address.

Thanks for subscribing!

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

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

{{ parent.tldr }}

{{ parent.urlSource.name }}