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 Grund­lage unter­schied­li­cher Design-Prinzi­pien entstan­den. Entspre­chend verschie­den sind die Vorge­hens­wei­sen in den darin entwi­ckel­ten Program­men. Der Anspruch an eine (automa­ti­sierte) Migration kann nicht nur die Überfüh­rung der Syntax einer Sprache in die andere sein, sondern auch die verschie­de­nen Sprach-Designs sollten respek­tiert und berück­sich­tigt werden. Das Ziel ist es, die “Seele” der COBOL-Programme einzu­fan­gen, diese aber in den generier­ten Java-Program­­men modern zu repräsentieren.

Mit der neuen Version 2.0 des CoJaC (COBOL to Java Conver­ter) ist es gelun­gen, eine Reihe von moder­nen Paradig­men in den automa­tisch migrier­ten Quell­text zu integrie­ren. Dadurch finden sich die ursprüng­li­chen COBOL-Entwick­­ler immer noch in ihren Program­men wieder und Java-Entwick­­ler können mit bekann­ten Verfah­ren und Mustern arbei­ten. In den folgen­den Abschnit­ten werden die wesent­li­chen Verbes­se­run­gen beschrieben.

Weniger Boiler­p­­late-Code

Beson­ders der Umgang mit Daten­ty­pen unter­schei­det sich zwischen COBOL und Java. Deshalb war es bisher nötig, konver­tierte Daten­struk­tu­ren mit einer Reihe von Metho­den anzurei­chern, welche für einen saube­ren Umgang notwen­dig sind. Dieser sogenannte Boiler­p­­late-Code verrin­gert die Lesbar­keit und erschwert die Arbeit mit den generier­ten Java-Klassen. Aus diesem Grund wird er von CoJaC 2.0 nun mit Hilfe von Annota­tion Proces­sing automa­tisch generiert. Die manuelle Wartung dieser Metho­den entfällt damit zukünftig.

Verkür­zung langer Variablenzugriffe

In COBOL ist es üblich, dass bei Zugrif­fen auf verschach­telte Elemente Zwischen­stu­fen einfach wegge­las­sen werden können, solange die Eindeu­tig­keit bewahrt bleibt. Dieses Feature konnte der generierte Java-Code nicht leisten. Es entstan­den teilweise sehr lange Zugriffe auf verschach­telte Daten­ele­mente. Analog zur oben aufge­führ­ten Neuerung kommt nun auch hier eine neue Annota­tion zum Einsatz, mit welcher für solche Fälle spezi­elle Getter und Setter generiert werden, die einen verkürz­ten Zugriff auf verschach­telte Elemente erlau­ben. Dadurch wird die Lesbar­keit des Java-Codes deutlich verbessert.

Einheit­li­cher Zugriff auf Schnitt­stel­len und Systemfunktionen

Bisher wurde in CoJaC der Ansatz verfolgt, die Schnitt­stel­len und System­funk­tio­nen (z.B. SQL) analog zu den entspre­chen­den Vorbil­dern aus COBOL umzuset­zen. Das erlaubte zwar im generier­ten Java-Code ein schnel­les Wieder­erken­nen der Vorbil­der aus dem COBOL-Code, resul­tierte aber in einer hetero­ge­nen Gestal­tung des Quell­codes. In der neuen CoJaC-Version 2.0 wurden die Schnitt­stel­len verein­heit­licht und auf Basis des Builder-Pattern neu zur Verfü­gung gestellt. Dadurch wird der Umgang mit ihnen verein­facht und analog zu vielen anderen Verfah­ren in der “Java-Welt” gestaltet.

GO TO

Wie allge­mein bekannt ist, unter­stützt Java kein GO TO. In COBOL ist es aber oft ein belieb­tes Mittel, um den Steuer­fluss eines Programms zu gestal­ten. CoJaC unter­stützte bisher nur bestimmte Varian­ten der GO TO-Anwei­sung. Mit CoJaC 2.0 können durch ein neues Verfah­ren nun alle Varian­ten von GO TO in Java abgebil­det werden.

Weiter­füh­rende Infor­ma­tio­nen zur Migration von COBOL nach Java und zu CoJaC finden Sie unter CoJaC.
Bei Inter­esse an einer COBOL-Java-Migration nehmen Sie bitte Kontakt mit uns auf.