Alguien que leyo, vio, trabajo o se pregunto que es jni; debe haberse dado cuenta que es complejo. Esta complijida se ve disminuida casi a 0 con JNA. 
Parece publicidad barata pero es verdad. Si te digo que con una interfaz podes usar funciones que se encuentran en una dll?
Mira, tengo la siguiente dll:
// dllParaPruba.cpp : Defines the exported functions for the DLL application.
//
#include "stdafx.h"
extern "C" 
{
//---------------------------------------------------------------------------
double __declspec(dllexport) multiplicar(double a, double b)
{
    return a * b;
}
//---------------------------------------------------------------------------
double __declspec(dllexport) sumar(double a, double b)
{
    return a + b;
}
//---------------------------------------------------------------------------
double __declspec(dllexport) potencia(double a, double n)
{
    double acumulador = 1;
    for (int i = 0; i <>
   
       acumulador*=a;
    }
    return acumulador;
}
}
Y yo desde java quiero leerla y usarla, bueno tengo que escribir la siguiente interfaz:
 import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
/**
 *
 * @author Emanuel
 */
public interface EjemploJNA extends Library  {
    EjemploJNA INSTANCE = (EjemploJNA)
            Native.loadLibrary("dllParaPruba",
            EjemploJNA.class);
    double multiplicar(double a, double b);
    double sumar(double a, double b);
    double potencia(double a, double b);
}
Bueno ahora vamos hacer un test:
import org.junit.Test;
import static org.junit.Assert.*;
/**
 *
 * @author Emanuel
 */
public class EjemploJNATest {
    static {
        System.load("pathDondeSeEncuentraMiDll\dllParaPruba.dll");
    }
    @Test
    public void sumar(){
        double resultado = EjemploJNA.INSTANCE.sumar(2.3, 4.5);
        assertEquals(new Double(resultado), new Double(6.8));
    }
     @Test
    public void multiplicar(){
        double resultado = EjemploJNA.INSTANCE.multiplicar(2.3, 4.5);
        assertEquals(new Double(resultado), new Double(10.35));
    }
    @Test
    public void potencia(){
        double resultado = EjemploJNA.INSTANCE.potencia(2, 4);
        assertEquals(new Double(resultado), new Double(16));
    }
}
Listo!!
Que lo pario dijo mendieta!!
Una cosa me queda por aclarar es que compile la dll con el compilador de borland y no me fue muy bien, explotaba (no se bien por que) use el de microsoft y no hubo problema. 
El que quiera más info dejo el link: https://jna.dev.java.net/
Y para toda la gente linda que usa maven la entrada en el pom:
  <dependency>            
            <groupId>net.java.dev.jna</groupId>             
            <artifactId>jna</artifactId>             
            <version>3.2.2</version>         
        </dependency>
Saludos!!!
