Another Unfinished API: javax.comm
Jonathan Simon's weblog on the Sound API struck a nerve. I recently needed to use the javax.comm API to do serial communications with a ham radio. It's great stuff--it's easy to use, and I was writing code to control the radio within an hour or so.
But it also looked like the API hadn't been touched since JDK 1.1.7 or thereabouts. There was no Linux port, no OS X port (yeah, I know, OS X boxes don't do serial, but that's no excuse: there are USB-to-serial adapters). This is a problem on a few levels:
- Will javax.comm be supported in the future? Or, since no one seems to be interested in it, will it just stop working eventually?
- I really care about writing software that works on Linux, not just Windows and Solaris. There's no good ham radio logging software for Linux, and it would be cool if the first decent program was written in Java. There's an RXTX project that provides java.comm for Linux and some other operating systems, but I haven't gotten it to work yet. And, to be honest--it's a downer to tell a potential user "Oh, but if you want the cool features, you've got to install this other stuff."
- Ditto for MacOS X.
- This may be the biggest problem. Sn originally promised support for USB and Firewire. With all the cool Firewire devices out there (digital cameras, both still and movie, audio interfaces of all sorts, you name it), it's almost tragic that we can't write Java code that interfaces with them.
If Sun really wants to see Java applications on the desktop, it needs to finish the tools--all the tools--that people need to write those applications. And that includes javax.comm. I couldn't argue that javax.comm should be a high corporate priority, but there's a solution to that: contribute javax.comm, javax.sound, and any other APIs that have been orphaned over the years to the community. The "write once, run anywhere" story is GREAT, and it REALLY WORKS--but it doesn't count if it's "write once, run anywhere, as long as you don't need to talk to any devices out there."
BTW--at JavaOne, someone told me that the IBM JDK ships with a working javax.comm for Linux. Is jealousy and rivalry incentive for Sun to "do the right thing"? I don't know, but as soon as I finish with the backlog of work that appeared while I was in San Francisco, you can guess who's JVM I'm installing on my Linux boxes.
Finally, if you want to check out my logging application, it's at my ugly ham radio web page. You might not understand what it does if you're into ham radio, and it won't do any of the really cool stuff if you don't have a radio to talk to, but still, check it out. (It will run on Linux and OS X, even without javax.comm installed.) There are still a lot of people who don't realize that Java works for desktop applications.