Home >> Features >> Feature Articles >> Using Java in Avionics and UAV Applications

Using Java in Avionics and UAV Applications

advertisement:

Though developers of avionics software are among the most conservative in the software engineering community, and rightly so, Java is beginning to penetrate even this very specialized industry. The reasons are compelling. Java, designed in the 1990s, offers much better abstraction and stronger object-oriented encapsulation than C and C++. Rigorous enforcement of the type system reduces software engineering errors. Built-in syntactic and library features make multithreaded programming on multi-core processors straightforward. And the popularity of Java makes it easier to recruit Java developers, to license Java development tools, and to find and reuse off-the-shelf software components. Finally, the Java platform offers portability and scalability benefits that far exceed what has been achieved with more traditional legacy languages.

Block diagram illustrating interactions between onboard components of a modular software architecture supporting flexible configuration of Unmanned Aerial Vehicle (UAV) capabilities. Object-oriented design principles enable modular composition of independently developed components. Composition flexibility is required to support evolution of software and hardware capabilities and to tailor on-board capabilities for individual missions.
Block diagram illustrating interactions between onboard components of a modular software architecture supporting flexible configuration of Unmanned Aerial Vehicle (UAV) capabilities. Object-oriented design principles enable modular composition of independently developed components. Composition flexibility is required to support evolution of software and hardware capabilities and to tailor on-board capabilities for individual missions.
Compared with development in C and C++, typical Java developers are roughly twice as productive during the implementation of new capabilities, and are up to ten times as productive during typical software maintenance activities. With respect to this metric, software maintenance includes making small incremental refinements to the existing software in order to fix bugs, tune performance, or evolve functionality; porting an existing software system to a new operating system or hardware platform; and combining the capabilities of one large software system with another in order to build a larger system that combines the capabilities of each independent subsystem.

The relevance of traditional software engineering benefits to safety-critical avionics development is growing as the software used for avionics and UAVs increases in size and complexity. At the same time, operational practices for these systems are placing increased demand on modular composition of software components.

Autonomous Systems

Early UAVs were little more than remote-controlled drones, with no onboard decision making, and only the minimal control software required to implement the operations requested by the remote-control operator. More recent UAVs are significantly more capable. Some autonomous UAVs now run their own mission planning software onboard. UAVs that operate autonomously can respond quicker to unanticipated threats and opportunities. They can also capture and assimilate more data from a more flexible array of sensors, and can make more informed decisions based on availability of this information.



Trending this Month

Newsletter

Subscribe today to receive the INSIDER, a FREE e-mail newsletter from Embedded Technology featuring exclusive previews of upcoming articles, late breaking NASA and industry news, hot products and design ideas, links to online resources, and much more.

Sign up now >>