Globally Executable MHP (GEM) is a DVB specification of a Java based middleware for TV broadcast receivers, IPTV terminals and Blu-ray players. GEM is an ETSI standard (ETSI TS 102 819, ETSI TS 102 728) and an ITU "Recommendation" (ITU-T J.202). GEM defines a set of common functionalities which are independent from the signaling and protocols of a specific transmission network and enables to write interoperable Java applications for TV. GEM is not intended to be directly implemented, but rather forms the basis for broader specifications targeting a particular network infrastructure (e.g. US cable) or class of device (e.g. Blu-ray Disc players). GEM defines profiles for different device classes (targets) – these define the set of available features of GEM for this device class. Currently GEM defines targets (API profiles) for broadcast, packaged media (Blu-Ray) and IPTV. Combinations of these targets can be combined into a hybrid GEM platform, which enables to build devices with multiple network interfaces, such as a combined broadcast/IPTV set-top box.
A few years ago, the DVB project started the development of a Java-based application platform (a set of APIs), called MHP, intended to support software applications running on digital television platforms. Such applications could include Electronic Program Guides (EPG's), interactivity, Video on Demand (VOD), email through your television, etc. The MHP specification defines the download of MHP applications ("xlets") over transmission networks based on other DVB specifications (i.e. over-the-air or terrestrial networks using DVB-T, satellite networks using DVB-S, cable networks using DVB-C). As other specification bodies such as CableLabs and the Blu-ray Disc Association chose to base their own DTV software standards on MHP it became necessary to define a subset of MHP which removes the transmission-related elements of the MHP specification but retains the application API's, thus allowing broad content compatibility across a range of delivery platforms. In January 2010, the DVB project made GEM the primary middleware specification and released a self-contained version of GEM in ETSI TS 102 728, citing MHP only as one of many already-existing implementations.
At the time of writing, the following platforms are defined, which base on/extend GEM:
As all these platforms are based on the common GEM-core, making it possible to write Java applications that will run interoperably on all these systems.