Posted on Mar 25, 2009

Breakdown of what should be default LAF for Java 7

After watching the voting and reading the comments I have noticed two things: First is from 30 votes to 800 votes the percentages have hardly changed which means we seem to be falling on a conclusion. Native LAF has varied from 59% to 63% so nothing major and is a clear winner.

The second point is there seems to be different answers for Windows and Unix and good arguments that maybe they should not be the same so let me start a new poll with them split and see if I am right. I will split the poll into 3 categories Windows, Unix GTK and Unix KDE. I am not quite sure how we detect between GTK and KDE but sure we can find a way :-)

What should be default LAF for Windows?

  • Native (Windows Look and Feel) (63%, 577 Votes)
  • Nimbus (34%, 310 Votes)
  • Ocean(Metal) (2%, 22 Votes)

Total Voters: 909

Loading ... Loading ...

What should be default LAF for GTK(Unix)?

  • Native (GTK Look and Feel) (51%, 411 Votes)
  • Nimbus (45%, 359 Votes)
  • Ocean(Metal) (4%, 32 Votes)

Total Voters: 802

Loading ... Loading ...

What should be default LAF for KDE(Unix)?

  • Nimbus (63%, 493 Votes)
  • GTK Look and Feel (31%, 241 Votes)
  • Ocean(Metal) (6%, 44 Votes)

Total Voters: 778

Loading ... Loading ...

