Ada2Java Project Improves Integration of Languages in Real-Time and Embedded Systems
Historically, Atego customers have implemented many critical systems in the Ada programming language. More recently, new projects are choosing to use the Java language, though considerable legacy software components are implemented in the Ada language. This project supports improved integration of legacy and modern software components. It consists of 4 major components.
- Automation to support the translation of Ada programs into the Java language. This effort uses Ada source code analysis technologies to discover the intended behavior of an Ada program and produces an equivalent Java program that implements the same behavior. The initial emphasis is on literal translation, with the Java program behaving identically to the Ada program from which it is derived. A subsequent enhancement would tailor the translation to produce Java code that is more stylistically familiar to Java programmers, sacrificing exact semantic equivalence.
- High-level integration of Ada and Java software components in mixed-language applications. Historically, the integration of Ada and Java software components in a mixed-language application requires that developers manually implement interface wrappers using JNI (Java Native Interface) protocols. The traditional approach is tedious and error prone, hindering effective coordination between Java and Ada software and adding significantly to the costs and risks of maintaining the mixed-language application. This effort is developing software tools to automatically generate the interfaces between Java and Ada software components, supporting mixed-language object-oriented polymorphism (Ada can extend Java types, and Java can extend Ada types), and automating the safe management of dynamically allocated objects that are shared between Ada and Java components.
- Multi-Language Debugging. As legacy systems and components are integrated into more modern computing environments, it is increasingly common for large applications to be comprised of components implemented in multiple languages, including Ada, C, C++, and Java. During development of these mixed language applications, it is especially difficult to debug interactions involving data and control structures that span multiple distinct programming languages. This effort makes changes to existing Ada and Java debugging interfaces and implements a common debugging user interface to allow a single debugger to access all aspects of a mixed language application. Specific support is provided for Ada, C, C++, safety-critical Java, and traditional Java.
- Safety-Critical Java. With the increased interest in the use of Java for high-integrity development, a recent standardization effort within the Java Community Process has undertaken to define a specification for safety-critical Java under the JSR (Java Specification Request) 302 project number. This standard will serve as a foundation for future uses of Java in applications that require safety certification, such as commercial avionics and passenger railway control. This particular effort involves evolution of Atego’s existing Perc Pico technology to make it compliant with the emerging JSR-302 specification.
Work on all four aspects of this project is ongoing and concurrent. The effort began in 2009 with Aonix and will continue through the end of 2011.
Atego has been supported in this project by OSEO and the European Regional Development Fund (FEDER)