JEP 283: Enable GTK 3 on Linux

Mario Torre neugens at
Tue Feb 23 08:11:28 UTC 2016

Hi Phil, Kevin,

On Fri, Feb 19, 2016 at 7:10 PM, Phil Race <philip.race at> wrote:
> We had not forgotten that the other JEP was there (as a draft)
> but the new JEP started with a pure FX focus on allowing FX to use either
> GTK2 or GTK3 depending on what you needed.
> It was extended (feature creep) whilst being drafted to include doing the
> same for
> AWT/Swing but the focus was still on interoperability. Making the Swing
> L&F fully GTK3 based is the later stretch goal whereas the original JEP
> is much more focused on that and also not at all on FX.
> It would be good for Mario to take a look at the new JEP and identify
> any areas in which it falls short of the previous JEP, which would be
> one reason to leave the "old" JEP open for now. Another is that it
> is unclear how much of JEP 283 we will actually be able to deliver for
> JDK 9 and it is written in a way which is intended to allow for that.
> In which case the previous JEP may yet be needed to complete that work,
> so we don't know yet it if it will be completely subsumed by that work.

The fact that you're doing this is an awesome, awesome news! :)

I think there's quite some overlap between my proposal and this JEP. I
admit I didn't do a lot of progress, but I didn't just write the JEP
and forget, so I do have some working code and things start to have
something to look at.

My take on this was to proceed with a fully clean room implementation
and only use cairo+gtk, since there's just too much stuff being
deprecate or removed that doesn't make sense to keep around. I've been
ld-loading all the functions and redefining the types (most as
typedefs to void pointers, sometime copying the enums or constants
values) as I touch them.

The task is not straightforward and unless you have somebody full time
I doubt the GTK3 Laf will be included 9, but since it's entirely
possible to get this done as a pluggable laf in fact anyone can
benefit as soon as it's ready.

A couple of problems that I have are about the choice between gtk2 and
gtk3, I wasn't yet able to properly unload and reload the correct
version reliably, so the idea of the startup switch is very good, it's
also good to coordinate with the javafx team since it's paramount that
OpenJDK and JavaFX load the same library under the hood.

I'll be happy to talk with who is actually doing this work and sync on
my progress and either hand it over or help out myself.

As for keeping the "old" JEP around, I don't think it's needed, but it
depends on how the 283 turns out, perhaps we can retire mine and
revive it if it's needed at a later point, or make it a subtask (like
it has been done with jigsaw) of the main one, I leave this up to you
I don't have problems either way.

One thing, I strongly believe that we should keep GTK2 around for a bit longer.


More information about the openjfx-dev mailing list