Experience on Automatically Converting a C++ Monolith to Java EE
This paper provides practical insights for software engineers undertaking large-scale C++ to Java EE migrations, particularly concerning architectural shifts and continuous conversion in active development environments.
This paper describes the experience of converting an 800k line C++ monolithic codebase into a Java EE application running on WildFly. It details the techniques used to overcome common C++ to Java conversion challenges and the development of a clang-tool-based software for continuous Java regeneration.
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.