Speaker details

Federico Tomassetti

Strumenta

Federico is the founder at Strumenta and a co-founder at ClearBox. At Strumenta he works on better tools for better work. By creating DSLs and improving development tools he aims to improve the work of domain experts and developers. At ClearBox he is designing a software product for explainable AI. In both cases his goal is to democratize access to technology: to software development at Strumenta, and to AI at ClearBox. He has a PhD and working experience in Italy, Germany, Ireland, and France. Among others he worked for TripAdvisor and Groupon.

Writing in Kotlin an open-source interpreter for RPG

Conference
Programming languages

Successful systems survive through the decades and across technological evolutions. Therefore it is natural that software of great value is written in an outdated language.

This brings problems, because it is difficult to recruit developers, compilers are not available for modern systems, and there are very few libraries available.

What can an organization do about that? Rewriting the software in a modern language means losing a huge knowledge capital. It requires a large investment for an uncertain result.

In the case of RPG we found a solution: writing an interpreter in Kotlin, so that we could execute RPG code on the JVM. This approach permits an incremental transition: the business logic can be immediately executed on the JVM and over time some technological parts of the system can be rewritten in Java, Kotlin, or any other language supported on the JVM. In this way we can the transition started, without a big-bang approach. We move from mainframes to the cloud, without changing the code that served our client well for decades.

This approach is being used by a large company developing an ERP used by thousands of clients. 

We will see how an interpreter can be built for the JVM, in Kotlin. We will discuss the challenges we had to face and take a look at the code of the real system, which is completely open-source

Legacy
Art Of Parsing
Compilation
Kotlin
JVM

back to top