JNA permite accede desde Java a librerías nativas (DLLs) sólo escribiendo código Java (no como en JNI).
Con JNA el acceso es dinámico (no hay generación de código), lo que permite una invocación natural desde Java.
En este post el autor nos cuenta como crear un Servicio Windows con JNA.

Replica a Alexandra Cancelar la respuesta