cation is a server system
controlling a network of phones, faxes, and modems. JTAPI is built in such a way that it accommodates either application.)
It's important to recognize that JavaSoft did not solely author JTAPI. According to Vicki Shipkowitz, senior product marketing manager for Java media and communications technologies, JTAPI was constructed with the aid of organizations such as Lucent, Nortel, Intel, Novell, and IBM. The goal was to create a TAPI that was simultaneously extensible and uncomplicated. This involved walking a narrow line. On the one hand, JavaSoft wanted enough functionality in the API so that it sufficiently modeled those applications it is supposed to support. On the other hand, too much completeness leads to complexity; and with too much complexity, the result is an API that no one is interested in using.
JTAPI's architecture is that of a collection of extension APIs orbiting around a core package. The core package defines the basic JTAPI
call model
(the abstract collect
ion of objects that model a telephone call). The core also supplies foundational functions: placing calls, answering calls, dropping calls, and so forth.
The package extensions add the objects and behaviors needed to either implement specific applications or add specific capabilities. There are six extension packages in version 1.1:
- Call control, which adds such capabilities as putting a call on hold, transferring a call, and conferencing.
- Call center, which provides routing and automated call distribution as used in large call centers.
- Media, which provides access to media streams, such as DTMF and non-DTMF detection.
- Phone, which provides control of the actual phone hardware.
- Private data, which allows the application to communicate directly with the phone-switch hardware.
- Capabilities, which is really a query API that lets an application determine the capabilities of a given system.
JTAPI's call model is the edifice on which reside all the extension pack
ages. The call model is a collection of abstract objects that are defined as interfaces in the core package itself. Key objects within the model are the provider (which provides the actual telephony service) and the call object. Associated with each call object are zero or more connection objects, each of which acts as a link between a call object and an address object (e.g., a phone number). Lastly, the telephone object models the actual phone hardware, and the telephone connection object models the relationship between a call and a physical endpoint.
The behavior of a telephone system is decidedly asynchronous. Calls originate and arrive at unanticipated times. It is therefore important that the application have some means of dealing with unpredictable events.
To cope with this asynchrony, JTAPI defines observer objects. In function, they are not unlike the listeners of the Abstract Window Toolkit (AWT). If you're familiar with Windows programming, you might recognize an observer as being a kind
of callback. An application can associate an observer to an object (e.g., a call object), and the observer will be called whenever an event takes place that causes the observed object to change state. In this way, the "upper-level" application can be informed of events from below -- where the control of the actual phone hardware is taking place.
JTAPI is meant to address a wide range of telephony applications and accomplishes this thanks largely to its object-oriented roots. The architecture of a core package supporting various extension packages lets developers extend the support in whatever direction their application demands, without breaking the "spirit" of JTAPI.
However, what we call telephony applications is a rapidly expanding sphere. Bill Gogesch, a technical staff member at JavaSoft, admits that JTAPI probably doesn't have all that is required (or, perhaps, has more than is required) to support, for example, mobile phones. JavaSoft recognizes that mobile telephony is a unique enough app
lication that it would be best served by its own API. For this reason, you can expect to see a version of the TAPI for mobile phones that will complement JTAPI in the near future.