CLI-Tool
oshi/oshi avatar
oshi/oshi

OSHI liest System- und Hardwaredaten aus Java

Projektüberblick: Informationen zum nativen Betriebssystem und zur Hardware. OSHI ist eine kostenlose native (JNA oder FFM) Betriebssystem- und Hardware-Informationsbibliothek für Java.

5.265 Sterne916 ForksJavaMIT

Auf einen Blick

Was ist das?
OSHI: deutschsprachige Einordnung von Zweck, Einstieg, Einsatzbedingungen und dokumentierten Grenzen.
Für wen ist es gedacht?
Geeignet ist OSHI für Personen, deren Aufgabe zum beschriebenen Umfang passt. Ungeeignet ist der Artikel als Nachweis für Leistung, Sicherheit oder Support in einer fremden Umgebung.
Darf ich es kommerziell nutzen?
Ja. MIT ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 10 Tagen.
In welcher Sprache ist es geschrieben?
Hauptsächlich Java, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

OSHI: Dokumentierter Zweck

OSHI ist eine freie Java-Bibliothek für Betriebssystem- und Hardwareinformationen, die JNA oder FFM für den nativen Zugriff nutzt. Laut README ist keine Installation zusätzlicher nativer Bibliotheken erforderlich; das Projekt zielt auf eine plattformübergreifende Implementierung. Unterstützte Plattformen sind Windows, macOS, Linux (Android) sowie UNIX-Varianten: AIX, DragonFly BSD, FreeBSD, NetBSD, OpenBSD und Solaris (illumos). Die Feature-Liste umfasst Computersystem und Firmware, Baseboard, Betriebssystemversion und Build, physische und logische CPUs mit Prozessorgruppen und NUMA-Knoten, Last- und Nutzungszähler, Prozessdetails, Speicher, gemountete Dateisysteme, Festplatten und Partitionen, Netzwerkschnittstellen, Akkuzustand, Peripheriegeräte, angeschlossene Displays mit EDID-Informationen, Grafik- und Audiokarten, Sensoren auf mancher Hardware, Container-Ressourcengrenzen über cgroup v1/v2 und Drucker. Das README enthält keine Benchmark-Ergebnisse oder Leistungsmessungen.

Bei OSHI lässt sich dieser Punkt an SystemInfoFactory.create(), oshi-core, oshi-core-ffm, oshi.properties festmachen. Für die Prüfung sollte genau der im README genannte Einstieg verwendet werden: Dabei sind die erzeugten Daten, Fehlermeldungen und die betroffenen Dateien oder Konten zu notieren. Das zeigt, ob die dokumentierte Funktion in der eigenen Umgebung greift; es sagt nichts über Eigenschaften aus, die das Projekt nicht beschreibt.

OSHI: Daten und Bausteine

OSHI bietet zwei native Zugriffsimplementierungen. oshi-core verwendet Java Native Access (JNA), unterstützt JDK 8+ und hat das JPMS-Modul com.github.oshi. oshi-core-ffm verwendet die Foreign Function and Memory API des JDK, benötigt JDK 25+ und hat das JPMS-Modul com.github.oshi.ffm. Beide teilen dieselben API-Schnittstellen aus oshi-common. Das README dokumentiert auch einen dritten Weg: Wenn nur oshi-common im Classpath ist, bietet oshi.nativefree.SystemInfo Unterstützung auf Linux und NetBSD ohne nativen Zugriff. Die Factory-Methode SystemInfoFactory.create() wählt die beste verfügbare Implementierung basierend auf Classpath und JDK-Version: FFM auf JDK 25+, wenn beide Artefakte vorhanden sind, sonst JNA. Den internen Mechanismus der Factory über diese Auswahlregel hinaus beschreibt das README nicht.

OSHI: Konkreter Einstieg

Stabile Versionen werden auf Maven Central veröffentlicht: oshi-core-7.4.3 für JNA und oshi-core-ffm-7.4.3 für FFM. Aktuelle Entwicklungs-Snapshots sind 7.4.4-SNAPSHOT. Legacy-Versionen für JDK7 (oshi-core-3.13.6) und JDK6 (oshi-core-3.14.0) sind ebenfalls aufgeführt. Das README empfiehlt, oshi-core oder oshi-core-ffm über einen Dependency-Manager wie Maven oder Gradle hinzuzufügen; transitive Abhängigkeiten werden automatisch aufgelöst. Für manuelle JAR-Verwaltung wird auf die oshi-dist-Zip-Dateien auf repo1.maven.org verwiesen. Für Windows-Sensordaten wird eine optionale jLibreHardwareMonitor-Abhängigkeit erwähnt; deren binäre DLLs sind laut README unter MPL 2.0 lizenziert. Für Android muss das AAR-Artefakt für JNA hinzugefügt und die transitive JAR-Abhängigkeit ausgeschlossen werden. Versionsnummern für das JNA-Android-Artefakt nennt das README nicht.

