Wrappers and integrations are almost always possible.
Question is if there is a way to effectively reuse data in memory with no re-allocation. That pitfall happens often enough within a single language / single package, let alone across varying languages and packages.
And I don’t know the space well enough yet, but if SWIG is a viable alternative for TensorFlow, then would have been implemented, and maybe it has, though a quick search shows this is attempting to do java direct with no SWIG which sounds like one less translation layer: Java interface · Issue #5 · tensorflow/tensorflow · GitHub
May want to check a newer Kotlin / ai / dl article here: AI and deep learning define the future of programming, will Kotlin fly or die?