<story><title>Graphics for JVM</title><url>https://tonsky.me/blog/skija/</url></story><parent_chain><item><author>grandinj</author><text>We build all our desktop products using Swing, and it works pretty well. Looks pretty native (if you want it to), is thoroughly battle-tested, reasonably performant, and has a bazillion open-source extras floating around (of varying quality).&lt;p&gt;If you need 3d, we drop into OpenGL and use that (e.g. when integrating WorldWind).&lt;p&gt;Sometimes I feel bad about how easy it is to write desktop UIs in Java - the API is stable, nobody keeps changing it under me, I don&amp;#x27;t have to wonder what Microsoft is pushing this year, it is (mostly) easy to debug, has open source forms designers (Netbeans), etc, etc.</text></item></parent_chain><comment><author>cashewchoo</author><text>I have a long history with Swing and as painful as it is to use sometimes (e.g. &amp;quot;There are Swing developers with &lt;i&gt;low&lt;/i&gt; pain tolerances?&amp;quot;) it&amp;#x27;s astonishing how &lt;i&gt;productive&lt;/i&gt; Swing feels compared to React even so many years later. Maybe I&amp;#x27;m just warped but GridBagLayout, while containing a certain base level of frustration, is O(1) for frustration. Whereas CSS are absolutely O(n) or worse. One of the best feelings in the world is replacing a complicated nesting of buggy BorderLayouts et al with one nice (slightly verbose) GridBagLayout that actually works.&lt;p&gt;In my imaginary company that I own where we all run linux laptops that are managed by puppet or something, I think we might make a strong case for building many internal tools in Swing.&lt;p&gt;The biggest hurdle I see nowadays to using Swing is all about distribution: both of the jvm and the program. Imo that&amp;#x27;s really where the web won - certainly not because of its dev productivity. So it&amp;#x27;s definitely a no-go for your actual software product.... but for internal tools where you have a lot more leverage over the environment, I think it looks extremely attractive.&lt;p&gt;Regarding JavaFX... Honestly, I really like it. I have a personal project that was originally in Swing and I ported it to JavaFX because HiDPI is in a lot better shape there (though I think Swing has since figured it out?). And it&amp;#x27;s a lot better in many ways. I love-love-love using SceneBuilder for designing the view layer and the Observable pattern, I think, yields a lot of nice QOL&amp;#x2F;verbosity-reducing things.&lt;p&gt;That said, I think it did have a slightly higher O() for frustration than Swing&amp;#x27;s O(1). And I think the community, as a whole, just understands it less (less prior art etc).&lt;p&gt;So if someone said &amp;quot;build a usable high-quality GUI asap or you die&amp;quot; to me, I&amp;#x27;d go to Swing immediately.</text></comment>
<story><title>Graphics for JVM</title><url>https://tonsky.me/blog/skija/</url></story><parent_chain><item><author>grandinj</author><text>We build all our desktop products using Swing, and it works pretty well. Looks pretty native (if you want it to), is thoroughly battle-tested, reasonably performant, and has a bazillion open-source extras floating around (of varying quality).&lt;p&gt;If you need 3d, we drop into OpenGL and use that (e.g. when integrating WorldWind).&lt;p&gt;Sometimes I feel bad about how easy it is to write desktop UIs in Java - the API is stable, nobody keeps changing it under me, I don&amp;#x27;t have to wonder what Microsoft is pushing this year, it is (mostly) easy to debug, has open source forms designers (Netbeans), etc, etc.</text></item></parent_chain><comment><author>swiley</author><text>You would have thought after 40 years there would be some standard GUI toolkit all the major OSes would adopt but stuff like swing, html, and TCL&amp;#x2F;tk are all we have...&lt;p&gt;and of course vt100 escape sequences for some reason.</text></comment>