Re-examine the risks of JDK-8264770 breaking third party libraries and applications.

Frederic Thevenet thevenet.fred at free.fr
Thu Aug 26 07:29:38 UTC 2021


Hi,

A change was introduced In JDK-8264770 that swaps the use of 
ChangeListeners to InvalidationListeners within the internal 
implementation of BidirectionalBinding [1].

While this change shouldn't normally affect third party applications, it 
turned out to break the scrolling facilities used by the widely used 
rich text widget RichTextFX [2].

After a short investigation, I believe the root cause lies within 
another library by the same author called ReactFX [3], which aims to 
bring reactive programming techniques to JavaFX; in order to do so it 
seems to expands on but also sometime overrides the built-in bindings 
and events mechanisms.

Now, I do believe that this is probably an exceptional case, and it is 
also quite possible that it  is the result of an unsafe/incorrect use of 
internal implementations by the third party library, but with that said 
I can't help but feeling a bit nervous about the wider implications of 
that change with regard to compatibility of existing apps and OpenJFX 
17. At the very least I believe it is important to raise awareness about 
potential compatibility issues among the community.

For your information, I reached out to the maintainers of RichTextFX and 
proposed a workaround (replacing the use of a bidirectional binding by a 
pair of explicit ChangeListeners), which, while not very elegant, seems 
to fix the particular issue I discovered [4], but unfortunately it seems 
development on the underlying ReactFX is no longer active (last commit 
in 2016).

-- Fred

[1] https://bugs.openjdk.java.net/browse/JDK-8264770

[2] https://github.com/FXMisc/RichTextFX

[3] https://github.com/ReactFX/reactfx.github.io

[4] https://github.com/FXMisc/Flowless/issues/97



More information about the openjfx-dev mailing list