What is the most efficient way to pass in memory data structure (tabular like) from C++ to Java?

  apache-arrow, c++, java

Is it still the best answer in terms not coping data in memory?
(What is the most efficient(fastest) way of passing data from C++ to Java?)

I was thinking about Apache Arrow and I see two options:

  1. Building Apache Arrow data structure in C++, "serialising" it to bytes, passing bytes via JNI to Java class (AFAIK requires coping of data between C++ process memory and JVM heap).
  2. Using Apache Arrow Plasma, but it requires running Plasma server AFAIU.

Am I missing something?

Source: Windows Questions C++