# 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, die Firewall von Router und Heimrouter, DHCP-Client und -Server, die statische NAT-Tabelle des Heimrouters, die Verbindung eines Modems und das Dateisystem (Inhalte als Länge und SHA-256, damit die Referenz klein bleibt; die Dateien von Router und Heimrouter erzeugt Javas Konstruktor aus eigenen Vorlagen, sie stehen nicht in der Datei) und die installierten Programme eines Rechners mit ihren Einstellungen (Klassen, die Filius nicht mitbringt — eigene Anwendungen im Archiv unter `projekt/anwendungen` — fehlen, weil das Werkzeug nur `konfiguration.xml` lädt); 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).