Mac Widgets for Java – source available
September 10, 2008
The source code for Mac Widgets for Java is now available here. Also, check out this article that builder au (an Australian developer site) just did on the release of the project. Below are my full responses to their questions, which don’t appear in the article.
1. Why did you start the project? I started Mac Widgets for Java because I wanted to see higher fidelity, higher quality Java applications on the Mac. It can be quite time consuming to recreate what Apple offers via Interface Builder. What really made me cringe, though, was seeing poorly designed Mac style components that didn’t quite match what OS X offers – user’s pick up on the tiniest details like incorrect font sizes or minor differences in color and gradient. I wanted to help the reputation of Java user interfaces on the Mac while giving Mac Java developers a set of straight forward, easy to use widgets that their end users would see as native OS X components.
2. How hard was it once you had the idea to create this? Mac Widgets for Java was born out of a demo application for my June 2008 talk at Java One (slides available here, and audio here ). I wanted a really slick, “Mac looking” demo application – I ended up writing what would be the beginning of Mac Widgets for Java. The most difficult component to write (thus far) has been the Source List, which I explored on my blog over the couple of months it took to develop. It’s the subtle details, like the feint drop shadow under a Source List categories label text, that consume the majority of development time.
3. Where do you see the project going? Right now, the only officially supported component is the Source List, but in the coming weeks, I plan to add full support for the following (note that the components below are actually in the current code base, but aren’t fully documented yet):
- Unified toolbar (see the Window Elements section in the Apple Human Interface guidelines for details)
- Bottom bar (see the Window Elements section in the Apple Human Interface guidelines for details)
- Preference tab bar
4. Are you looking for external contributions to help you? I’m not actively looking for external contributors right now, but I’d certainly be willing to consider it. I’m really focused on the quality and simplicity of the API and underlying code as well as the visual integrity of components, so I may be somewhat ruthless when accepting contributors!
5. Additional comments? The API was developed with a component based architecture in mind. Thus my focus was on providing small independent units. I wanted to avoid huge inheritance hierarchies that are all to prevalent in Swing, in an effort to keep the API surface area as small as possible. Using the library may feel awkward for some developers that are used to extension, but I think most will come to find the API refreshingly simple.