I have done a ton of Swing over the years, and also a 2.5D zoomable scene graph API called Piccolo2D [0], which was one of the inspirations for JavaFX (or so I heard at the time).
As far as your advice, I will take a look at swapping Batik out for EchoSVG, and also see how you tackled the user data directory issue in KeenWrite.
* Building installer-free cross-platform binaries on a local Linux build machine requires an external packager[2].
* Good luck building an installer-free binary for CPU architectures that differ from the compiler's machine.
* Creating a Windows version will cost $ (to sign).
* Creating a macOS version will cost $ (to sign).
* WebView is a bloated beast that bundles JavaScript and exposes no API to set scrollbar positions.
* FlyingSaucer[3] is a lightweight alternative to WebView, but requires a SwingNode.
* SwingNode text rendering is blurry on Windows.
* SwingNodes issue GDK-3 warnings on Linux.
* Menu latching messes up cross-platform (Alt+Tab is a wrench).
* Modular applications are a pain. Migration has been poorly communicated, poorly documented, and poorly supported.
* RichTextFX has no way of changing the caret style in insert mode.
* PreferencesFX, and likely other FX libraries, has security issues.
* For MDI with dockable panes, take a look at tiwulfx-dock[4].
Java problems:
* "Write once, run anywhere" is no longer true.
* Apache Batik for rendering SVG images is buggy, EchoSVG[5] is better.
* Rendering math as SVG is hard[6].
* Cross-platform user data directory that complies with XDG, Windows, and macOS will take effort.
* Reliably locating executable programs across platforms is a chore.
Depending on your requirements, C++ and imgui may be a better choice.[7]
[1]: https://gitlab.com/DaveJarvis/KeenWrite
[2]: https://github.com/Reisz/warp/
[3]: https://github.com/flyingsaucerproject/flyingsaucer
[4]: https://github.com/panemu/tiwulfx-dock
[5]: https://github.com/css4j/echosvg
[6]: https://gitlab.com/DaveJarvis/KeenType
[7]: https://github.com/ocornut/imgui/issues/4400#issuecomment-89...