是否可以使用Java收集有关计算机硬件的信息?

时间:2010-08-30 21:47:13

标签: java hardware hardware-interface

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

4 个答案:

答案 0 :(得分:2)

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

但是,您可以从底层操作系统收集的JVM中获取一些基本信息。 看看using Java to get OS-level system information

答案 1 :(得分:2)

您要找的是SIGAR API

概述

Sigar API提供了一个便携式界面,用于收集系统信息,例如:

  1. 系统内存,交换,cpu,加载 平均值,正常运行时间,登录
  2. 每进程内存,cpu,凭据 信息,状态,参数,环境, 打开文件
  3. 文件系统检测和指标
  4. 网络接口检测, 配置信息和指标
  5. TCP和UDP连接表 网络路由表
  6. 此信息在大多数操作系统中都可用,但每个操作系统都有自己的方式提供它。 无论底层平台如何,SIGAR都为开发人员提供了一个访问此信息的API。 核心API在纯C中实现,目前为Java,Perl,Ruby,Python,Erlang,PHP和C#实现了绑定。

答案 2 :(得分:0)

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

但是,您可以call out to the command line运行本机应用并解析结果。然而,在Java应用程序中,它并不是特别好的形式,因为您失去了通常与语言相关的跨平台优势。

答案 3 :(得分:0)

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

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

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