Можно ли собрать информацию о компьютерном оборудовании с помощью Java? - PullRequest
1 голос
/ 31 августа 2010

Если так, то как?Я делаю командный проект для школы.Я думал, что Java на самом деле не может получить доступ к аппаратному обеспечению напрямую, так как это затруднит кросс-платформенность.Мне нужно это знать, потому что после некоторого быстрого поиска в Google я ничего не нашел, и члены моей команды (которые хотят сделать это и хотят использовать Java), похоже, не уверены в том, как поступить - после, очевидно, гораздо большего поиска, чем ямы сделали.

Ответы [ 4 ]

2 голосов
/ 31 августа 2010

То, что вы ищете, это SIGAR API

Обзор

Sigar API предоставляет переносимый интерфейс для сбора системной информации, такой как:

  1. Системная память, подкачка, процессор, средняя загрузка, время безотказной работы, логины
  2. Оперативная память, процессор, информация о полномочиях, состояние, аргументы, среда, открытые файлы
  3. Обнаружение файловой системы и метрики
  4. Обнаружение сетевого интерфейса, информация о конфигурации и метрики
  5. Таблицы соединений TCP и UDP Таблица сетевых маршрутов

Эта информация доступна в большинствеоперационные системы, но каждая ОС имеет свой собственный способ (ы), обеспечивающий его.SIGAR предоставляет разработчикам один API для доступа к этой информации независимо от базовой платформы.Базовый API реализован на чистом C с привязками, которые в настоящее время реализованы для Java, Perl, Ruby, Python, Erlang, PHP и C #.

2 голосов
/ 31 августа 2010

Ваше право в том, что вы не можете получить доступ к оборудованию напрямую из Java (если только вы не вызываете нативный код, но это не то, что вам нужно), поскольку оно работает в изолированной среде, а именно в виртуальной машине Java (JVM).

Однако вы можете получить некоторую базовую информацию от JVM, которую он собирает из базовой ОС. Взгляните на с использованием Java для получения системной информации на уровне ОС

0 голосов
/ 31 августа 2010

Вы можете получить некоторую основную информацию о Процессоре / С, используя System.getEnv () .

Вы также можете использовать Runtime.getRuntime () - Подробнее см. Ответ Р. Кеттелерия.

Другой вариант - использовать JMX . Например, MemoryMXBean предоставляет некоторую информацию об использовании оперативной памяти (куча и не куча).

0 голосов
/ 31 августа 2010

Объем информации, которую вы сможете получить с помощью нативного Java API, довольно мал, поскольку ваша программа обычно знает только о виртуальной машине, на которой она находится.

Однако вы можете вызвать командную строку , запустить собственные приложения и проанализировать результаты. Однако это не совсем хорошая форма в приложении Java, поскольку вы теряете кросс-платформенные преимущества, обычно связанные с языком.

...