NIFs vs Jinterface

What’s the difference between NIFs and Jinterface?
Apart from the fact that NIFs target native languages, or pretty much anything that implements a C ABI, and that Jinterface targets languages on the JVM, what exactly is the difference between the 2?

Well, these are two different tools for two different tasks. From my experience with jinterface, I can tell that it is a little bit outdated for today, because it supports strings as charlists and etc.

I’d suggest avoiding using Jinterface. While NIFs are used to extend BEAM with extremely fast native functions, Jinterface is mostly used just as a JVM<->BEAM communication tool. In 2022, it is better to wrap both JVM and Erlang programs into services and to communicate via HTTP or one of morden rpc protocols