Einbinden von GraalJS als Scripting Engine in den Oracle Data Modeler

03.
März
2025
Veröffentlicht von: Dr. Gudrun Pabst

Bei der Datenmodellierung fallen oft Routinearbeiten an wie das Hinzufügen von Audit-Spalten an alle Tabellen oder das Erstellen von Triggern mit Standardcode. Die Automatisierung dieser Tätigkeiten erleichtert nicht nur die Arbeit des Datenmodellierers, sondern erhöht auch die Qualität des Modells, da sichergestellt wird, dass alle Objekte tatsächlich den vorgegebenen Konventionen entsprechen.
Mit den Transformations bietet der Oracle Data Modeler eine Schnittstelle, über die das Datenmodell programmgesteuert angepasst werden kann.
Grundlage dafür ist, dass Java über „Scripting for Java“ die Möglichkeit zur Verfügung stellt, Skript-Sprachen in Java-Programme einzubinden und den Endanwendern so eine Erweiterung des Programms durch eigene Funktionalitäten zu ermöglichen. Als Sprache kann dabei eine beliebige Skript-Sprache verwendet werden, für die es eine entsprechende Implementierung gibt.
 

Skript-Sprachen im Oracle SQL Developer Data Modeler

Der Oracle Data Modeler bietet dem Datenmodellierer diese Erweiterung durch Skript-Sprachen über die Transformations. Für JavaScript und für JRuby liefert der Data Modeler Beispielskripte mit.
Die Scripting Engine für JRuby muss allerdings erst eingebunden werden.
Für JavaScript war anfangs Mozilla Rhino als Scripting Engine eingebunden, da das JDK zu dieser Zeit Mozilla Rhino umfasste. Nachdem in der JVM Mozilla Rhino durch die Scripting Engine Oracle Nashorn ersetzt wurde, wurde auch im Oracle Data Modeler die Scripting Engine auf Oracle Nashorn umgestellt.

Oracle SQL Developer Data Modeler 24.3

Ab der Version 24.3 benötigt der Oracle SQL Developer und damit auch der Data Modeler mindestens JDK 17 . Oracle Nashorn ist allerdings nur bis Version 14 im JDK enthalten. Daher zeigt der Aufruf der Custom Transformation Scripts jetzt für alle Beispielskripte an, dass die zugehörige Scripting Engine fehlt:

Oracle Data Modeler

Als Ersatz wird die Verwendung von GraalJS empfohlen, dieses wird auch beim Download des SQL Developer mit JDK im Verzeichnis sqldeveloper\graalJs mitgeliefert.

Varianten zum Einbinden der Scripting Engine GraalJS

Um eine Scripting Engine einzubinden, müssen alle von der Engine benötigten JAR-Files dem JDK zur Verfügung gestellt werden, mit dem der SQL Developer ausgeführt wird. Für GraalJS sind dies die Dateien aus dem Verzeichnis sqldeveloper\graalJs:

graal-js-23.0.2.jar
graal-js-scriptengine-23.0.2.jar
graal-regex-23.0.2.jar
graal-sdk-23.0.2.jar
graal-truffle-api-23.0.2.jar
icu4j-74.2.jar


Es gibt zwei Varianten, wie GraalJS in den Oracle SQL Developer Data Modeler eingebunden werden kann:

  • über Konfigurationsdateien
  • durch Kopieren der JAR-Files

Einbinden über Konfigurationsdateien

Im folgenden wird davon ausgegangen, dass der Oracle SQL Developer Data Modeler als Bestandteil des Oracle SQL Developer mit JDK heruntergeladen wurde und dieser im Verzeichnis <sqldeveloper_pfad> abgelegt ist. Dann sind die JAR-Files für GraalJS im Verzeichnis <sqldeveloper_pfad>\graalJs (im folgenden <graaljs_pfad>) zu finden.
Das Einbinden über Konfigurationsdateien erfolgt durch die Anweisung AddJavaLibFile für jedes benötigte JAR-File.

Der einzelne Anwender kann die JAR-Files für GraalJS einbinden, indem er in der Datei
C:\Users\<username>\AppData\Roaming\sqldeveloper\<version>\product.conf (Windows) bzw. ~/.sqldeveloper/<version>/product.conf (Linux) folgende Zeilen anhängt:

AddJavaLibFile <graaljs_pfad>\graal-js-23.0.2.jar
AddJavaLibFile <graaljs_pfad>\graal-js-scriptengine-23.0.2.jar
AddJavaLibFile <graaljs_pfad>\graal-regex-23.0.2.jar
AddJavaLibFile <graaljs_pfad>\graal-sdk-23.0.2.jar
AddJavaLibFile <graaljs_pfad>\graal-truffle-api-23.0.2.jar
AddJavaLibFile <graaljs_pfad>\icu4j-74.2.jar


Für alle Anwender des Rechners können die JAR-Files zentral eingebunden werden, indem folgende Zeilen in der Datei <sqldeveloper_pfad>\sqldeveloper\bin\sqldeveloper.conf (für Linux analog) am Ende eingetragen werden. Hierbei können relative Pfade verwendet werden:

AddJavaLibFile ..\..\graalJs\graal-js-23.0.2.jar
AddJavaLibFile ..\..\graalJs\graal-js-scriptengine-23.0.2.jar
AddJavaLibFile ..\..\graalJs\graal-regex-23.0.2.jar
AddJavaLibFile ..\..\graalJs\graal-sdk-23.0.2.jar
AddJavaLibFile ..\..\graalJs\graal-truffle-api-23.0.2.jar
AddJavaLibFile ..\..\graalJs\icu4j-74.2.jar

Diese Methode kann unter Umständen nur mit Administratorberechtigungen durchgeführt werden.

Kopieren der JAR-Files

Der Oracle SQL Developer liest beim Start alle JAR-Files aus dem Modul-Pfad <sqldeveloper_pfad>\modules\javafx\windows-x64\lib (Windows) bzw. <sqldeveloper_pfad>/modules/javafx/linux-x64/lib (Linux) ein. Werden die JAR-Files von GraalJS in dieses Verzeichnis kopiert, erkennt der Oracle SQL Developer die GraalJS Scripting Engine.
Auch diese Methode erfordert unter Umständen Administratorrechte.

Umstellen der Scripting Engine

Bislang sind die Skripte eingestellt auf die Verwendung der Scripting Engine „Oracle Nashorn“. Für alle Skripte muss dieser Eintrag jetzt noch umgestellt werden auf die Scripting Engine „Graal.js“:

Oracle Data Modeler

Einbinden der Scripting Engine für JRuby

Will man die Scripting Engine „JSR 223 JRuby Engine“ einbinden, benötigt man zunächst das JAR-File
jruby-core-9.4.12.0.jar
für die Scripting Engine (falls vorhanden, auch eine neuere Version). Diese Datei kann man aus dem Maven-Repository herunterladen.
Das Einbinden erfolgt genauso wie bei GraalJS, das abschließende Umstellen der Scripting Engine entfällt.
 

 

Jede Menge Know-how für Sie!

In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.