Again If you have a strong feeling one way or another then please explain in a comment below as we would love to hear. All your votes and comments will be taken into consideration when we make the final discussion.


  • G.C. says:

    The main problem with using GTK on KDE is that the new gtk-qt-engine to give GTK 2.x applications a Qt 4.x LAF is fundamentally broken, especially on Java, so using GTK as default LAF on KDE dooms it to a broken layout.

  • Mark says:

    Native should be native regardless of the GUI. Gtk on Gnome, Qt on KDE. Still something else on XFCE and other desktops. Why is this so hard to comprehend? Why is GTK Look and feel regarded as native on all Linuxes? Same with java.awt.Desktop: why isn’t it fully supported under KDE?

  • Emilian Bold says:

    I noticed this poll last time but I didn’t vote because it seemed like a bad way to do it. So you are basically saying that the look and feel for JDK 7 is being decided based on some votes on your *personal blog* ? So, no big poll on or, no big Sun-sponsored usability study or something like that ? Just some polls on a blog ? It’s really odd to me. I know your post might be aggregated by some other sites but still…

    Regarding the LnF, all I really want is that the native look and feel feels ‘native’ and the other look and feel (say nimbus) looks distinctive enough but is usable. From my experience, users don’t seem to be scared by different ‘styles’ in the applications: quite the contrary, a different look makes your desktop application stand-out. It turns out people don’t really want plain-looking applications.

    • Jasper Potts says:

      Emilian: I am sorry this is not official enough for you, I don’t have final say so on what LAF will go into Java 7 but its one of those cases that If someone doesn’t stand up and make it happen then we will carry on with Ocean as we do now. So there was a motion to move to Nimbus for Java 7 but I am not 100% sure that is right as a lot of people here have said that Nimbus requires some work on the developers side to make a application look good which is not ideal for the default look. Our aim when creating Nimbus was to create the best LAF we could without compromise to backwards compatibility so that is what we tried to do. But those decisions have their limitations like not being a idea default LAF. The reason for the poll was a bunch of us were discussing what we should do Nimbus vs Native vs leave it alone and wanted a wider set of opinions. There have been loads of opinions voiced here which have been a real help. It looks like the windows case is more clear cut than unix as one as the Windows LAF is much better than any native offering on Unix and also there are so many more native’s to work with on unix like GTK,KDE etc.

  • Richard Osbaldeston says:

    Seems a large part of the argument here is more that the native LAF for Linux sucks. So are you saying it’d get more work to sure it up (if chosen) or people should choose an alternative to native that at least stands half-a-chance of working in JDK7?

    Had an issue voting on second two issues as aside from fellow developers I’ve never met or heard about a Linux user for any Swing app we’ve developed and I’ve been coding Swing apps since ’98. Even then it my option UI developers should develop on the same platform their users. So hand on heart I’ve never seen Linux PLAFs let alone be able to have a strong option on the choices. Will the above polls be weighted to reflect user base? i.e. 95% Windows? (but more like 100% in my experience, admittedly this is mostly intranet apps – hence the extra bias?). Do you get many user Swing apps? limeware?

    Ideally the default would be a consistent API call across all platforms, including Apple, which you dont offer a poll for as its hardcoded to Native (OSX look and Feel) by Apple. Seems all things being equal native would be logical.

  • Having never created a look and feel, I would love to know how difficult it would be to offer a KDE theme based around the QT look? Is this feasible in the sense of timeframes, or just too time-consuming, and then also requiring continued maintenance?

    My preference universally is to have the native look and feel for each desktop, but I expect that this is a maintenence nightmare. A little clarification around this would be much appreciated!

    Jonathan Giles

    • Jasper Potts says:

      Jonathan: It is a lot of work to do a look and feel, Nimbus took 2 people 18 months for example though you might be able to reuse Nimbus and just put new painters in for the graphics in which case it would probably be a couple month project. One of the aims of Nimbus was a hope that it would be the last full LAF that will have to be written that any new LAFs can be based on it and save a huge amount of work.

      Part of what makes it such a big job is the amount of little special options that the controls have to have, for example a JSlider when used in JColorChooser has to have a arrow shaped thumb not a circular one. There are 1000s of little special cases like that throughout Swing. The other difficult part is if you have a design that is outside of what BasicLAF can handle for example before Nimbus it was hard coded that all JComboBox arrow buttons must be square that took several weeks to find a way to fix it without breaking backwards compatibility and the change had to be done in core Swing. So if your design can be flexible around the way Swing does things then it should not be too hard but if you are stuck to a design like a native one where it was designed around the functionality and limitations of another toolkit like QT then there is a lot more work mapping one to the other. Also if you need to support any QT theme then I expect it will be very hard as it was with GTK. Even with GTK the Java LAF is limited in what types of themes it can use because there are different C/C++ theme engines with different APIs so it can only handle the ones it was designed to. So it could be as short as a couple months if QT is well architected and similar enough to Swing or it could be a couple years work.

  • kurt says:

    I think Java should have the same default-LAF (Nimbus, or Ocean/Metal) on all platforms. Two reasons for that:

    Taking the chance of innovation – maybe in future offering capabilities beyond the OS’s it is running on. That could be a boost for dekstop-java as well (Sun/IBM should consider a little more efforts (special easier/less to code) in this area (Swing – not FX) if they _want_ a desktop-java). Also many successful applications (not only java-apps) had kind of their own look and feel – maybe also because of that.

    Boring – why every program has to have the same look-a-like? Only take care still to integrate into the desktop. There is no need trying to copy the OS’s desktop-system all the time and (because of that) still being always behind. Better “do it your way – but good”.

  • Somehow I can’t seem to vote…

  • Cay Horstmann says:

    I think it is time to put Ocean to rest. Nimbus is a very distinctive L&F, and it is likely to clash with the user’s platform theme … unless there is a way for the end user to adjust the basic color palette. I am afraid you’ll just have to fix the GTK theme.

  • andries says:

    How about just plain KDE.

  • Steven says:

    Obviously, you should have a default look and feel that blends in with the OS as seamlessly as possible. Never irritate the user! In the absence of a QT L&F, GTK+ may be good choice even for KDE, but there’s one problem: KDE is single-click by default. Java L&F is not. That is really irritating!

  • abu abdulla says:

    I’m voting for Metal. The reason is very simple from my point of view.
    – The default should behave the same way in all platforms. This is somehow touching a major aspect in JAVA.
    – The best in performance and has less bugs than any other L&F (mature enough).
    – ALL JRE L&F are not satisfying yet (appearance) from my point of view. If you need a professional one you should use/buy another one.

  • Aleix says:

    I think Ocean should be the default laf on all platforms, I would like Nimbus of course, but Nimbus is not fully backward compatible with 3d party libraries, so better Ocean to avoid compatibility issues. I like Nimbus a lot, but Ocean seems to run a bit faster as it’s just a skin over old metal lf.

  • Linuxhippy says:

    Why does the default LnF has to be changed? I assume quite a lot of apps would break with such a change
    After all, its so easy to change the LnF which should be used, just 2-3 lines of code.

    * The GTK theme is too slow and broken to be used as default. The big pain is that GTK+ itself is not really suited for used by other Toolkits, so at least the performance problems are GTK’s fault. This will hopefully change with GTK-3 and their new theming API.

    * Sure a QT LnF would be great, but who should implement it, how does maintain it and how takes care of all the regressions it will cause? After all, just another LnF you’ve to test you application on.

  • Emil Kirschner says:

    Now that QT is under LGPL, it would be just great if there would be a native QT LAF. If Sun doesn’t have the resources for it, maybe Nokia or the KDE team do. That would certainly be better than the the former QT for Java, axed by nokia for good reason.

  • Mike Swingler says:

    I’m looking forward to seeing Nimbus as the new cross-platform default, though my personal bias would is to default to native when an appropriate native variant is present. Using GTK on KDE is definitly not appropriate.

    Jonathan: Creating a look and feel that is true to native is hardwork, even if you control the entire OS stack.

  • Henrique Fernandes says:


    In my opinion as user I think that something must be done to get better looking Java applications and fortunately there is good being done. The old Ocean theme for Metal should be reaching it’s life-cycle end.

    As a Java Desktop developer I would like to have a solid and fast LAF that could be used on all platforms (win, mac, unix(gtk+kde)) with no surprises. (Use it on mobile devices and TV Boxes would be great also)… So I think that Nimbus is on the way, but probably there is a lot of work to do.

    I agree with Emil, when he says that “If Sun doesn’t have the resources for it, maybe Nokia or the KDE team do”. That would be great to have native LAFs developed by the people with the right know how – like we have on mac. But to get there, the process of developing a new LAF shouldn’t be a huge task. And again, I think that the development of Nimbus (and it’s LAF tools) should be a step to simplify this process.

    Regarding the polls my opinion right now is:
    The default LAF for Windows/GTK(Unix)/KDE(Unix)/Mac should be Ocean because:
    – It’s fast, solid and shares the same look and feel between all systems with no surprises;

    In a near future I would like to change my mind to:
    The default LAF for Windows/GTK(Unix)/KDE(Unix)/Mac should be Nimbus because:
    – It’s fast, solid and shares the same look and feel between all systems with no surprises nor backward compatibility issues;
    – It’s the perfect start point to redefine a custom look for any application;
    – It’s the default LAF for JavaFX and I can share it between “all the screens of my life”;

    I really understand the Native LAF choice, and that would be mine too if each platform had a real Native LAF. I think that if the default is Native, it should be Native for all platforms.

  • swpalmer says:

    Nimbus should not be the default, native should. In fact Nimbus is great except for one MAJOR drawback – it doesn’t do window decorations. That leaves your window borders sticking out like a sore thumb because they are radically different from the Nimbus look. I know the painters and images are mostly their – since JInternalFrame is pretty close to what you need, but sadly Nimbus is left *incomplete* by not drawing the window decorations.

  • I’d much prefer Nimbus. I may not know what I’m about on Vista, but when I use the Windows L&F, my app looks pretty bad.. some of the font choices are unpleasant (especially text in a large scrolling JTextArea.. does Windows have a dedicated widget for displaying a large amount of scrolling text a la Notepad?), and my interface, not being designed with any Windows-specific interface touches, still looks out of place.

    Having a consistent default look and feel makes my job of documenting the app easier for my users, and if they really want to change the look and feel, I give them a menu to do that with.

    Nimbus looks great, works great, and I find it eminently usable. The only circumstance in which I personally favor a different look and feel is when I’m running my app via a remote X11 connection over DSL, in which case Metal/Ocean is much more efficient.

    Nimbus++, I say.

  • Hervé says:

    I prefer Nimbus too. And I don’t think it would be a good idea to make the native Look and Feel of each platform the default. Then a Java app will look different on each platform, which is contrary to the multi-platform nature of Java.

    A lot of non-Java successful user applications (iTunes for example, but also any media player on the planet) do not use the platform Look and Feel but their own, so I don’t think that the argument which says that users are confused when Java apps do not have the native Look and Feel by default is valid.

  • Hervé says:

    Another thing: I don’t use Vista (only XP), but I am don’t think that Windows L&F is so good. Perhaps it is because I used windows so much (as for a lot of people on the planet), but I am as fed up with Windows UI than for the old metal Look &Feel 😉

  • Miguel Muñoz says:

    I love the look of Nimbus, but I’m reluctant to vote for it until I’m confident the bugs will get fixed. My biggest gripe is the way all of my JTable cell renderers clash visually with Nimbus. And I don’t want to write a whole new set of Renderers just for Nimbus, which I’m not sure is even possible, given the strange way Nimbus draws tables. (Right now I use a workaround that changes the look of JTables, so they’ll work with the same renderers that work fine in other L&Fs.) But when I look at the Nimbus bugs in the Bug Database, many of them have low priority and haven’t even been evaluated yet, which doesn’t boost my confidence. On the plus side, Nimbus finally gives us a cross platform L&F that looks so good it makes me want to abandon the platform L&F.

  • walter says:

    why should we accept the Window L&F as the default or best UI available? Windows was created about 20 years ago. Why take an old-timer instead of a new innovative and more productive UI or LAF?

  • McDowell says:

    I’m in favour of keeping the default as is for backwards compatibility reasons. Otherwise, a JRE upgrade could potentially turn an existing, deployed app into a usability mess if the developers haven’t been mindful of Look’n’Feels.

    I’m all for newer, better UIs, but prefer them to be an option.

  • Sultan says:

    I personally vote for creation of QT (KDE) LAF. I’m exclusively using KDE. I’ll other platforms and WMs — I don’t care. In absence of such I’ll use Nimbus or Metal but hardly ever GTK.

  • Rob Bygrave says:

    I voted for Native L&F but I potentially want to change my mind. Specifically, I want to clarify that Nimbus is pretty easy to skin (colour/themes as well as painters) … and due to being Vector based… I’d expect you’d be able to increase/decrease the size of the fonts and controls … and it will still look great.

    That is, if its easy to skin … and easy to support scalable UI’s then its the L&F I’d want to use.

    Is there a demo app showing off the vector rendering… dynamically scaling the fonts/controls via +/- button or similar?
    Is there a demo app that shows toggling between colour/themes?

    Thanks, Rob.

  • Ron says:

    I have come a full circle on Nimbus and in the end I can say that it is an extremely outdated look and feel. If Nimbus is the default for JDK7, then I better consider other GUI alternatives, not Java.

  • Jesper says:

    The Nimbus look and feel looks very nice, but the *default* look and feel on any platform should be the native look and feel of that platform or desktop environment: the Windows LAF on Windows, GTK on GNOME, Qt on KDE, Aqua (or whatever the system LAF is) on Mac OS X.

    Ofcourse Nimbus should be available, but not as the default.

    Most users want applications that look native, and not applications that look totally different than most other applications they have on their system – regardless of how pretty the look is.

  • Ande says:

    If I were to design a Suite of Applications written in Java, I would choose the Nimbus L&F … I always endeavour that my software is substantially better than exist instances of software. I’d utilise Nimbus’ distinctiveness to add distinction to my own software.

    You should aim to make the Nimbus L&F become synonymous with good software irrespective of the underlying platform.

  • Ande says:

    Oh and … Java is sold on the premise it is multi platform …

    Creating software that looks good using Nimbus once makes my life as a developer. It is far simpler than tweaking the UI to each set of platform dependant idiosyncrases.

  • Till says:

    To be honest Nimbus looks like a nice try by someone who is not really into (ui)design. Parts of it, especially the scrollbars dont work. They kinda visually bend to one side and stick out. And the overall choice of colors is a grey swamp with some blue and green mixed in. How cold can it get? I mean, grey on its on with some colorfull touches is ok, but dont mix the grey. Then the icons, dont get me started on them. And the progressbar, and and and…

    I dont want to be harsh, but to replace the native look and feel you have to come up with something superior, with something superior to vista/7/gtk and thats not it. When i looked after some long time at Netbeans 6.7 with its mac-alike LF i was pleasently suprised. The first time i saw a java-ui and liked it, despite its still beeing different from the native look, but close. But i dont think the point is being close or the same on all platforms is most important, but being pretty. Most users, and im not speaking about the people who voted here, because they are most probably all devs, really like things to be pretty. A Application has to give them a warm feeling, despite beeing usable and all that. So if you are not aiming for devs, most of them aint got a sense for aesthetics anyway(yeah, fuck me, i know), give it another try and ask some designers about it.

    This theme is just like my english – it kinda works. But if i understood you correctly, this most importantly provides the groundwork to develop new themes easly. Then please hire some decent designer and let him do his work.

  • […] Nimbus L&F offers great potential for a cross-platform vectorized appearance, the ability to customize/skin pretty much every aspect of the visual appearance and component behavior, replacing Swing’s Synth L&F which was used for such customizations in earlier Matlab/Java releases. Nimbus is pre-installed as a non-default L&F in Matlab R2010a (7.10) onward, because it seems that most designers who target a single platform still prefer the native L&F. […]

  • Supuhstar says:

    I have very high hopes Numbus will be used on both Unix and NT. This is simply because of one huge part of each and every one of my programs: Coloring. The Native LAF for Windows does NOT allow you to color components (background coloring while Opaque is false results in a border-style coloring. The body of the button, etc. is NOT colored with native LAF). Having used Motif, Metal, Nimbus, AND Native LAFs in my programs, I must say I’ve had the most pleasant experience with Nimbus. Its modern look and easeof modification have a certain appeal that I am looking forward to seeing in cross-platform use. I would be quite disappointed if I were stuck with Native, and I think Metal has run its course. I regret that I was late for the vote, but consider this mine. I sincerely believe that Nimbus is the best choice.

  • Unai says:

    Quoting swpalmer:
    Nimbus should not be the default, native should. In fact Nimbus is great except for one MAJOR drawback – it doesn’t do window decorations. That leaves your window borders sticking out like a sore thumb because they are radically different from the Nimbus look. I know the painters and images are mostly their – since JInternalFrame is pretty close to what you need, but sadly Nimbus is left *incomplete* by not drawing the window decorations.

    I agree 100% with that.
    Lack of top level windows decorations is the one thing that has always prevented me from using Nimbus laf on my projects…