yanl – yet another native loader

Yet another Native library extractor/loader for the
JVM, written in Kotlin.

why

other libraries simply don’t fit my needs and/or aren’t as
expandable/configurable as I’d like.

how use

this is going to go over how to setup
yanl on a
gradle project using a Kotlin DSL buildscript.

first you need to import the library, you can either import it from
the maven central repository or
from jitpack automatic builds.

for maven central, just add
yanl to your dependencies block:

// change to the latest version
val YANL_VERSION = "1.0.0" 

dependencies {
    implementation("fr.stardustenterprises:yanl:$YANL_VERSION")
}

for jitpack, add the repository as well as the dependency,
this time using the github domain:

// change to the latest github release, commit, or branch name
val YANL_RELEASE = "1.0.0" 

repositories {
    maven("https://jitpack.io")
}

dependencies {
    implementation("com.github.stardust-enterprises:yanl:$YANL_RELEASE")
}

how work

this library can act as a simple drop-in replacement to your standard
System.load or System.loadLibrary.

consider the following example:

public class Program {
    public static void main(String[] args) {
        // requires the native file to be in path
        System.loadLibrary("coollib");
        
        // do stuff
        // ...
    }
}

this would require the library file to be somewhere on the PATH of the
operating system.

one way of getting around this problem would be to extract the library from
the jar archive to a known folder, then to load it. this approach works
but also requires to extract and load the correct library for your
processor architecture and operating system.

this is when yanl
comes into play.

yanl takes care of platform
detection, library extraction and location.

taking back that previous example:

import fr.stardustenterprises.yanl.loader.NativeLoader;

public class Program {
    public static void main(String[] args) {
        // load the library using yanl's default loader
        NativeLoader.getDefault().loadLibrary("coollib");
        
        // do more stuff 
        // ...
    }
}

this time yanl will handle
everything according to the NativeLoader
default settings.

you can of course change those setting by creating yourself a loader instance:

// library not done, example snippet not available, check back later!

licensing

this project is under the MIT license.

GitHub

View Github