Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Java-Datentypen in C

&pagelevel(3)&pagelevel

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

boolean

jboolean

unsigned char

JNI_FALSE, JNI_TRUE

byte

jbyte

signed char


char

jchar

unsigned short

Unicode

short

jshort

signed short


int

jint

signed int


long

jlong

signed longlong

ab C/C++ V3.0B

float

jfloat

float

IEEE

double

jdouble

double

IEEE

void

void

void


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.