Now that the dust has settled a bit in my life, let me provide some additional details on Nimbus.
First off, I apologize for the problems people had viewing the mockup and the specs on Flickr I linked to in my earlier blog entry. I had forgotten that Flickr makes you log in to see them in their original size. So, without further ado, here are some links to the full-size pics:
Second, let me talk a bit about where the project is at and where it’s headed. Right now, Nimbus is an early alpha release. The team hasn’t yet finished initial rough cuts of the various widgets in the Nimbus spec, much less polished them into final implementations. So to those that have tried out the Nimbus SwingSet2 demo and come away unimpressed, take it easy. There’s tons more work to come. I personally feel SwingSet2 is an easy way to look at individual widgets but a very poor way to get a feel for how a look-and-feel might look in real applications.
We’ve a goal to reach beta on the project by JavaOne ’07, but that’s just two months away and will take some doing to get there. What is certain is that Nimbus will be ready for use in Java 1.6 projects by the of the year. We have a major goal to back-port to 1.5, but that may not make release grade by year’s end (though I very much hope it will).
Is 1.4 compatibility important to you? Let me know (comment on this blog entry).
Third, I want to talk a bit about why I’m so excited about Nimbus. I believe that the designs Sun came up with are better than any other Swing look yet implemented and will allow Swing applications to be competitive visually with Aqua and Aero. Nimbus will include some innovations, including an easy way to chose from three different standard widget sizes (inspired by Cocoa and improving on Quaqua’s implementation); it will make healthy use of Chet’s timing framework for nice effects (though some of these may be optional); it will go to great pains to guarantee cross-platform fidelity; it will provide a great reference implementation of a Synth skin; and more that I’ll talk about as time goes on.
Thanks for all the kind words and interest so many of you have shown, and watch this space (and others) for more details on Nimbus as the project progresses.
Hey what about all the great work being done on the Substance L&F? It concerns me that you guys decided to start from scratch here when there are some pretty good L&Fs already out there. You ought to make an effort to
stealborrowresuse all the good stuff that’s been done in other L&Fs. Maybe a more community oriented approach might be in order here.Substance has great engineering and some cool ideas but it has, in my opinion, many visual flaws.
I think Nimbus looks great. As the desktop becomes more “webby” (love that phrase, Ben) UIs have loosened up a bit and system look and feels are maybe not as important as they used to be. I think the notable exception to this is Mac OS X, though. Mac users still want their Aqua widgets, it seems. But I think Nimbus will be a good choice for Java apps running on Windows and, perhaps even more so, Linux.
This work just looks great, and I can’t wait to see it develop. I don’t believe I’ve seen ANY look and feel except the platform ones that look as promising as this, and I think starting from scratch is important. Substance is a great technical demo, but I don’t think you’d implement an application in it.
I know it’s alpha, but I’m going to remark on something that bothers me anyway π
I don’t know about others but the fact that the spinner’s up-arrow has a slightly lighter color than the down-arrow bothered me immediately, even before understanding what it was that was bothering me. I don’t exactly know why, maybe because we have been conditioned that lighter colors mean that the widget is disabled.
ocean: Your phrase “you guys” made me want to clarify something. The open-source Nimbus project exists because I asked Sun to let me implement the Nimbus designs as a Swing look-and-feel and donate it back to Sun when I was done. I offered to do this because it suited my needs. If you think they should include Substance or some other look in JDK7, tell them! Start a community-driven campaign (as I have done with Nimbus). If Sun adopted Substance, that’s great! But I would still be doing Nimbus and would still want it for my own projects.
Of course, since before the project launched, Sun has allowed Jasper Potts to work on Nimbus and so far he has done all the implementation work. That will change as time goes on both through volunteers and folks I’m funding to work on it — and hopefully some of my own code time. If you feel strongly this is a bad investment on Sun’s part, take it up with them. π
Dean: I like AquaLookAndFeel on the Mac, especially when combined with Quaqua (though perhaps Leopard will make AquaLookAndFeel even better). However, when I need to develop xplatform apps, I would prefer to do all my design work once and if the xplaf look-and-feel is good enough, I’d give up using Aqua for such apps. Hopefully, Nimbus realizes this goal.
Quintesse: I like where your head’s at. Rest assured we sweat over these little details too…
Dean: BTW, I can’t take credit for “webby” — its a phrase the old Dilbert boss used to use.
Nimbus is looking great so far.
Your comments about SwingSet are correct, perhaps it’s time to include a new mock application that concentrates on showing the different look and feels available?
Augusto: I’d be surprised if you didn’t see just that sometime soon.
I had been skeptic in an earlier post, so let me count a few things that I immediately liked about this L&F –
1) Scrollpane thumb – elegantly novel.
2) Slider and splitter thumbs – simple but elegant.
3) Colors on the window controls – go a long way to cheer up the application.
4) Indeterminate progress bar – cool!
5) Animation effects – bring ’em on!
SwingSet certainly is getting old in the tooth.
As Nimbus develops, can you can Jasper blog to give insights into how an enterprise-class L&F is developed?
I’m guessing/hoping that since it’s based on synth, there will be some ability to control the overall color scheme? There’s more usable UI colors than shades of blue & gray, and it will be nice to have the ability to customize a bit.
It would be really gee-whiz to see this coloring somewhat match or mirror the system’s installed theme. Maybe it borrows hints or something about the color scheme. For example, in XP, if I’m using the Olive theme, then possibly Nimbus could borrow some of the green and beige tinge. It would still keep the feel and even the “style” of the laf, but would give buttons a different hue, etc.
Anyway, good stuff. It’s long overdue.
p.s. Oh and +1 to Sumit’s comment about you guys blogging on the creation of the laf.
We need to convince James Gosling to include that in Java 7.
Java desperately needs Nimbus included by default.
Thank you guys for taking the time and working on this on your own. With WPF and all that coming up, Swing needs to evolve to be competitive. Thanks you for your effort to make Swing evolve.
Adam: The fact that it is based on Synth does not make color schemes easier to implement. That said, because Nimbus is mostly based on images, you can easily change the theme yourself. I have a few ideas on how to change the color schemes from the images but that might not work well with an arbitrary color scheme.
I had a look and I really like the look of this. very nicely done. i have purchased two commercial lnfs (synthetica and jtattoo) for my apps, but I prefer the look of nimbus even as it stands. I’m extremely fussy about these things. In particular, I cannot stand metal, ocean and I don’t really like the visuals of substance even though I appreciate some of its technical advances.
I particularly like the numbus scrollbars, and the sliders. I also really like the max/min/close buttons with colors. Very tasteful.
I hope that you will be able to do decorated frames also.
Excellent, keep up the great work!
Andrew
Combobox and spinner:
North border of arrows button is brighter than north border which contradicts borders of text field of these components. Compare with drop down menu.
Scroll bar is… too webby? π
I don’t like indeterminate progessbar – what about simple, boring rectangle moving left->right or leftright (bouncing)? :p
I like that components (textfield, combobox, spinner…) have the same height – it makes components looks visually good when they are laid in the same row. Of course – add icon and you are fucked again. That’s why I’m generally against icons on buttons and that’s why I appreciate OSX HIG…
This looks indeed very promising. Great work! I especially like the fact, that certain important elements seem to be inspired by the current Mac OS X look. If only tabs could be presented in the same stylish way as they’re done by Apple. But that may be a bit too much resemblance (although by the time Nimbus is ready, it might look quite different from Leopard?).
Java 1.4 compatibility would be much, much appreciated. And it would be awesome if you should decide to implement the proposed outer glow for focused components. It looks so much better and would IMHO justify some (potential) additional efforts for developers to adapt.
I’m looking forward to test it when all components have been implemented. I hope it won’t take you too long π
I’m not sure that 1.4 feasibility would be possible since Nimbus is based on Synth which is only available from 5.0
Sumit: Good idea!
Adam: Skinning Nimbus is not likely to be a priority for a while, though perhaps not for the reason Romain states (we’re actually going to try and do as much with 2D as we can, though we may not be successful). Nimbus represents a Sun brand and making it easy for folks to create their own custom version of it may not jive well with them. I’ll add two more reasons of a technical nature:
1. Part of the value of a xplaf look-and-feel is knowing that your app is going to look exactly as you’ve designed it on every platform without you having to go in and tweak it. If the colors changes on a per-platform basis, you’d have to do research, etc. to figure out what symbolic color derivitives to use on each platform. Bleah…
2. Its very expensive and complex to create generally reusable custom components for Swing because of all the variables involved. If a large segment of the community used a consistent look with a consistent color scheme, I think it will be much easier for ISVs and others to create such components.
Am I off base?
Andrew: I’m fussy about this stuff too… you’re in good company. And we’ll definitely do decorated frames.
spk: Good feedback, thx.
Marco and Kirill: Backwards compatibility is actually a bit complex. Because we’re doing Synth, we’re going to have to target 1.6 for the initial release as it has had quite a few fixes applied since 1.5. We’ll probably add more patches to Synth in the process (that will be included in 1.7), so we’ll have to back-port those to 1.6.
We also need to support 1.5, so we’ll need to back-port the 1.7 and 1.6 patches back to 1.5. Since 1.4.2 included Synth as a private API, its feasible to back-port the 1.5 + 1.6 + 1.7 patches back to 1.4.2. We’ll see…
A question – is the intent of this project to implement the Nimbus L&F spec as defined by Sun for JDS to the letter, or to use it as an inspiration for a brand new XPL&F for Swing? Is there a point suggesting alterations to the look? Nice as the Nimbus spec is, it could use some improvement. Panel backgrounds are a bit too plain and a bit too reminiscent of Ocean, titles on tabs are too high.
L&F work is very important. It is encouraging to see Sun investing resources, and engineers investing their time, in look and feel work. Both Nimbus and Substance are examples of what a swing interface can really look like. Together with a native filechooser these L&Fs will go a long way towards dispelling the “swing is ugly” line trotted out all to often by swing and Java detractors.
Nimbus LookandFeel doesn’t work with JTable.
Exception in thread “main” java.lang.NullPointerException
at javax.swing.JTable.setSelectionBackground(Unknown Source)
at javax.swing.plaf.synth.SynthTableUI.updateStyle(Unknown Source)
at javax.swing.plaf.synth.SynthTableUI.installDefaults(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.installUI(Unknown Source)
at javax.swing.JComponent.setUI(Unknown Source)
at javax.swing.JTable.setUI(Unknown Source)
at javax.swing.JTable.updateUI(Unknown Source)
at javax.swing.JTable.(Unknown Source)
at javax.swing.JTable.(Unknown Source)
at org.ifl.swing.Test.Test.(Test.java:141)
at org.ifl.swing.Test.Test.main(Test.java:193)
dhilshuk: I’ve ran into the same trap – Nimbus is far from being finished and several components are not yet supported. See https://nimbus.dev.java.net/project.html for the current project state
dhilsuk: Marco’s right. As an alpha, Nimbus is incomplete. Once we designate a beta release, that means its roughly feature complete but needs polishing and debugging. We are targetting JavaOne for a beta release.
Good to hear from you Ben.
>Most of the application which which develope in our company are with Java Swings.
>I am the person who deals with Java Swing and Java2D.
>We used lot look and feels in many applications .
>We want to standarize the look and feel for our applications, I wish Nimbus will make us to do that.
>The default font of the Labels in Nimbus is not good.I wish the developers will have look onto that.
>Hoping for the Beta Release of the Nimbus soon.
>Thanks for the enire team of Nimbus for the good work they are doing.
cheers Nimbus team.
Dhilshuk Reddy
how I can set this look & Feel?
//why it not works?
JFrame.setDefaultLookAndFeelDecorated(true)
Hurray for someone to finally try a full LnF with Synth. Maybe finally the bugs will get fixed.
I noticed many many issues with the SwingSet demo. E.g. tabs only work on the “top”, one-click-expandable on a splitter has no visual component, focus is always painted on JButtons, but never on radio buttons.
I realize that Nimbus LnF is a work in progress.. but I wonder how many of these issues are related to bugs in Synth? I looked into doing a LnF in Synth back with Java 5.. and well, it wasn’t possible. I suspect even though Java 6 fixed a few things it still isn’t possible. Basically Synth has been dead weight in the JRE for two major revisions now. I really hope that this project results in that being fixed.
It’s all very nice. At first I thought the scrollbars were way too funky, but now I’m starting to like how they hang off the edge of the content they’re scrolling. I also appreciate how the mouse-over effect is kept subtle. The colorful window controls are perfect — far better than Windows XP, and less abstract than Mac OS X. This will make a big difference!
I heard that Nimbus might include a UIDefaults editor tool to allow for quick manipulation and persistence of values. Is this true?
Oh my gdnsoeos, those dogs are adorable!!! I love how the frenchie on the right has his feet through the swing holes!