Posted by mason
on April 10, 2005 at 8:33 AM PDT
Spend 10 minutes playing with JMF and you'll think you've struck gold... spend 10 days and you'll wish you'd gotten an appraisal before you went and bought the new yacht.
JMF is an incredibly powerful Java interface for displaying and manipulating high quality multi-media content in real time. You can seamlessly integrate full-motion video, high quality sound, even live TV broadcasts into your Java applications, indeed, even into applets! Sounds great? Well it is! Except it's not.
Little known to most people who've tried to put a JMF application together is the fact that it seems to now be completely unsupported by Sun. Admittedly, it's a tough API to code for. Codecs are almost unanimously covered by restrictive copyright and royalty agreements, and those that Sun could round up to implement require a great deal of processing power (not to mention the interface with the low-level audio and video hardware) to fully utilize, something that isn't really a strong point for the Java language. Yet, despite these roadblocks, the initial reference implementation looks remarkably promising... and that's where it all goes down-hill.
The remarkable ease and usability of the initial implementation gets you interested. The implementation, especially for a very limited and specific set of codecs, hardware and other intricacies, works beautifully. As there is no obvious indication that the API is no longer really supported by sun, it's also easy to believe that the next version, whenever it comes out, will have that one extra feature that you are looking for.
Reading the JMF-INTEREST mailing list show how many have fallen into this trap. If you've got a six-month project, and you only need one small addition, or one small bug-fix to JMF to complete it on time, it's fairly easy to assume that by the time the release date comes around, you'll have the next release of JMF and will be ready to go.
The next release is not coming. From the chatter on the list it has become more and more obvious that Sun has quietly abandoned JMF, but isn't willing to let the general population know about it.
Well, that's fine, because Sun's reference implementation of JMF is just that, a reference implementation... somebody out there has to be writing a commercial-quality implementation of the spec, right? Well, ignoring the fact that people are perfectly happy to use the reference implementations of Java APIs in production environments (Tomcat, for example), the answer is no... There are currently no implementations that I (or anyone I've asked, including Senor Google) am aware of.
Why is that? Well, it's just pure speculation on my part, but I'd say that's because Sun's RI does too good a job for you before you discover that it fails. If your software company were to begin the project of writing a full-scale implementation, the first thing you'd do is look at your competition, namely Sun's JMF. You'd see that it looks, from the quick, once-over perspective, to be fully functional. It'd appear to you to be a long and unpleasant road ahead of you to