Archive for March, 2007

Draft Nimbus Spec Released

Friday, March 23rd, 2007

I have put together a spec based on all the designs for the new Nimbus L&F. It is no where near complete yet but If you would like a glimpse at what all the components will look like when done then check out: Nimbus Spec

JProgressBar Gradients

JProgressBar Animations


Blurb BookSmart: The best Java app I have seen in a long time

Wednesday, March 21st, 2007

I just got the photos from our photographer of the wedding and would like to get some books printed of them. So I have been doing the usual internet research reading up on all the services out there. There are about 60 of them in the US. There seemed to be 3 that stood out from the crowd for the best quality for a reasonable price. They all have very good comments on the forums and blogs.

I decided to go with Blurb as they have good reports and seem very reasonable. So off I went and downloaded their application for creating a book. After a few minutes using it I thought “Hey this is a nice app I wonder what it is written in” so looking at the about screen and seeing names like Log4j and iText it was obvious it was Java. It was very fast even with the 14Mpix Canon 5D images from the photographers only taking a ~5sec to load and display them. Overall it has a very nice feel to it. There are a few little annoying things and a couple of minor bugs that I came across but I would give it a 9.5/10 and I am sure by the time its out of beta a 10/10. Any of you who know me know I am very fussy about applications and am not easily impressed, but I would be proud to produce an application like that. It gave me that nice feeling that Java Desktop Apps are cool :-) and I am glad that I am now getting a chance to help make Swing better and make it easier for people to create more cool apps like this one. Three cheers to the Blurb team and keep up the good work.

So go download a copy and have a play:

Download Blurb

blurb-booksmart-small.png

Looks like its a custom L&F I have not seen it around before. Has any one else? Something like a cross between Picasa and Flash components.
The seem to be doing well with the image performance I am curious if they are doing any cleaver tricks. Looks like they are just using the JAI-ImageIO to handle more image formats than the core JDK can handle like TIFF and JPG2000. The impressive thing is it seems much faster than Apple Aperture to load and work with the huge 14Mpix images I have of the wedding. I have a been working on my image scaling algorithms I wrote for Imagery recently for another project. I will do a blog on them soon and opensource them. They are not faster general purpose solution but can make huge performance boosts in special cases like scaling large images down to thumbnails. They can generate thumbnails of several large digital camera images a second so great for thumbnail browsers.

My JavaOne talk has been accepted: Why Spaghetti Is Not Tasty

Wednesday, March 14th, 2007

I proposed this talk as I think there is not a lot of information available for people setting out to build large swing applications. So I wanted to share what I have learned from working on several and building one from scratch. Hope to see you there :-)
chef.jpg

Why Spaghetti Is Not Tasty: Architecting Full-Scale Swing Apps
This presentation tackles the biggest issue in building medium- to large-scale Swing applications: if they are not architected from the beginning, there is a high possibility of the interconnections and communication (events/listeners) becoming the biggest pile of spaghetti you have ever seen. This leads to unmanageable application code; slipping project deadlines; spiraling development costs, and in bad cases, project failure. The presentation sets out to explain the main issues a developer is likely to come across in trying to build a full-scale Swing application.

• Wiring - how does one part of the application gets access to another part—for example, how does the Open action in the File menu get access to the main panel to change its content or how does a dialog box access the main frame?
• Communication - when something changes in the application’s state, how do you notify all the interested parts of the application? For example, if you change the selection of items in the main view of your application, how many parts of the application will need to know about that selection change. For starters, there are bound to be a load of actions for Select All, Copy, and Paste that might want to be enabled/disabled, based on the selection. You may have detail panels that show the details of the selected item that need to change their content and so on.
• Modularity - How do you break a large application down into manageable parts that can also make it easy to manage and split within a team.

The session also explains the common ways of handling these issues and discusses the pros and cons of each, including introducing open-source solutions such as Eclipse OSGi, NetBeans software, and Platonos. It finishes up with a fully realized example architecture for large Swing applications that the speaker developed for Imagery (www.xerto.com/imagery) and some hands-on demonstrations of how to get started and code a simple application with this framework. Attendees receive a URL for downloading the framework so they can try it themselves.

The presentation aims to guide the attendees through gaining a understanding of the issues to having a good idea of how to solve them at a code level, so they don’t end up with a pile of spaghetti.

Nimbus WebStart DEMO

Monday, March 12th, 2007

Richard Bair has kindly put up a webstart demo of SwingSet running Nimbus on Swing Labs. Launch

Nimbus project open to the public

Monday, March 12th, 2007

We have opened the Nimbus project on http://nimbus.dev.java.net/ to the public so you can go there and get the source or sign up to help out :-)