Open Source

Android 3.0 animation demo

I published last week a video of a simple Android 3.0 animation demo and I promised I would publish the source code as soon as possible. I am happy to tell you that it is now available on Google Code.


Source code for Android 3.0 animation demo

You are probably aware that our new Nexus One Android phone comes loaded with live wallpapers. I had the chance to work on some of them and I wanted to share with you high-resolution images of Grass and Galaxy. These two wallpapers were prototyped as desktop applications and you can see below what they look like.

I’ll try to see if I can get these two desktop apps released, hopefully with the code. The desktop versions run on Mac OS X, Linux and Windows.

Grass Night
Grass Sunset

Nexus One live wallpapers

Android 1.5 is finally available! You can get the brand new SDK as well as a new system image for the Android Developer Phone 1.


Android 1.5 is available

A few months ago, I showed Shelves, an application to manage a collection of books on Android powered phones. I am an avid user of Delicious Library on MacOS X and I since no similar application existed at the time for Android, I decided to write my own. Needless to say, Shelves was largely inspired by Delicious Library.

Even though Shelves is not quite ready to be release on the Android Market, I decided to publish the source code under the Apache 2.0 license. The application is already usable and lets you add books by searching Google Books or by scanning their barcode (if you have the application called Barcode Scanner installed), search your collection by keywords or barcodes, import books from a CSV file and delete individual books. The only two features I need to implement before releasing Shelves are the ability to manually add/edit a book and to view a book’s details.

If you are curious, you can see Shelves in action in the following video. You can also visit Shelve’s project page for screenshots showcasing several features.

Note: the colors on the video are different from what you would see on an Android device. I created the assets specifically for mobile devices and the colors appear therefore more saturated on a computer monitor.

Shelves, an Open Source Android application

Julian Gamble just pointed me to his new open source project, aerithnetbeans. This project offers most of the widgets we created for Aerith as a reusable library that integrates nicely with NetBeans’ GUI editor. If you are interested, I invite you to check out the showcase movies.

Aerith widgets library in NetBeans

As of today, developers can buy an Android development phone. What is so great about it? It is not SIM-locked and you can flash the firmware with the Open Source Android code base. These developments phones are basically what the Android team uses every day. They’re even better because they are based on the final production design.

Android Development Phone

Go get your your Dev Phone 1, write applications, write patches for the platform and come join the fun!

Also, I’ll be presenting two sessions on Android next week at Devoxx :)

Official Android Development Phones

Today was a very exciting day for me and all the members of the Android team. Not only did we released the source code (more than 11 million lines of code) but T-Mobile also launched the first device, the G1, in select stores. Click the picture below for some photos to the launch event in San Francisco. This is very very exciting to finally see an Android product in the hands of actual users; it’s a weird and rewarding feeling after all the hard work we accomplished.

Boxed Logo

Android Source Code and Launch

I am very happy to say that I will be at Devoxx this year to give a couple of presentations about Android. The presentations are, very surprisingly, entitled Filthy Rich Android Clients. If you want to learn cool stuff about Android and/or if you want to see cool demos running on a real Android phone, come to Devoxx :)

Android talk at Devoxx

ShutterSpeed is a simple Android application I wrote this weekend. The application itself is not terribly useful nor interesting, but it shows how to create an Android application that uses a few advanced features like orientation-based layouts, styles, themes, etc.

ShutterSpeed, a simple Android application

ShutterSpeed lets you compute the correct exposure for the ISO and aperture of your choice, given another another duration for different settings. For instance, my digital camera cannot tell me what the exposure should be at ISO 100 and f/16 for a street scene at night. With ShutterSpeed, I can just change my settings to ISO 800 and f/2.8 and get an exposure reading from the camera. The application then tells me what the equivalent is for the settings I really want.

The application is licensed under the Apache 2.0 License and is available as binaries or source code. This application requires the Android SDK 0.9.

Simple Android application

I would like to apologize to the loyal readers of this blog for the lack of updates since last december. Android is a fascinating project which keeps me very busy at work and I would probably need to clone myself a few times to implement all the features I would like to see in it. I’ve also spent quite some time settling in my new life in California and this blog was the unfortunate victim of those time-consuming tasks. I do not despair coming back to my writings very soon. I can at least tell you that Filthy Rich Clients will be back this year at JavaOne, maybe with a surprise :)


Sun Microsystems just released Project Scene Graph, a scene graph API for Java 2D and Swing. This API makes it very easy to write complex drawings or visual effects. It also lets you blend Swing component with regular Java 2D objects, with as little effort as possible. The web site contains early binaries and sources as well as a nice introduction PDF that Chet Haase presented at JavaPolis 2007.

