Previous IDL Connectivity Bridges: Using Java Objects in IDL Next

IDL-Java Bridge Data Type Mapping

When data moves between IDL and a Java object, IDL automatically converts variable data types.

The following table maps how Java data types correlate to IDL data types.

Table 5-1: Java to IDL Data Type Conversion 

Table 5-1: Java to IDL Data Type Conversion 
Java Type (# bytes)
IDL Type
Notes
boolean (1)
Integer
True becomes 1, false becomes 0
byte (1)
Byte
 
char (2)
Byte
The bridge handles Java UTF characters
short (2)
Integer
 
int (4)
Long
 
long (8)
Long64
 
float (4)
Float
 
double (8)
Double
 
Java.lang.String
String
Java has the notion of a NULL string (the java.lang.String reference equals null) and the concept of an empty string. IDL makes no such differentiation, so both are identically converted.
Arrays of the above types
IDL array of the same dimensions (from 1 to 8 dimensions) and corresponding type.
 
Java.lang.Object (or array of java.lang.Object) and any subclass of java.lang.Object
IDL array of primitives or IDL array of IDLjavaObjects
In Java, everything is a subclass of Object. If the Java object is an array of primitives, an IDL array of the same dimensions and corresponding type (shown in this table) is created. IDL similarly converts arrays of primitives, arrays of strings, arrays of other Java objects to an IDL Java object of the same dimensions. If the Object is some single Java object, IDL creates an object reference of the IDLjavaObject class.
Null object
IDL Null object
 

The following table shows how data types are mapped from IDL to Java.

Table 5-2: IDL to Java Data Type Conversion 

Table 5-2: IDL to Java Data Type Conversion 
IDL Type
Java Type (# bytes)
Notes
Byte
byte (1)
IDL bytes range from 0 to 255, Java bytes are -128 to 127. IDL bytes converted to Java bytes will retain their binary representation but values greater than 127 will change. For example, BYTE(255) becomes a Java byte of -1. If BYTE is converted to wider Java value, the sign and value is preserved.
Integer
short (2)
 
Unsigned integer
short (2)
IDL unsigned integers range from 0 to 65535, Java shorts are -32768 to 32767. IDL unsigned integers converted to Java shorts will retain their binary representation but values greater than 32768 will change. For example, UINT(65535) becomes a Java short of -1. If UINT is converted to wider Java value, the sign and value is preserved.
Long
int (4)
 
Unsigned long
int (4)
IDL unsigned longs range from 0 to 4294967295, Java ints are -2147483648 to 2147483647. IDL unsigned longs converted to Java ints will retain their binary representation but values greater than 2147483647 will change. For example, ULONG(4294967295) becomes a Java int of -1. If ULONG is converted to wider Java value, the sign and value is preserved.
Long64
long (8)
 
Unsigned Long64
long (8)
IDL unsigned long64 range from 0 to 18446744073709551615, Java ints range from
-9223372036854775808 to 9223372036854775807. IDL unsigned long64 converted to Java longs will retain their binary representation values greater than 9223372036854775807 will change. For example, ULONG64(18446744073709551615) becomes a Java long of -1.
Float
float (4)
 
Double
double (8)
 
String
Java.lang.String
 
Arrays of the above types
Java array of the same dimensions and corresponding type
 
IDLjavaObject
Object of corresponding Java class
 
Arrays of objects
Java array of the same dimensions, consisting of corresponding Java proxy objects
Only objects of type IDLjavaObject are converted.
Null object
Java null
 

When calling a Java method or constructor from IDL, the data parameters are promoted as little as possible based on the signature of the given method. The following table shows how data types are promoted within Java relative to IDL.


Note
When strings and arrays are passed between IDL and Java, the array must be copied. Depending upon the size of the array, this copy may be time intensive. Care should be taken to minimize array copying.

Table 5-3: Java Data Type Promotion Relative to IDL 

Table 5-3: Java Data Type Promotion Relative to IDL 
IDL Type
Java Type (to order of desired promotion)
Notes
Byte
byte, char, short, int, long, float, double, boolean
 
Integer
short, int, long, float, double, boolean
 
Unsigned integer
short, int, long, float, double, boolean
 
Long
int, long, float, double, boolean
 
Unsigned Long
int, long, float, double, boolean
 
Long64
long, float, double, boolean
 
Unsigned Long64
long, float, double, boolean
 
Float
float, double
 
Double
double
 
String
Java.lang.String
 
IDLjavaObject
Java.lang.Object
 

  IDL Online Help (March 06, 2007)