最近,我一直在浏览图书馆的源代码,并找到了这段代码:
if (osName.startsWith("Win")){
if (arch.equals("x86")){
System.loadLibrary("LIBWINPTHREAD-1");
System.loadLibrary("LIBSNDFILE-1");
System.loadLibrary("LIBGCC_S_SJLJ-1");
System.loadLibrary("LIBMPG123-0");
System.loadLibrary("LIBMETHCLA");
System.loadLibrary("LIBMETHCLAINTERFACE");
}
else {
System.loadLibrary("LIBWINPTHREAD-1");
System.loadLibrary("LIBSNDFILE-1");
System.loadLibrary("LIBMPG123-0");
System.loadLibrary("LIBMETHCLA");
System.loadLibrary("LIBMETHCLAINTERFACE");
}
}
我想知道这段代码加载了哪种类型的库,以及为什么需要这些代码。 代码取自: https://github.com/processing/processing-sound/blob/master/src/processing/sound/MethClaInterface.java
答案 0 :(得分:1)
在这里使用本机代码,意味着代码不是Java而且不需要JVM,用C,C ++等语言编写(但是还有其他语言可以编译为本机代码)。它是JNI(Java Native Interface)的一部分,它允许在Java应用程序中使用本机代码。
有一个名为Panama的项目,使本机库的使用比现有的JNI更简单,现有的JNI非常复杂,可能会出现在Java的未来版本中。