1

如果是这样,那怎么办?我正在为学校做一个团队项目。我认为Java实际上不能直接访问硬件,因为这会使跨平台变得困难。我需要知道这一点,因为经过一些快速的谷歌搜索后,我没有找到任何东西,而且我的团队成员(他们想要这样做并想要使用 Java)似乎不确定如何进行——显然搜索比我多得多。已经完成了。

4

4 回答 4

2

您不能直接从 Java 访问硬件(除非您调用本机代码,但这不是您所追求的),因为它在沙盒环境中运行,即 Java 虚拟机 (JVM)。

但是,您可以从它从底层操作系统收集的 JVM 中获取一些基本信息。看看使用 Java 获取 OS 级别的系统信息

于 2010-08-30T21:53:11.190 回答
2

您正在寻找的是SIGAR API

概述

Sigar API 提供了一个可移植的接口来收集系统信息,例如:

  1. 系统内存、交换、CPU、平均负载、正常运行时间、登录
  2. 每个进程的内存、cpu、凭据信息、状态、参数、环境、打开的文件
  3. 文件系统检测和指标
  4. 网络接口检测、配置信息和指标
  5. TCP 和 UDP 连接表 网络路由表

此信息在大多数操作系统中都可用,但每个操作系统都有自己的方式来提供它。SIGAR 为开发人员提供了一个 API 来访问这些信息,而不管底层平台如何。核心 API 是用纯 C 实现的,目前为 Java、Perl、Ruby、Python、Erlang、PHP 和 C# 实现了绑定。

于 2010-08-30T22:08:41.760 回答
0

使用本机 Java API 可以获得的信息量非常少,因为您的程序通常只知道它所在的 VM。

但是,您可以调用命令行、运行本机应用程序并解析结果。但是,它在 Java 应用程序中并不是特别好的形式,因为您失去了通常与该语言相关的跨平台优势。

于 2010-08-30T21:56:07.983 回答
0

您可以使用System.getEnv()获取有关处理器的一些基本信息。

您还可以使用Runtime.getRuntime() - 有关详细信息,请参阅 R. Kettelerij 的响应。

另一种选择是使用JMX。例如,MemoryMXBean提供了一些有关 RAM 使用情况(堆和非堆)的信息。

于 2010-08-30T22:00:02.633 回答