On Fat Cats and Fat Clients
Return To Hot Chicken (Noodle Soup)
I'm a bit under the weather this week, which is really quite unfortunate since said weather is amazingly springlike here in San Francisco. Illness seems to hamper my coding abilities, so I figure I'll take this time to catch up on my blogging.
Whatever Happened To Pong?
So what's new in the world of client side Java, you ask? The best place to start is the recent first-beta release of J2SE 1.5, codenamed "Tiger". (Tiger's a big release, and it's just about the only thing bigger than my 18 lb. kitty named Toledo.) I know plenty of people have blogged about all those new snazzy language features, but there's so much more, especially for rich client developers:
- a new OpenGL-based Java 2D pipeline (my little baby's all growns up, bringing all sorts of performance gains)
- new BMP and WBMP plugins for the Image I/O framework
- BufferedImage: now even better than butter!
- new and updated Swing look-and-feels (Ocean, GTK, Windows XP, Synth)
- a new X11-based toolkit (called XAWT) that reduces footprint and improves AWT performance on Solaris and Linux
- improved text rendering performance and many enhancements for international text
- support for CUPS printers on Solaris and Linux
- improved desktop integration for Java Web Start
- performance, ease-of-use, and stability improvements for Java Sound
- hundreds of other ease-of-use enhancements and bug fixes
I've heard through the proverbial grapevine that there have already been hundreds of thousands of downloads of the J2SE 1.5 SDK. That's a pretty big number, but we all know there are millions of Java developers. So if you do the math (don't forget to carry the one), you may come to the conclusion that there are still a number of developers who have not yet downloaded 1.5-beta!!
You! Yes, you behind the bikesheds! Run, don't walk, to java.sun.com and download the 1.5-beta SDK. Play with it. Love it. Be it. Try out the new language features (don't forget to use "-source 1.5"). Hammer on the new APIs. Make sure your existing apps are running better on 1.5... If you find a boo-boo, now is the time to report it! If you start testing your apps now on 1.5, there's a much better chance we can resolve your issues in the 1.5-beta2 or final release.
Don't Bring Me Down, Bruce
The year is 2004. The Java platform is maturing into a robust core of goodness. So why are rich client developers writing such low-level code? ... Tearing their hair out trying to connect a JDBC backend to a simple JTable? ... Agonizing over the best way to add an animation or video to a JPanel? ... Crying uncle when all they want to do is customize their L&F with some snazzy graphics techniques?
It's time we all move up in the world. I'm talking about higher level libraries for rich client developers. The reason developers are struggling is entirely our (meaning Sun's, and the community's) fault. Our bad. Fear not, however. We've been working on some exciting new projects that should make it much easier for Java developers to quickly whip up rich, media-friendly, networked, easily-deployable applications.
One part of this effort is called JDNC. Amy wrote a nice article last summer about this project. It's come a long way since then, and hopefully developers will be able to start playing around with these technologies in the not-so-distant future.
I recently came across this well-written article summarizing the author's "concerns" about the current state of rich client development in Java. I feel confident that many of his concerns will be addressed by the aforementioned projects. We'll be looking into ways to get the community involved in this effort, so stay tuned...
I've also blogged in the past about the various media API offerings from Sun. If we do our jobs properly, these libraries should play better together, and the API's should be more seamless. More to come.
In my ears: Frank Black, "Teenager of the Year"
In my eyes: Michael Chabon, "The Amazing Adventures of Kavalier and Clay"
In my mouth: Riiiiiicooooollaaaaaa