Zwischen den primitiven Java-Datentypen und der native C-Darstellung wurde ein Mapping definiert, das im Wesentlichen auch für BS2000 gilt. Die folgende Tabelle gibt eine Übersicht und weist auf Besonderheiten hin:
Java-Typ | C-Typ | Kompatibler C-Typ | Bemerkung |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
| |
|
|
| ab C/C++ V3.0B |
|
|
| IEEE |
|
|
| IEEE |
|
|
|
Tabelle 7: Java-Datentypen in C
Für komplexe Datentypen definiert JNI entsprechende Zugriffs- und Konvertierungsfunktionen, die im BS2000 analog zu anderen Betriebssystemen benutzt werden können. Eine besondere Rolle spielen dabei Strings, weil die von Java verwendete UTF8-Codierung von Unicode-Strings zwar eine enge Verwandschaft zu ASCII, aber keinerlei Ähnlichkeit zu einer EBCDIC-Codierung haben. Ein C-Programmierer in einer ASCII-Umgebung (Unix- und Windows-Systeme) erliegt daher sehr leicht der Versuchung, diese Ähnlichkeit zu nutzen, mit der Konsequenz, dass solche C-Programme nicht ohne weiteres im BS2000 (also EBCDIC-Umgebung) verwendet werden können.
Bei der Verknüpfung von C-Code und Java über das JNI kommt es im BS2000 zwangsläufig zum Zusammentreffen verschiedener Daten-Codierungen. Der Anwender muss für sich entscheiden, wo er entsprechende Übergänge zwischen den Daten-Darstellungen vollziehen möchte. Die wesentlichen und kritischen Übergänge sind in der folgenden Tabelle dargestellt:
Daten | Darstellung in Java | normale Darstellung in BS2000 | alternative Darstellung in BS2000 |
Ganze Zahlen | 32 und 64 Bit | 32 Bit | 32 und 64 Bit |
Gleitkommazahlen | IEEE-Format | /390-Format | IEEE-Format |
Strings, Zeichen | Unicode, UTF-8, ASCII | EBCDIC | ASCII |
Tabelle 8: C-Code in Java und BS2000
Damit der Anwender in der Wahl der Übergangsstelle frei ist, werden zu den verschiedenen Themen entsprechende Hilfsmittel durch Compiler und Laufzeitsysteme bereitgestellt.
Typischerweise wird ein Anwender der JNI-Schnittstelle diesen Übergang entweder direkt an der JNI-Schnittstelle vollziehen und seinen gesamten C-Code in der üblichen BS2000-Umgebung laufen lassen. Alternativ kann er Teile seines C-Codes (oder auch alles) in der näher an Java (und Unix-Systemen) orientierten alternativen Darstellung laufen lassen und z.B. nur beim Übergang zu Legacy-Anwendungen (Nutzung altbewährter Software) entsprechende Konvertierungen vornehmen.
Im Folgenden werden für die verschiedenen Datenarten die angebotenen Unterstützungen dargestellt.