Spreadsheet-Berechnung und Dokumentenverarbeitung in JavaFX – Erkenntnisse aus SCell, forumSTAR-Text und bk.text

Table of Contents

Notizen aus dem Vortrag von Vasily Smeltsov beim JFX Adopters Meeting 2026 in München am 16. Juni.

Warum eine Spreadsheet-Komponente für JavaFX notwendig war

Jedes Java-Team, das schon einmal eine editierbare Tabellenkalkulation in die eigene Anwendung integrieren musste, hat sich dieselbe Frage gestellt: Warum gibt es so etwas nicht für JavaFX? Wir haben uns diese Frage ebenfalls gestellt. Die verfügbaren Lösungen waren keine wirklichen Antworten:
  • Apache POI — Nur für das Backend. XLSX-Dateien können gelesen und geschrieben werden, eine Benutzeroberfläche gibt es jedoch nicht. Den Editor müssen Sie selbst darauf aufbauen.
  • GemBox / DsExcel / Aspose — Kommerzielle Excel-APIs, ebenfalls nur für das Backend. Keine JavaFX-Benutzeroberfläche.
  • ControlsFX SpreadsheetView — Ein JavaFX-Grid-Widget. Keine Formel-Engine, kein vollständiger XLSX-Roundtrip.
  • Eine Web-Komponente in einer WebView — Fremder Technologie-Stack, Lizenzierung, Performance sowie Unterschiede bei Look & Feel.
  • Selbst entwickeln — Monate an Entwicklungszeit. Danach noch weitere Monate für die Kompatibilität mit Excel-Formeln.
Also haben wir selbst eine entwickelt. In JavaFX. Mit mehr als 400 Excel-kompatiblen Formeln, einer MVVM-Architektur und einer gemeinsamen Codebasis, die von JavaFX 8 bis 21 läuft. Das ist SCell.

Einmal entwickeln, überall einsetzen

Die architektonische Entscheidung hat sich ausgezahlt. Vier Zahlen sagen fast alles:
  • 400+ Excel-Formeln — darunter Finanz-, Statistik- und Suchfunktionen
  • JavaFX 8 → 21 mit derselben Codebasis
  • MVVM für eine klare Trennung von Darstellung und Geschäftslogik
  • Vollständiger XLSX-Roundtrip — öffnen, bearbeiten, speichern, PDF, CSV
Die zentrale Erkenntnis dahinter: Die Semantik einer Tabellenkalkulation — Formeln, Bereiche, Abhängigkeiten und Neuberechnungen — gehört hinter eine saubere Abstraktion. JavaFX ist lediglich die Darstellungsebene. Wenn diese Grenze richtig gezogen wird, wird die Portierung zwischen JavaFX-Versionen oder zwischen Desktop und Web zu einer Entwicklungsaufgabe und nicht zu einer kompletten Neuentwicklung.

Barrierefreiheit: Was wir aus openfx-uia gelernt haben

Eines der schwierigsten Probleme, die wir gelöst haben, hatte nichts mit Formeln zu tun. Es ging um Barrierefreiheit. Für bk.text — ein Textsystem der nächsten Generation für die deutsche Justiz — mussten wir ein Rich-Text-Dokument auf Word-Niveau über die Windows UI Automation für Screenreader und Braillezeilen zugänglich machen: Seiten, Absätze, Textabschnitte und Zeichenattribute. Die standardmäßige Barrierefreiheitsunterstützung von JavaFX deckt klassische Steuerelemente ab: Rollen, Beschreibungen und zugänglichen Text. Unter Windows gibt es TextPattern-Unterstützung für grundlegende Textsteuerelemente. Ein integriertes, Word-ähnliches Modell für paginierten Rich Text gibt es jedoch nicht. Diese Lücke wurde von der Community geschlossen. BestSolution.at entwickelte openfx-uia, eine Open-Source-UIA-Schicht für JavaFX, die sich in die JavaFX-Barrierefreiheitsfunktionen integriert und ITextProvider, ITextRangeProvider und ITextEditProvider bereitstellt. Wir haben sie in bk.text eingesetzt, um echte Dokumentstrukturen für Anwender in der Justiz zugänglich zu machen, die auf unterstützende Technologien angewiesen sind. Sehen Sie sich das bk.text-Showcase auf JFX Central an. Wenn Sie barrierefreies JavaFX unter Windows für mehr als einfache Texteingaben benötigen: Beginnen Sie mit openfx-uia.

JavaFX in Swing integrieren — und produktiv einsetzen

forumSTAR-Text ist ein bestehendes, auf Swing basierendes Textverarbeitungssystem, das in der deutschen Justiz in elf Bundesländern eingesetzt wird. Es läuft jeden Tag produktiv. Als unsere Anwender Excel- und CSV-Daten innerhalb dieser Swing-Anwendung bearbeiten mussten, haben wir die Host-Anwendung nicht neu entwickelt. Wir haben SCell integriert. Der Aufbau: forumSTAR-Text (Swing) → JFXPanel → SCell (JavaFX). Das ist das einfache Diagramm. Die eigentliche Herausforderung besteht darin, die entscheidenden Punkte richtig umzusetzen, damit das System einen vollständigen Arbeitstag mit juristischen Dokumenten zuverlässig übersteht:
  • Threading — Der Swing EDT und der JavaFX Application Thread sind nicht automatisch miteinander kompatibel. Jeder Aufruf über die Systemgrenze hinweg muss entsprechend vermittelt werden.
  • Fokus — Der Tastaturfokus über die Swing-/JavaFX-Grenze hinweg ist ein klassischer Fehlerpunkt. Wenn er nicht funktioniert, bemerken Benutzer das sofort.
  • Lifecycle — Startreihenfolge der JavaFX-Runtime, Initialisierungssequenz und Shutdown-Hooks.
  • Speicher — Lang laufende Sitzungen in der Justiz tolerieren keinerlei Speicherlecks.
  • DPI und hoher Kontrast — Swing-Host und JavaFX-Komponente arbeiten mit unterschiedlichen Skalierungswelten. Beide müssen zuverlässig zusammenspielen.
