Java bindings: evaluate replacing hand-written JNI with the Foreign Function & Memory API

Đang mở
#1,794 1 bình luận 0 reaction 1 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@hlinsen đang làm issue này rồi.

Từ ngày 25/8/2026.

Đánh giá

Issue này chưa được đánh giá.

Mô tả

The Java bindings added in #1524 are hand-written JNI. Java 22 and later ship the Foreign Function & Memory API (JEP 454), which calls the C API directly and would remove cuopt_jni.cpp and its build entirely.

Why it was not done now: the bindings target Java 17, which is still a common default. An earlier revision of #1524 did use FFM and required Java 22 or higher.

Trade-off to settle:

  • Hand-written JNI keeps the Java 17 floor, but every static native declaration and its entry point must be kept in sync by hand. #1524 adds scripts/check_jni_symbols.sh to catch drift, since JNI resolves lazily and a mismatch otherwise surfaces only when something calls the method.
  • FFM removes the native shim and the drift class of bug, at the cost of requiring Java 22+.

cuVS uses FFM (via jextract) for its Java interface, so there is in-house precedent for the tooling.

Raised by @mlubin in review: https://github.com/NVIDIA/cuopt/pull/1524#discussion_r3839538078

Part of #1535.

Ngôn ngữ chính
Cuda
Star
1.1k
Fork
255
Merge trung bình
1 ngày 22 giờ
Pull request đã merge (30 ngày)
102

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của NVIDIA/cuopt

Tất cả issue của NVIDIA/cuopt

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.