AB5k Widgets in Depth

Well it's been two weeks since AB5k was released and the response has been, well, interesting. Some people really love it. Others have complained it's slow and buggy (which it is), and still others ask "why make another widget system, but this time in Java?". We got somewhat panned at JavaLobby in particular. So, two questions to answer: too early and why Java?

Too Early?

So did we do the right thing by releasing it so early? Maybe. Our real target for a quality release is JavaOne, but there's only so much two people can do. To make this a success we need the support of a community, even just for bug finding. I think it's better to release open source projects early and often. Perhaps this was a bit early, as the code is certainly rough, but I really wanted to get feedback as early as possible, and get people building on it.

Why Java?

I think the answer to my other question is more important: Why Java? Do we need another widget system? What does Java bring to the table? Well, quite a lot I think.

Mac's Dashboard, Vista's Sidebar, Google's Gadgets, and Yahoo's Widgets. All of these existing systems are proprietary, not open source, don't run on all operating systems, and don't have good support for multiple languages (both human and programming). Java is better on all counts. It's a standard and now open source. It runs pretty much everywhere (including older operating systems that Microsoft no longer supports). Java has always had great support for multiple locales and languages, and now Java has great support for multiple programming languages. Java really is a great system for a widget platform.

However, to compete with the established players we need to use Java's strengths to our advantage. So that means support for multiple languages, integrating with native resources, and leveraging Java2D. To that end we have several people who've starting building desklets using Jython and Javascript, we have plans for native shaped windows, and I've just started building a new WindowManager API that will let us buffer the desklets into images and add really cool effects. I hope what you see by the time of Java One will look a lot better than what we have today.

Quick AB5k updates:

We've put up more docs on our wiki including a tutorial on building your first desklet, an architecture overview, and some descriptions of how we use Maven and how to set it up in your own desklet. Oh, and we've also added desklet auto-updating and Augusto contributed a patch to speed up painting.

On another cool note, it looks like we may become a standard! :)

Helping out

So if you'd like to help out, first download AB5k and try it out, then join the developers group. After that we could really use some help on:

  • Building more desklets. Try building a desklet. Some cool little program that you always wanted to build.
  • file bugs on the standard desklets make the existing desklets look prettier and be bug free. What we built to start with is just that, a start. I'd like nothing more than to see them be completely replaced.
  • Design a new website If you are a graphic designer or simply handy with images and css, we could use a redesign of our website. What we have now is just a prefab template.
  • JNI Know C code? We really need some JNI help on system wide hotkeys, avoiding overlap w/ windows (docking) and setting up native shaped windows.

So that's what we've been up to. Be sure to keep up with AB5k on the blog and the developers group. If you have any questions feel free to email me.

thanks guys


Help on the first checkout of the code: the project uses NetBeans ant files so you should be able to build the container and the desklets without running NetBeans. The first time you check out the code, however, you will need to open up the project in NetBeans to resolve the references to the jars and to pick up the 1.6 JDK that you have installed (since different betas call 1.6 different things like "JDK 6", "JDK 1.6", "JDK_1.6", etc. After you set the references you don't have to use NetBeans anymore.

Talk to me about it on Twitter

Posted March 21st, 2007

Tagged: java.net