Android 开发人员 documentation描述应用程序用于联网的 java.net
包。现在 Android 有一个 Linux 内核,所以最终包发出的任何 HTTP 请求都必须转换成一些系统调用。
我想问的是这个库是否也附带了一些JNI层代码,是否依赖libc库与内核交互?
最佳答案
在 Oracle JVM 中,net.dll 被加载到存在于 jre/bin 中的 AbstractPlainSocketImpl 中。
/**
* Load net library into runtime.
*/
static {
java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction<Void>() {
public Void run() {
System.loadLibrary("net");
return null;
}
});
}
Android 的 Dalvik 也以同样的方式工作。查看以下链接:
https://github.com/android/platform_system_core/tree/master/libcutils
https://github.com/android/platform_system_core/blob/master/libcutils/socket_network_client.c
关于java - java.net 包如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33991570/