java - java程序如何访问操作系统函数?

标签 java

java程序如何访问操作系统函数? 这是使用 JNI 吗?

最佳答案

当您的 Java 应用程序需要执行对 native 代码(即 Windows 中的 DLL)的调用时,使用 JNI。

JVM 本身是用 C/C++ 编程的,因此每个实现都使用可用于进行 SO 调用的操作系统 API 库(适用于 Windows 的 Win32 API)。

一次 Java 调用可能会导致一次操作系统调用(或者多次调用,或者没有调用,取决于 JVM 缓冲的 I/O),因此 JVM 使用来自 Java 的参数调用操作系统,并将结果返回给程序。

如果您的应用程序需要访问操作系统,必须通过 Java API,该 API 使某些操作系统功能可供您的程序使用,例如文件、套接字、窗口。由于多种原因,许多操作系统功能不适用于 Java 应用程序。

一些特殊功能可通过外部产品或库获得,例如串行 (COM)、并行和蓝牙端口。这些产品/库附带可供您的程序使用的 JAVA API,并且该 API 通过使用产品/库中包含的一些 native 库,使用 JNI 进行操作系统调用。

如果您需要 Java 或外部产品中不可用的操作系统特殊功能,请考虑创建一个 native 库,创建一个包装它的 JAVA API,并使用 JNI 从 API 调用它。您(和其他)应用程序可以使用 API 来访问这些功能。

关于java - java程序如何访问操作系统函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7443278/

相关文章:

java - C#中有没有类似Java的Cacheable?

java - ListView 仅显示数据库中匹配条件集的 4 条记录中的 3 条

java - 如何从在 Spring 上下文中配置的 EntityManager 获取连接?

java - 如何在二叉搜索树中实现重新平衡?

java - 使用 jaxb 创建等效输出

java - 为什么这个同步不起作用?

java - 如何将 Wowza Stream 发送到 Google Cloud Speech API?

Java/重构开关盒

java - 使用@JsonAnySetter 映射jackson 返回带有javassist 类的Unrecognized 字段

java - 无法使用 IMAP 连接到 Gmail