# Java-Orakel Java-Filius selbst liest den Korpus (`corpus/`) und schreibt, was es gefunden hat, nach `corpus/corpus.java.json`. **Java ist der Schiedsrichter für das Dateiformat** — der Swift-Leser verliert in 10 von 23 Dateien Geräte (Plan §13, M2). ```bash npm run oracle:java # = tools/java-oracle/run.sh ``` Braucht JDK 17+, Maven und `xvfb-run`. Filius öffnet beim Laden sein Hauptfenster (`Information.reset` → `JMainFrame`), deshalb läuft es an einem virtuellen Bildschirm statt „headless". * Gelesen wird über Filius' eigene, private Lademethode `SzenarioVerwaltung.netzwerkLaden` (per Reflection) — Javas Weg, kein Nachbau. * Stand: `gitlab.com/filius1/filius` @ `6640354` (2.14.0), wird beim ersten Lauf nach `.upstream/` geholt und gebaut. * **Gewürfeltes:** Was nicht in der Datei steht, würfelt Filius zum Teil (MAC-Adressen, die SSID eines Switches). Jede Datei wird deshalb **zweimal** geladen; jeder Wert, der sich zwischen beiden Läufen unterscheidet, erscheint als `null`. Zwei Läufe des Werkzeugs sind byte-gleich. (Bis 29.09.2026 suchte es die MAC im Dateitext und hielt dabei acht kleingeschriebene für gewürfelt.) * Bisher ausgelesen: Geräte (Klasse, Name, Beschriftung, Position, Schnittstellen, bei Rechner/Notebook `useIPAsName`/`useMACAsName`), unter `system` SSID, Lernzeit des Switches, RIP, manuelle Routen und die Firewall von Router und Heimrouter; Kabel (Enden als Gerät/Schnittstelle), Doku-Elemente. Systemsoftware, Dateisysteme und Anwendungen folgen schrittweise. ## Getter-Standardwerte XMLEncoder teilt gleiche `Integer`/`Boolean`-Objekte. Ein Wert, der einmal als Ergebnis eines Getters geschrieben wurde (``), taucht später nur noch als Verweis auf — etwa als x-Koordinate eines Geräts. Daran scheitert der Swift-Leser (Plan §13, M2). `GetterDefaults` erzeugt die betroffenen Klassen wie XMLDecoder (ohne Argumente) und ruft den Getter auf; das Ergebnis steht in `packages/fls/src/javaDefaults.json`. Gemessen, nicht geraten: Filius' Knopf setzt `verticalTextPosition` auf 3 (BOTTOM), nicht auf Swings 0 (CENTER). Dasselbe gilt für **statische Konstanten**: Die erste `0` einer Datei kann als `` stehen, und jede spätere `0` — etwa die Rot-, Grün- und Blauwerte einer schwarzen Doku-Farbe — verweist darauf. Schreibweise im Aufruf: `klasse::FELD`, Ergebnis `"SwingConstants.CENTER": 0`. ## `IP.ipCheck` Java-Filius schickt jede IP-Adresse und Maske beim Laden durch `IP.ipCheck`. `IpCheckCases` ruft es für jede Zeile von `packages/fls/test/ip-check.cases.txt` auf (ASCII, Nicht-ASCII als `\uXXXX`) und schreibt `ip-check.java.json`. Gemessen: leere Abschnitte zählen nicht (`10..0.0.1`), Vorzeichen und führende Nullen gehen, ebenso Ziffern jeder Schrift in der BMP (Thai, Devanagari, Vollbreite) — aber kein Leerzeichen und kein 𝟏 (Ersatzpaar).