Wenn diese Punkte stimmen, können Sie ein Swing-System schrittweise modernisieren, ohne eine komplette Neuentwicklung in Angriff nehmen zu müssen.

Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen
Demo: SCell in forumSTAR-Text — Import von Daten aus Excel und CSV innerhalb einer Swing-Host-Anwendung.

Desktop und Web mit einer gemeinsamen Codebasis — mit JPro

Dieselbe SCell-Binärdatei läuft auch im Browser. Dieselben 400+ Formeln, dasselbe MVVM, kein separater Web-Build. Möglich wird dies durch JPro von Sandec, das die JavaFX-Szene serverseitig im Browser rendert. Unsere Erfahrungen aus dem Betrieb:
  • Die Performance beim Rendern von Zellen ist gut, auch bei großen Tabellen.
  • Das Verhalten der Zwischenablage unterscheidet sich zwischen Desktop und Browser und muss entsprechend behandelt werden.
  • Kontextmenüs per Rechtsklick benötigen eine explizite Anbindung für das Web.
  • Der serverseitige Betrieb ist die entscheidende Funktion für unsere Unternehmenskunden — die Datei verlässt niemals deren Infrastruktur.
Sie können die Live-Demo auf unserer SCell-Seite ausprobieren — betrieben mit JPro.

Vier völlig unterschiedliche Host-Anwendungen, eine Komponente

Weil wir die Abstraktion von Anfang an richtig aufgebaut haben, wird dieselbe JavaFX-Komponente in völlig unterschiedlichen Host-Anwendungen eingesetzt:
  • Polarion ALM — Eclipse RCP / SWT (Siemens · ALM) — Verkauft · im Marketplace
  • forumSTAR-Text — Swing (Justiz · 11 Bundesländer) — Verkauft · produktiv im Einsatz
  • bk.text — JavaFX, gemeinsam entwickelt (Justiz · nächste Generation) — Prototyp integriert
  • SAP S/4HANA — Desktop + Web (Enterprise ERP) — Proof of Concept
Eclipse RCP/SWT, Swing, natives JavaFX und Enterprise-ERP — dieselbe Spreadsheet-Engine. Das ist der Nutzen einer sauber aufgebauten Abstraktion.

Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen
SCell integriert in Polarion ALM — Eclipse-RCP-Host, Siemens ALM.

Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen
SCell integriert in SAP S/4HANA — Proof of Concept für Desktop und Web.

Bonus: Zwei XLSX-Dateien Zelle für Zelle vergleichen

Excel verfügt über kein integriertes Diff-Tool. Für einen visuellen Vergleich in der Microsoft-Welt wird Spreadsheet Compare benötigt — eine Enterprise-Funktion, die den meisten Anwendern nicht zur Verfügung steht. Wir haben den visuellen XLSX-Vergleich direkt in SCell integriert. Zwei Dateien werden nebeneinander dargestellt, wobei Unterschiede bei Daten, Formeln und Formatierungen Zelle für Zelle in derselben vertrauten Tabellenansicht hervorgehoben werden. Wenn Ihre Anwender in regulierten Umgebungen arbeiten, in denen jede Änderung nachvollziehbar sein muss, ist allein diese Funktion ein Grund, sich SCell näher anzusehen.

Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen
Visueller Vergleich von Excel-Dateien mit SCell — einfach und intuitiv.

Drei zentrale Erkenntnisse

1. JavaFX ist bereit für komplexe Komponenten im produktiven Einsatz. 400+ Formeln, MVVM, eine gemeinsame Codebasis von JavaFX 8 bis 21. Die Plattform liefert. 2. Die Verbindung zwischen Swing und JavaFX funktioniert — mit der nötigen Disziplin. Threading, Fokus, Lifecycle, DPI. Wenn diese Punkte stimmen, können Sie Swing-Systeme schrittweise modernisieren, ohne eine komplette Neuentwicklung. 3. Nutzen Sie die Arbeit der Community. openfx-uia von BestSolution.at. JPro von Sandec. QF-Test von Quality First Software. JFX Central. Nutzen Sie diese Werkzeuge, geben Sie den Entwicklern die verdiente Anerkennung und tragen Sie selbst etwas zur Community bei.

Ein kleines Geschenk: SCell.Reader für IntelliJ IDEA

Ein kostenloses Plugin. Lesen Sie XLSX-Dateien direkt in Ihrer IDE — mit derselben SCell-Engine, die auch in Polarion, forumSTAR-Text und den SAP-PoCs zum Einsatz kommt. In zehn Sekunden installiert. Jetzt im JetBrains Marketplace erhältlich.

Sprechen wir darüber

Hat Sie etwas aus dem Vortrag angesprochen?
  • Sie möchten SCell in Ihre Anwendung integrieren — auf dem Desktop oder im Web
  • Sie haben eine Swing-Anwendung und möchten JavaFX-Komponenten integrieren
  • Ihre Anwender müssen verschiedene Versionen von Tabellenkalkulationen vergleichen
  • Sie benötigen barrierefreies JavaFX unter Windows
Kontaktieren Sie uns — oder fragen Sie nach einer technischen Demo, die speziell auf Ihre Host-Anwendung zugeschnitten ist. Intelligent entwickeln. Mehr ausliefern. Der Community vertrauen.

Share:

More Posts

Nach oben scrollen