4 ms·
Pardon my ignorance but as an outsider(I know nothing about Java), why do GUI applications that use Java are terrible? Eclipse IDE comes to mind. They're hugel
by fermienrico 8y ago
Pardon my ignorance but as an outsider(I know nothing about Java), why do GUI applications that use Java are terrible? Eclipse IDE comes to mind.
They're hugely clunky. Also, Java based applets that used to run on browsers were awful.
I'd love to know if this is something to do with Java itself or the way these apps are developed. I understand they're not using OS's native GUI APIs.
- awestroke 8y agoCounterpoint: IntelliJ is beautiful
- taeric 8y agoWhile I don't hate IntelliJ, I do get the impression it is mainly seen as beautiful in comparison to Eclipse/NetBeans. At the end of the day, writing editors that perform well is a hard problem. Writing an editor that performs well on small files is an easy problem. People often confuse making the easy problem easier with having solved a general problem.
- jniedrauer 8y agoI think you're picking out examples of poor performing Java applications. IntelliJ's IDEs are also written in Java and they are widely acclaimed. I do know what you mean though. Even "fast" Java applications have this vaguely clunky feel to them. I think this is the overhead of starting the JVM, or possibly GC. You see something similar with CPython desktop applications.
- tatersolid 8y ago> I do know what you mean though. Even "fast" Java applications have this vaguely clunky feel to them. I think this is the overhead of starting the JVM, or possibly GC. You see something similar with CPython desktop applications. Why don’t we see this in say, .NET GUI apps like Paint.net? C# has all the same baggage as a Java runtime, but somehow just works without tuning a crapload of GC settings. Even Electron apps seem hugely more responsive and useful than anything I’ve touched built with Java GUI frameworks (and I’ve touched a lot over the last 20 years).
- fermienrico 8y agoThis was my reason for asking the original question. I always feel that Java apps are just clunky. I agree with your observation but I’m also reading that IntelliJ and other well designed Java apps are better.
- tatersolid 8y ago> I’m also reading that IntelliJ and other well designed Java apps are better. I think that’s just Stockholm syndrome from the Java dev crowd. They still insist it’s perfectly rational for a 5-concurrent-user web app server to require a 500 MB .war with 40K files and 8 GB of runtime heap.
- empath75 8y agoEclipse is just really dated.
- ptx 8y agoEclipse actually uses SWT, the least terrible Java UI framework! But making a cross-platform UI framework is just fundamentally difficult, it seems, and is always a compromise. With SWT, the upside is that you get native widgets that look and work like they're supposed to on the platform, but on the other hand, if the same widget can appear with different sizes, looks and behaviours it's difficult to customize it, align it nicely and ensure the whole design behaves coherently. With Swing, the other terrible Java GUI library, you get the same look and feel everywhere, but that look and feel is wrong on every platform. As well as slow, ugly and (still!) full of bugs. Here's a fun Swing bug I noticed yesterday in IntelliJ: 1) Put IntelliJ somewhere in the middle of the window stack, i.e. with some windows under it and some above it. 2) Switch to a different virtual desktop. (Tested in Xfce on Debian.) 3) Switch back to the desktop with IntelliJ on it. You will find (or I did, at least) that IntelliJ has moved a) to the bottom of the stack, if using Jetbrains' bundled JRE; b) to the top of the stack, if using Debian's JRE. Some Java developers like to claim that it's just everyone using it wrong, but Swing is stuffed with these focus-related bugs. I've seen them in every Swing application now and then, for decades. (It also likes to create windows at the wrong position only to move them to the right position, and draw things initially with slightly wrong layout and then redraw them with the right layout. You can observe this as well in IntelliJ when it starts up.)
- pjmlp 8y agoYes it is using it wrong, because while some issues are indeed Swing interop bugs with the host GUI, others are lack of skills by not reading canonical books like "Filthy Rich Clients", written by Chet Haase and Romain Guy, the guys that drove most of Android rendering stack. Romain Guy's team recently released Filament, https://github.com/google/filament https://github.com/google/filament Back in the Sun days, Romain had a blog about writing nice looking Java UIs, which eventually lead to the "Filthy Rich Clients" book publication.
- cs02rm0 8y agoI don't find Eclipse that bad - but the first thing I do is install the most popular dark theme from the marketplace. The default look isn't good.
- theandrewbailey 8y agoThere's nothing technical that prevents beautiful, fast Java apps. I thought that Java FX looked pretty in the screenshots[0]. It just so happens that Java is mostly targeted towards people that value functionality over GUI design or performance. Swing[1] (especially in it's default Metal look and feel) isn't the prettiest, but it is skinnable. It's used because it's platform independent (because its predecessor wasn't), and supports more than Windows, Mac, and Linux (think things like Solaris, HPUX, IRIX, etc). [0] https://duckduckgo.com/?q=javafx&t=ffab&iar=images&iax=images&ia=images https://duckduckgo.com/?q=javafx&t=ffab&iar=images&iax=image... [1] https://en.wikipedia.org/wiki/Swing_(Java) https://en.wikipedia.org/wiki/Swing_(Java)
- ptx 8y agoJava FX does look pretty, but the menu bar implementation is as broken as the one in Swing: * Switching to a different window with alt-tab will have moved keyboard focus to the menu bar when you switch back. * Holding down the mouse button, pointing at menus to open them and releasing to activate an item – the way people did it in ancient times and which has been supported everywhere forever – does not work. * To avoid submenus disappearing as you try to move the cursor towards them, GUI toolkits use either a small delay or something more clever to keep the submenu for a bit while you try to reach it. Except for Swing and JavaFX, which do neither, leading to a frustrating user experience. Interestingly, they have documented the correct behaviour in the JavaFX wiki[1], but it's apparently not implemented. (They had similar design documentation on the Swing wiki, which I can't find now, which was also never implemented.) (The Swing menu bar is broken in many similar ways, but in case someone is wondering why it works in IntelliJ, they implemented[2] the expected behaviour themselves.) [1] https://wiki.openjdk.java.net/display/OpenJFX/Menu+User+Experience+Documentation https://wiki.openjdk.java.net/display/OpenJFX/Menu+User+Expe... [2] https://github.com/JetBrains/intellij-community/blob/master/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeMenuBar.java https://github.com/JetBrains/intellij-community/blob/master/...
- lossolo 8y agoCheck out this list: https://jaxenter.com/20-javafx-real-world-applications-123653.html https://jaxenter.com/20-javafx-real-world-applications-12365... Some of those applications are modern, nice looking and fast.
- jsight 8y agoIts a really good question, tbh. I've used Eclipse and other Java IDEs for years and I consistently feel like Eclipse has had the worst UI design of them all. But it is also the most popular, even among the free IDEs. Apparently the community's UI preferences are different from yours and mine? In any case, while there does appear to be a small latency penalty, there really is no rule that a Java based GUI has to be ugly. I find both the IntelliJ and Netbeans IDEs to be pretty nice.
- steve1977 8y agoI guess it's really a matter of taste. I prefer Eclipse over IntelliJ for example (in terms of GUI). But I also prefer Eclipse over the current MS Office GUIs for example.
- pjmlp 8y agoBecause developers don't bother to read books like "Filthy Rich Clients" and "Swing Hacks: Tips and Tools for Killer GUIs", or aren't even aware they exist. http://filthyrichclients.org/ http://filthyrichclients.org/ https://joshondesign.com/c/writings https://joshondesign.com/c/writings Don't use library components like JGoodies, http://www.jgoodies.com/ http://www.jgoodies.com/ Also many just write everything on the UI thread, thus making the application unresponsive. Swing can be used to make nice looking applications, even if they aren't exactly 1:1 to native ones, but that requires good UI/UX programming skills, and yes the defaults do make it a bit harder to achieve it. Having said this, JavaFX is much easier to work with for doing graphical customization, as it is quite similar to QML and WPF in spirit.
- still_grokking 8y agoNobody mentioned Bitwig Studio[1] until now. The GUI is written in JavaFX. It works absolutely smooth. (You would notice micro-lags in a DAW). Just try the demo. It's amazing. [1] https://www.bitwig.com/en/bitwig-studio.html https://www.bitwig.com/en/bitwig-studio.html