29.07.2019 News
CoJaC 2.0: Neue Features für unser Werkzeug zur COBOL-Java-Migration
Die Sprachen COBOL und Java sind auf der Grundlage unterschiedlicher Design-Prinzipien entstanden. Entsprechend verschieden sind die Vorgehensweisen in den darin entwickelten Programmen. Der Anspruch an eine (automatisierte) Migration kann nicht nur die Überführung der Syntax einer Sprache in die andere sein, sondern auch die verschiedenen Sprach-Designs sollten respektiert und berücksichtigt werden. Das Ziel ist es, die “Seele” der COBOL-Programme einzufangen, diese aber in den generierten Java-Programmen modern zu repräsentieren.
Mit der neuen Version 2.0 des CoJaC (COBOL to Java Converter) ist es gelungen, eine Reihe von modernen Paradigmen in den automatisch migrierten Quelltext zu integrieren. Dadurch finden sich die ursprünglichen COBOL-Entwickler immer noch in ihren Programmen wieder und Java-Entwickler können mit bekannten Verfahren und Mustern arbeiten. In den folgenden Abschnitten werden die wesentlichen Verbesserungen beschrieben.
Weniger Boilerplate-Code
Besonders der Umgang mit Datentypen unterscheidet sich zwischen COBOL und Java. Deshalb war es bisher nötig, konvertierte Datenstrukturen mit einer Reihe von Methoden anzureichern, welche für einen sauberen Umgang notwendig sind. Dieser sogenannte Boilerplate-Code verringert die Lesbarkeit und erschwert die Arbeit mit den generierten Java-Klassen. Aus diesem Grund wird er von CoJaC 2.0 nun mit Hilfe von Annotation Processing automatisch generiert. Die manuelle Wartung dieser Methoden entfällt damit zukünftig.
Verkürzung langer Variablenzugriffe
In COBOL ist es üblich, dass bei Zugriffen auf verschachtelte Elemente Zwischenstufen einfach weggelassen werden können, solange die Eindeutigkeit bewahrt bleibt. Dieses Feature konnte der generierte Java-Code nicht leisten. Es entstanden teilweise sehr lange Zugriffe auf verschachtelte Datenelemente. Analog zur oben aufgeführten Neuerung kommt nun auch hier eine neue Annotation zum Einsatz, mit welcher für solche Fälle spezielle Getter und Setter generiert werden, die einen verkürzten Zugriff auf verschachtelte Elemente erlauben. Dadurch wird die Lesbarkeit des Java-Codes deutlich verbessert.
Einheitlicher Zugriff auf Schnittstellen und Systemfunktionen
Bisher wurde in CoJaC der Ansatz verfolgt, die Schnittstellen und Systemfunktionen (z.B. SQL) analog zu den entsprechenden Vorbildern aus COBOL umzusetzen. Das erlaubte zwar im generierten Java-Code ein schnelles Wiedererkennen der Vorbilder aus dem COBOL-Code, resultierte aber in einer heterogenen Gestaltung des Quellcodes. In der neuen CoJaC-Version 2.0 wurden die Schnittstellen vereinheitlicht und auf Basis des Builder-Pattern neu zur Verfügung gestellt. Dadurch wird der Umgang mit ihnen vereinfacht und analog zu vielen anderen Verfahren in der “Java-Welt” gestaltet.
GO TO
Wie allgemein bekannt ist, unterstützt Java kein GO TO
. In COBOL ist es aber oft ein beliebtes Mittel, um den Steuerfluss eines Programms zu gestalten. CoJaC unterstützte bisher nur bestimmte Varianten der GO TO
-Anweisung. Mit CoJaC 2.0 können durch ein neues Verfahren nun alle Varianten von GO TO
in Java abgebildet werden.
Weiterführende Informationen zur Migration von COBOL nach Java und zu CoJaC finden Sie unter CoJaC.
Bei Interesse an einer COBOL-Java-Migration nehmen Sie bitte Kontakt mit uns auf.