An Introduction To JavaTV

JavaTV is Sun Microsystems' main API for supporting digital TV platforms. As such, it brings together a number of the common elements that are needed in a digital TV platform. These include the core application model and lifecycle, access to broadcast services (either via JavaTV itself, or via the Java Media Framework) and access to service information. This tutorial will hopefully give you an overview of JavaTV, what it can do and what is missing. It won't look at how JavaTV fits with the other standards for digital TV that exist - that is covered elsewhere on this site.

So what does it include?

The JavaTV API consists of a number of Java packages, all subpackages of javax.tv. These packages are listed in the table below, along with a short description. Don't worry if some of these elements aren't clear for now - we'll examine them later.

The packages that make up the JavaTV APIs.
Package Description
javax.tv.xlet Application lifecycle model and supporting classes
javax.tv.locator Provides the mechanism for URL-like references to broadcast services and broadcast media clips
javax.tv.net Provides a mechanism for accessing IP datagrams contained in a broadcast stream
javax.tv.graphics Adds some support to AWT for TV-specific issues such as video-graphics blending and discovering the root container of the application
javax.tv.util Utility classes for JavaTV applications, including management of timers and timer events
javax.tv.media Adds support for TV-specific functionality to JMF
javax.tv.media.protocol Adds support for broadcast streaming protocols to JMF
javax.tv.service High-level concepts for describing digital TV services. This package is also provides the basic mechanism for querying service information from the broadcast service
javax.tv.service.guide Support for EPG-type applications, including concepts for describing individual events, program schedules and parental rating information
javax.tv.service.navigation Support for navigating services. This includes support for concepts such as lists of favourite services, components within services (i.e. elementary streams) and service types
javax.tv.service.transport Concepts describing the transport mechanism used for a digital TV service, such as transport streams, broadcast networks and bouquets
javax.tv.service.selection Concepts describing how services are presented to the user, and how a new service can be selected. This also describes the concepts for presenting several services at once (e.g. picture-in-picture)

Some fairly important things are missing from this list, but they can be found elsewhere - support for a return channel can be provided via java.net (assuming an always-on connection), while support for control over video or audio content is handled via JMF. There's very few things that are needed which are completely missing - resource management is one of the most noticeable ones. There is a good reason for this, in that JavaTV is designed as a set of high-level APIs that do not impose too many restrictions on the underlying platform. Adding support for resource management would start to dictate at least some elements of that underlying platform,and that is not what JavaTV tries to do. The purpose of JavaTV is to provide a common set of APIs for other standards such as MHP, OCAP or even JSR 242, and so it assumes that these standards will fill any missing elements in a way that is suitable for that particular platform.

An important thing to remember about JavaTV is that unlike MHP or OCAP, it isn't tied to a specific set of standards for digital TV. JavaTV is explicitly neutral about things like the underlying organisation of service information, or even about what service information is needed. Because of this, it works equally well with ATSC solutions for digital TV, or OpenCable solutions, or DVB-based systems. While this may not seem like a big advantage if you're only writing applications for MHP, it gives JavaTV a very strong positive point: applications written to use JavaTV APIs will work on any platform that supports it, rather than being tied to a specific broadcast system. This portability is important as content providers and application developers try to sell their products to network operators in different markets.

Although JavaTV isn't a standard for interactive TV as such, it's included in enough 'real' standards that exploring it here is justified. The following tutorials will cover JavaTV in a little more depth - some of this material is shared with other tracks on this website, so don't be surprised if you occasionally get a sense of deja vu while reading.