BTW, I'm working on crossplatform UI framework. Native rendering pipeline is quite different from javaFX.
Main rendering/painting/composite concepts:
- corutine based parallel rendering pipeline (like
https://servo.org/) with ability to postpone rendering of slow components to next frame (like in react fiber)
- layouting algorithm works only in simple one pass. Based on simple min/max box constraints (NOT like complex constraints solver in MacOS/iOS and web/css). Size constraints passed down to the tree, layout passed back to up.
- benefit from ability of fast performance of compositor (modern hardware very fast on it)
- vulkan for windows/linux/android, metal for osx/ios
Widgets framework:
- react/flutter-like widgets framework: Widget acts as react props and is immutable. State stored in Widget Holder which is hidden for user code.
- Mutable listenable editor model used only for editing objects, not widgets (like in javafx)
- Code based on common widgets works on web