Visible to Intel only — GUID: GUID-E35E4820-C704-48E8-9B32-61462222AB74
Visible to Intel only — GUID: GUID-E35E4820-C704-48E8-9B32-61462222AB74
Java* Limitations
Because Intel® Dynamic Application Loader (Intel® DAL) uses a Java* VM (Virtual Machine) that is designed for embedded systems and security, some features that exist in other popular Java implementations do not exist in Intel DAL.
The Intel DAL Java version is equivalent to JDK 1.6 with some limitations. Intel DAL does not support the following data types and language features:
- Float
- Double
- Referencing an external library
- Enums
- Regex
- Annotation
- Reflection
- Threads
In addition, various API levels have their own limitations. These limitations are listed below.
Java* Limitations for API Level 1.1 - 4 (Intel® Management Engine (Intel® ME) 9.5 and Below)
The following limitations apply to API levels 1.1 - 4 trusted applications.
When compiling for debugger, array initialization cannot be broken into multiple lines. Breaking into multiple lines will cause a compilation error. Example: Instead of doing this: private static byte[] myArray={3, 1}; Change it to a single line for successful compilation: private static byte[] myArray ={3,1}; |
Floating point type parameters are not supported by Intel® DAL. |
Java Limitations for API Level 5 and Above (Intel ME 10.0 and Above)
The following limitations apply to API level 5 trusted applications.
- Floating point type parameters are not supported.
- A package can reference a maximum of 128 other packages.
- The fully qualified name of a package may contain a maximum of 255 characters. The package name size is further limited if it contains one or more characters which, when represented in UTF-8 format, require multiple bytes.
- Package name is a jeff string type; the jeff string length can be 0-65535.
- A package can contain a maximum of 255 classes and interfaces.
- Number of classes and interfaces can be 0~65535.
- A class can implement a maximum of 15 interfaces, including interfaces implemented by super classes.
- An interface can inherit from a maximum of 14 super interfaces.
- A class in a trusted application package can have a maximum of 256 public or protected static non-final fields. A class in a library package can have a maximum of 255 public or protected static non-final fields. There is no limit to the number of static final fields (constants) declared in a class.
- A class in a trusted application package can have a maximum of 256 public or protected static methods. A class in a library package can have a maximum of 255 public or protected static methods.
- A class can implement a maximum of 128 public or protected instance methods and a maximum of 128 instance methods with package visibility. These limits include inherited methods.
- Class instances can contain a maximum of 255 fields, where an int data type is counted as occupying two fields. These limits include inherited fields.
- Arrays can hold a maximum of 32767 components.
- The maximum number of variables that can be used in a method is 255. This limit includes local variables, method parameters, and, in the case of an instance method invocation, a reference to the object on which the instance method is being invoked (meaning, this). An int data type is counted as occupying two local variables.
- Maximum number virtual machine bytecodes in a method: 32767 .
- Maximum depth of an operand stack associated with a method: 255 16-bit cells.
- The format of the Java virtual machine switch instructions limits switch statements to a maximum of 65536 cases.
- Maximum total size of a file: 2^32 bytes.
- Maximum number of classes stored in a file: 65,535.
- Maximum number of packages stored in a file: 65,534.
- Maximum number of fields in a file: 2^32 - 1.
- Maximum number of methods in a file: 2^32 - 1.
Note: Busy loop in general is considered a bad practice. In embedded systems (and specifically in Intel DAL), this has even worse implications due to the constrained resource environment; therefore it is strongly recommended to not run code in a busy loop. |