The Blu-Ray versus HD-DVD war is spilling over into nearby fields, including Java, thanks to the fact that Blu-Ray uses Java to provide its interactive features. Consider the following quote from an article from EE Times, in which HP’s general manager for personal storage says HP compared Blu-Ray Java to the Microsoft-created iHD interactive standard in the HD-DVD and “found Java in Blu-ray was much more mature and robust with complete test suites. In contrast, we found many holes in Microsoft’s proprietary iHD.”
Then tell me how it is that last week, HP called for Blu-Ray to adopt iHD?
If you want to stop here for a quick recap, a good source for information on the Java spec for Blu-Ray, BD-J, is the JavaOne 2005 session “Java Technology Goes to the Movies: Java Technology in Next-
Generation Optical Disc Formats”, which is available from JavaOne Online. BD-J is a J2ME Personal Basis Profile with API’s borrowed from interactive television (DVB with the broadcast stuff taken out), HAVI (for a consumer electronics oriented GUI), plus the previously-moribund JavaTV API (for the concept of an Xlet) and Java Media Framework (for reasons unstated… perhaps pity). The resulting platform claims to offer deep programmability, including layering of graphics, video, and background, synchronization with video (either in a tight frame-accurate style or a looser callback scheme), and more.
Details on iHD have been somewhat harder to come by. I did find a general description in the article HP requests feature additions to Blu-ray disc technology, in which Microsoft’s director of technology strategy for Windows Digital Media says the idea behind iHD is to “use Web-like tools such as XML, and that would make it very easy for a creative person that did not need to be a software programmer, to be able to create interactivity menus and applications for optical media,” adding “the vast majority of studios prefer iHD over BDJ, because it’s easier to author, you can have your creative people involved, it’s cheaper, [and] it’s got all these benefits.”
OK, seriously, we’re still comparing markup and executable languages? This is like saying that HTML is better than C because it’s easier.
Oh, I know, context: easier for the content developer. No kidding. As the JavaOne session says: “Most content will probably be written with high-level tools” and that “opportunities exist in tool building”. Clearly, the expectation is that simple markup environments can and will be written on top of BD-J, quite possibly including iHD, but the fact that the standard is the executable allows these environments to compete, and doesn’t close the door on functionality advancements. The interactivity can get better as developers discover new ways to exploit BD-J. Plus, nobody’s writing “bonus” games for the kids with a markup language, at least not one that will be interesting for more than two minutes.
The big picture is that this remains a consumer electronics versus PC’s battle and the consumer electronics side is winning. Forrester says Blu-Ray will win, and Warner Bros adopted Blu-Ray and joined its board last week. Blu-ray certainly has immense advantages, not the least of which is the fact that it will be on the PlayStation 3, set to launch early next year. The PS3 makes the scenario more interesting by including internet connectivity as standard equipment — internet connectivity is part of the BD-J spec, and if Sony’s implementation chooses to implement it, then there are tremendous opportunities for fundamentally new kinds of content, with material available and updated even after the disc is stamped and sold, to say nothing of e-commerce plays (every movie can have its own online store, accessed from the disc).
By the way, if you’ve heard this from me before, it’s because I was advocating using Java as a home theater technology a few O’Reilly Conferences ago, in a session called Why Mac Users Hate Java.
One thing that bugs me is that I haven’t found how to get started with BD-J. Consumer electronics devices aren’t the most open thing in the world to begin with, so maybe it’s not surprising that you can’t just get an SDK from www.blu-ray.com and start coding with your J2ME environment of choice, emulating the player until real hardware and burners are generally available. It’s possible this is a pay-to-play scenario, to keep the platform limited to the expected players (movie studios and other content developers); I simply don’t know. Still, it would be tremendously interesting to see how far you could take Blu-ray as a general-purpose J2ME application delivery environment, something that some talkbacks to one of my java.net blogs called for.
By the way, would anyone be interested in a series of blogs in which I try to get the needed tools and develop BD-J software?