First - we're talking 8 years from now.  Eight years is a long time.  That
doesn't mean don't be ready for it, but it does mean don't panic.
Secondly, what it means is that Oracle doesn't plan to develop AWT and
Swing after that point.  That doesn't mean nobody will or could.

That said, the way AWT does graphics is optimized for the XWindows of the
90s, and does not play nicely with what modern graphics cards actually do
today.  That was really the promise of JavaFX in its final, neutered,
too-late form - a modern graphics pipeline.

Re Electron:  Think of what Electron actually *is* - it bundles *all* of
Chromium.  I feel this pain particularly since I run Gentoo and build my
entire system and all its software from source - Chromium builds lately
take about 5-7 hours (on a 3Ghz i7 with 8Gb and SSD!) - while nothing else
on my system takes more than a few minutes.  For a while I had Atom
installed, which uses Electron.  Building that from source added another 8
hours to every time I updated my system - turning what used to be an hour
or so to update everything into something akin to compiling the Linux
kernel on a 486 - check back tomorrow to see if it's done.

I also, using Gentoo and frequently MongoDB, lived through MongoDB's brief
dalliance with depending on and linking, then bundling, then getting rid of
v8 - and the big problem there was that v8's ABI was broken incompatibly
very regularly.  I expect Electron will suffer that pain as well, and
eventually go through some growing pains that likely result in forking what
they depend on, or writing their own replacement + vanilla WebKit or
something like that.  Not to mention that, both in terms of build times and
size, there will be pressure from people developing on it to please, please
make the gargantuan runtime smaller.  In other words, to do exactly the
same kind of splitting the JDK finally began to undergo with JDK 9.  Any
solves-all-your-desktop-application-problems platform is going to wind up
recapitulating a lot of the history of the Java platform.


I thought Oracle's effort to make NetBeans into a web-based IDE was likely
misguided - I don't want to program in a web browser and don't know anyone
who does, and doing that rules out using well, pick-any-unix-text-utility -
it's a huge step backwards in development tooling.  But I liked the idea
that it forced decoupling the functionality of the IDE from AWT and Swing,
so from that perspective it's goodness.

The only good I see out of doing the UI in HTML and Javascript is, finally,
a solution to blocking the UI on I/O, which is a bug baked so deeply into
NetBeans APIs it can't be eliminated without a separate UI layer on top of
the existing one.  I don't actually think it's a great way to go - for
anyone who wrote dynamic HTML with Javascript in the 90s or early 2000s,
how much of your code still works?  Browsers are a moving target in a way
Swing never was.

To my instincts, preferable would probably be some OpenGL-based toolkit for
the basic drawing and interaction support, and take it from there with a
small suite of custom components on top of that, in terms of
cost-of-maintenance and stability.  The brave new world of modern web
development - and I just spent a bunch of time working on a React project
(and spent a bunch of time patching a drag and drop library because Chrome
stopped allowing you to call consume() on touch events unless you do
something special when you register your listener - code which worked fine
a few months before) - doesn't really do backward compatibility - which
means keeping an HTML-based NetBeans actually working for users requires a
large, permanent ongoing investment of work that's more costly than
maintaining a handful of UI components where, once you have a button
component that works, it works forever.  I see the appeal of HTML in that
it's omnipresent, and at present looks like it's sucked all the air out of
the user interface room - but I also remember when Javascript was dead, and
when Windows had killed Unix.

-Tim

Reply via email to