Today marks the half-way point of my internship with Red Hat… I started 8 months ago, at the beginning of last summer, and I’ll be here until the end of next summer. And since this blog’s now on the Planet, I thought I’d reflect a bit on my Classpath work over the past few months.
Interestingly, when I came here, I had just about zero experience working with graphics – who knew that would become my focus. After some time doing various bug-fixing and learning the codebase, my first major “project” was the java2d benchmarker. It’s in the classpath examples directory, and I’m still using the tool: both to measure performance, and as a quick visual test of basic java2d drawing.
Image operations were next on the list: testing and fixing the various java.awt.image.*Op classes… transforms, band combine, convolve, and the like. Performance still isn’t as good as I’d like, but those classes are now tested much more extensively in Mauve and are much more robust.
But recently, I’ve focused on our java2d cairo peers, using the Batik testsuite to measure compliance. With Sun’s recent open-source Java announcements, this has become all the more important since it is a potentially encumbered area of Sun’s Java implementation… we’ll see if any of my work sees the light of day. The test-suite has gone from crashing horribly, through a number of steps, to mostly passing. Instead of most tests throwing exceptions, now half the tests complete perfectly, and another third are pretty close. That leaves only 5 of 30 tests crashing or otherwise failing badly.
The Batik samples have been a great stress-test for our java2d, as it uses many of the less common areas… custom composites and gradients, translated subimages and subrasters, etc. Once the rest of the tests are passing, I’d be interested in profiling these tests to see exactly how much of the java2d is tested: I suspect it’ll be most of it. In the meantime, here are some interesting before & after screenshots: