Gabi und Sascha
Tags - Kategorien : Alle | Berlin | Bücher | Fotografie | Java | Linkhalde | Weichware | Verfassung

Im Bereich der Entwicklung von Java APIs ist die Verwendung der Klasse zu vermeiden. Insbesondere dann, wenn ausschliesslich Konfigurationsdaten ausgelesen werden sollen (read-only). File definiert immer eine Referenz auf eine Datei im Dateisystem des Rechners, auf welchem ein Programm gestartet wird. Dies bedeutet, dass Konfigurationsdaten in diesem Dateisystem abgelegt sein müssen. Soll ein solches Programm auf vielen Rechnern gleichzeitig arbeiten, beispielsweise in einer Clusterumgebung, wird hier das Deployment unnötig erschwert. Zwar ist es möglich, dass die Konfigurationsdaten über ein Netzwerkdateisystem wie zum Beispiel oder in das Dateisystem des Rechners gemounted werden. Abhängig von einem Dateisystem ist man trotzdem. Ebenso ist die Verwendung von File in Containerumgebungen (Web oder ) problematisch, da hier die Einstellungen des , der Benutzung der API einen Strich durch die Rechnung machen kann.

Um in diesem Bereich die Virtualisierung zu verbessern, ist auf java.io.File komplett zu verzichten. Auf Konfigurationsdaten soll vielmehr mit einer Kombination aus und (oder Reader) zugegriffen werden. Diese beiden erlauben eine stärkere Unabhängigkeit der Daten von Ort und Zugriffstechnik.

Sind die Daten zu gross oder lassen unsauber definierte APIs die Verwendung von InputStream und URL nicht zu, dann sollte man überlegen, ob diese nicht vor der Benutzung der API in ein temporäres Verzeichnis zu kopieren sind. Den Ort des temporären Verzeichnisses, welches das Betriebssystem zur Verfügung stellt, kann man mittels des -Properties java.io.tmpdir ermitteln. Hierbei ist allerdings Vorsicht geboten, wenn sich die API auch in einem Container deployen lassen soll, da es zu kommen kann. Zu beachten ist ebenfalls, dass die Daten in diesem Fall in ein Verzeichnis zu schreiben sind, dessen Name einen starken Zufallsbestandteile enthält. Dies soll Angriffe mittels bereits vorhandener und modifizierter Daten verhindern.

APIs, die auch Daten in Dateien schreiben müssen, sollen ebenfalls auf File verzichten. Hier ist es angebracht ausschliesslich die Datenströme aus , oder alternativ die NIO-API, zu verwenden.