Table of Contents
Fetching ...

Experience on Automatically Converting a C++ Monolith to Java EE

Andre Vehreschild, Lexi Pimenidis

TL;DR

The experience made during the C++ to Java conversion, the techniques used as well as the way to success of running the Java code on the application server for the first time are described.

Abstract

Converting a large C++ code base (800k lines of code) into Java alone is challenging. Changing the architecture from a monolith into an application adhering to the Java application server standard and to run it on WildFly is a different number. This report describes the experience made during the C++ to Java conversion, the techniques used as well as the way to success of running the Java code on the application server for the first time. The approaches to solve the usual C++ to Java culprits, like multiple inheritance, enum-handling and scoped objects are described. A clang-tool-based software is developed to continuously regenerate the Java, because development on the C++ code base continued.

Experience on Automatically Converting a C++ Monolith to Java EE

TL;DR

The experience made during the C++ to Java conversion, the techniques used as well as the way to success of running the Java code on the application server for the first time are described.

Abstract

Converting a large C++ code base (800k lines of code) into Java alone is challenging. Changing the architecture from a monolith into an application adhering to the Java application server standard and to run it on WildFly is a different number. This report describes the experience made during the C++ to Java conversion, the techniques used as well as the way to success of running the Java code on the application server for the first time. The approaches to solve the usual C++ to Java culprits, like multiple inheritance, enum-handling and scoped objects are described. A clang-tool-based software is developed to continuously regenerate the Java, because development on the C++ code base continued.
Paper Structure (10 sections, 12 figures, 2 tables)

This paper contains 10 sections, 12 figures, 2 tables.

Figures (12)

  • Figure 1: Component structure of the monolith
  • Figure 2: General conversion concept
  • Figure 3: Overview of the internal structure of the transpiler with some dataflow
  • Figure 4: Java templates for cast expressions
  • Figure 5: Example on member expression rewrites of a few std::string operators and functions.
  • ...and 7 more figures