Informatica

Ultra Messaging Knowledge Base


Java Versions

Requirements related to Ultra Messaging and versions of Java

Java Versions
    • Introduction
    • UM Applications
    • SRS
    • MCS
    • Illegal Reflective Access Operation
    • Certification

Introduction

Ultra Messaging supports Java applications. The design of our Java API uses the Java Native Interface (JNI), which consists of a thin Java wrapper around the UM native dynamic library.

There are other UM components that are written in pure Java: SRS and MCS. (See below.)

UM Applications

For Java-based UM applications, the minimum Java version is 8.

For Java 9 and above, supply the Java command-line option "--add-opens java.base/java.nio=ALL-UNNAMED". See Illegal Reflective Access Operation.

SRS

For the Stateful Resolver Service (SRS), the minimum Java version is 9.

Supply the Java command-line option "--add-opens java.base/java.nio=ALL-UNNAMED". See Illegal Reflective Access Operation.

MCS

For the Monitoring Collector Service (MCS), the minimum Java version is 9.

Supply the Java command-line option "--add-opens java.base/java.nio=ALL-UNNAMED". See Illegal Reflective Access Operation.

Illegal Reflective Access Operation

Starting in Java 9, the following warning is displayed when using UM's Java API:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.latencybusters.lbm.HobByteBuffer (file:/29W/Amun/home/sford/backup_exclude/UMP_6.14/java/UMS_6.14.jar) to field java.nio.Buffer.address
WARNING: Please consider reporting this to the maintainers of com.latencybusters.lbm.HobByteBuffer
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

This is because of a programming technique we used to improve the performance of the Java API greatly. When our Java API first started using this method, it was advised against due to being unportable, but was not documented as having a limited lifetime. Starting in Java 9, its lifetime was claimed to be limited, although no specific timetable was given.

Our current solution is to for customers to supply the Java command-line option "--add-opens java.base/java.nio=ALL-UNNAMED"

Note that all solutions we have investigated result in greater overhead, which introduces some latency and causes noticably lower sustainable throughput. Our customers want better performance, not worse.

So, our policy is to wait until a version of Java prevents our method before implementing a different method. As of Java version 21, UM still functions with the current design.

Certification

The UM product does not certify against specific versions of Java.

We will perform testing requested by our customers on whatever Java version they intend to use.


KB Home | Index

UM Home

See Notices for important information.