OSHI: Betriebsbedingungen

Das README zeigt zwei Wege, eine SystemInfo-Instanz zu erhalten. SystemInfoFactory.create() wählt automatisch die beste Implementierung basierend auf Classpath und JDK-Version. Auch direkte Instanziierung wird unterstützt: new oshi.SystemInfo() für JNA, new oshi.ffm.SystemInfo() für FFM auf JDK 25+ und new oshi.nativefree.SystemInfo() für den Weg ohne nativen Zugriff. Getter wie si.getHardware() und si.getOperatingSystem() liefern Komponenten wie CentralProcessor und OperatingSystem. Die Konfiguration wird aus oshi.properties gelesen und kann über die GlobalConfig-Klasse oder Java-Systemeigenschaften verändert werden. Das README empfiehlt, die Konfiguration beim Start vorzunehmen, da sie nicht threadsicher ist und OSHI das erneute Lesen während des Betriebs nicht garantiert.

OSHI: Ausgabe und Grenzen

Um einen vollständigen Systembericht auszugeben, muss man laut README das Repository klonen, die Module mit ./mvnw install -DskipTests bauen und die main-Methode von SystemInfoTest mit exec:java ausführen, für JNA auf JDK 8+ und für FFM auf JDK 25+. Eine vorab generierte Sample-Output-Datei liegt im Repository. Die vom README verlinkte Dokumentation umfasst Javadocs für beide Implementierungen, ein FAQ, ein Änderungsprotokoll, ein Dokument zu Leistungsüberlegungen, ein Dokument zu Breaking Changes bei Hauptversionen, Beispielausgabe und eine Liste von Anwendungen und Projekten, die OSHI nutzen. Das README selbst liefert keine Leistungszahlen; es verlinkt lediglich auf die Datei PERFORMANCE.md.

OSHI: Einordnung für Teams

Das README dokumentiert drei zusätzliche Module. oshi-demo enthält Proof-of-Concept-Beispiele, darunter eine Swing-GUI, JSON-Ausgabe und JMX-Integration, und kann mit jbang-Befehlen wie jbang json@oshi/oshi und jbang gui@oshi/oshi ausgeführt werden. oshi-metrics ist eine First-Party-Micrometer-Integration, die System-, Prozess- und Container-Metriken gemäß den OpenTelemetry-Semantik-Konventionen bereitstellt; das README sagt, sie funktioniere mit Prometheus, Grafana, Datadog und jedem Micrometer-kompatiblen Backend. oshi-benchmark enthält JMH-Benchmarks, die JNA und FFM nebeneinander vergleichen, erfordert JDK 25+ und hat ein Ausführungs-Skript unter oshi-benchmark/scripts/run-benchmarks.sh. Jedes Modul hat ein eigenes README mit Einrichtungs- und Nutzungsdetails.

OSHI: Wartung und Quellen

Sowohl das README als auch der Lizenztext geben an, dass OSHI unter der MIT-Lizenz steht. Die Lizenz gewährt das Recht, Kopien der Software zu verwenden, zu kopieren, zu modifizieren, zu fusionieren, zu veröffentlichen, zu verteilen, zu unterlizenzieren und zu verkaufen, sofern der Copyright-Hinweis und der Lizenztext enthalten sind. Die Software wird wie besehen ohne jegliche Gewährleistung bereitgestellt; der Lizenztext macht keine Aussagen zu Sicherheit, Support oder Wartung. Das README verweist auf SUPPORT.md und SECURITY.md, ohne deren Inhalte zusammenzufassen. Das README erwähnt außerdem ein Tidelift-Abonnement für kommerziellen Support von OSHI und anderen Open-Source-Paketen. Die Repository-Metadaten zeigen 5.254 Sterne, 920 Forks und zwei offene Issues; das Projekt ist nicht archiviert und der Standard-Branch heißt master.

Redaktionelles Fazit

Geeignet ist OSHI für Personen, deren Aufgabe zum beschriebenen Umfang passt. Ungeeignet ist der Artikel als Nachweis für Leistung, Sicherheit oder Support in einer fremden Umgebung. Prüfe zuerst SystemInfoFactory.create(), kontrolliere die konkrete Ausgabe und entscheide erst danach über die Einbindung in dein Projekt.

Offizielle Quellen

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community-Notizen

Community-Notizen