Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

A few JavaFX issues I've encountered while writing KeenWrite[1], my FOSS text editor based heavily on JavaFX:

* 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...



Thank you for writing up your experience!

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.

[0] - https://github.com/piccolo2d/piccolo2d.java


so, electronjs still rules


> so, electronjs still rules

You fell trees with saws, not hammers.

I cannot imagine electronjs having the chops to implement KeenWrite.

https://keenwrite.com/screenshots.html


wonder why it can't, electronjs had made a long list of impressive desktop GUIs. keenwrite seems feasible to me




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: