As per the picture here
both libraries work on the same principle. But I believe there is a difference between the two. What is the difference?
JNA uses reflection to call its own methods.
JNR generates bytecode only once at runtime, so JNR is faster than JNA. See Code Generation Example here
The presentation you linked to has already partially answered the question - so keep reading. For example. on slide 26 and ff:
Why not JNA?