Project Scene Graph

Android’s SDK is here. Don’t miss the videos to get tutorials and see cool demos.

Getting Started with Android

Daniel Spiewak just published a very nice introduction to Fuse at JavaLobby. I wish I had spent more time working on Fuse this year but at least it works really well. I know that Daniel is using it, or was using it, in a big Swing application.

Introduction to Fuse

InformIT is hosting a free sample chapter of Filthy Rich Clients, the book Chet Haase and I recently published. InformIT offers the full chapter 8 about image processing with Java 2D. Chapter 8 belongs to Part II of the book, advanced graphics rendering.

Refer to to download the source code of the examples.

Free Sample Chapter for Filthy Rich Clients

Filthy Rich Clients is available and several readers already received their copy. To make sure you can follow all of our examples easily, Chet and I just released the demos of the final chapters: Static Effects, Dynamic Effects and Animated Transitions.

These chapters’ demos are our favorites so make sure to check them out!

The official web site and the project page now host a total of 82 demos, all available under the BSD license. We hope you will enjoy those demos as much as you will enjoy the book.

82 Swing and Java 2D Demos

Joshua Marinacci, whom I worked with when I was at Sun, is in the Bay area this week and we had dinner together tonight. He told me more about Flying Saucer, a project he’s been working on for a few years now.

Flying Saucer is an XHTML/CSS renderer written in pure Java that can be easily embedded in Swing applications. The latest version, R7, is quite impressive. The support for XHTML and CSS 2.1 is great and the rendering very fast. I was particularly surprised by the quality of the rendering of, which caused many troubles to IE, Firefox and Safari:

Filthy Rich Clients in Flying Saucer

Flying Saucer can do much more, like PDF and SVG rendering. While it would be foolish to write a full-fledged web browser upon this library, this project is extremely interesting and useful for regular desktop applications. Writing help screens or even complicated layouts becomes so much easier with Flying Saucer. The ability to embed any Swing component within a web page leads to countless wonderful user interfaces.

XHTML/CSS Rendering In Swing

The source code for the demos of chapters 5 (Performance) and 6 (Composites) from our book is available in the CVS repository.

Demos for Chapters on Performance and Composites

Chet and I just started uploading the source code of the demos shown in our book. The source code is available at We will release the source code incrementally until the printed version of the book comes out early August. Right now, you can download the demos of Chapter 2, Swing Rendering Fundamentals. Unless specified otherwise, all the demos are released under the BSD license.

If you were at JavaOne and attended our various Filthy Rich Clients sessions, then you’ll want to look at those demos too.

Demos for Filthy Rich Clients (Book + Talk)

Daniel Spiewak, editor for the EclipseZone, and I released Fuse 0.4 this weekend. Fuse is a resource injection library mainly thought for GUI programming. I presented Fuse several times in this blog already.

The two major features in Fuse 0.4, at least to me, are the resource caching to improve performance and the auto injection facilities. For instance, when you build a Swing UI, Fuse is able to detect any new component you add in a JFrame and automatically inject its resources.

While Fuse was created to help build Aerith, it lacked real world testing. Daniel has been using it for almost a year now in a large-scale product and this helped him get rid of many bugs and improve performance. Fuse is released under the BSD license and provides support for both Swing and SWT.

Resource Injection with Fuse 0.4

Dion Almaer, Richard Bair, Joshua Marinacci, Carl Quinn, Tor Norby, Joe Nuxoll and Dick Wall met at Joe’s place this week to record Java Posse episode #118 (MP3). We had a really great time and I took the opportunity to take a few shots of everybody. Unfortunately, I was distracted by the conversation because only a few shots turned out to be good.

From top to bottom, Dick Wall and Richard Bair, Dick Wall, Joshua Marinacci, Tor Norbye and Dion Almaer. I wish I had good pictures of Carl and Joe but they were blurry (damn you shallow depth of field!) Click the picture to get high-resolution versions (3000×2000.)

You can also visit my Flickr Java set which should receive more pictures after JavaOne.

Richard Bair and Dick Wall

Dick Wall

Joshua Marinacci

Tor Norbye

Dion Almaer

Meet the JavaPosse

David Qiao, from JIDE Software, announces on his blog that the JIDE Common Layer will be open sourced shortly. Considering the quality of JIDE’s offerings, this excellent news for the community.

If you haven’t tried JIDE, now it’s time to give it a look. The website offers many WebStart demos that demonstrate JIDE’s products quality.

High-Quality Components for Swing