Java Phone API Spec
Java Phone API Spec
This product or document is protected by copyright and distributed under licenses restricting its use, copying, distribution, and decompilation. No part of
this product or related documentation may be reproduced in any form by any means without prior written authorization of Sun and its licensors, if any.
Third party software, including font technology, is copyrighted and licensed from Sun suppliers.
Sun, Sun Microsystems, the Sun Logo, JDK, SunXTL, the Duke logo, Java, JavaPhone, and all Java-based marks, are trademarks or registered
trademarks of Sun Microsystems, Inc in the U.S. and other countries.
Federal Acquisitions: Commercial Software--Government Users Subject to Standard License Terms and Conditions.
The OPEN LOOK(R) and Sun TM Graphical User Interfaces were developed by Sun Microsystems, Inc. for its users and licensees. Sun acknowledges
the pioneering efforts of Xerox in researching and developing the concept of visual or graphical user interfaces for the computer industry. Sun holds a
non-exclusive license from Xerox to the Xerox Graphical User Interface, which license also covers Sun’s licensees who implement OPEN LOOK GUIs
and otherwise comply with Sun’s written license agreements.
DOCUMENTATION IS PROVIDED "AS IS" AND ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT,
ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS ARE HELD TO BE LEGALLY INVALID.
Ce produit ou document est protégé par un copyright et distribué avec des licences qui en restreignent l’utilisation, la copie, la distribution, et la
décompilation. Aucune partie de ce produit ou document ne peut être reproduite sous aucune forme, par quelque moyen que ce soit, sans l’autorisation
préalable et écrite de Sun et de ses bailleurs de licence, s’il y en a. Le logiciel détenu par des tiers, et qui comprend la technologie relative aux polices de
caractères, est protégé par un copyright et licencié par des fournisseurs de Sun.
Sun, Sun Microsystems, le logo Sun, JavaPhone(TM), JDK, SunXTL, the logo Duke, JavaPhone, et Java(TM) sont des marques de fabrique ou des
marques déposées de Sun Microsystems, Inc. aux Etats-Unis et dans d’autres pays.
Le interface d’utilisation graphique OPEN LOOK (R) et Sun (TM) a été développée par Sun Microsystems, Inc. pour ses utilisateurs et licenciés. Sun
reconnaît les efforts de pionniers de Xerox pour la recherche et le développement du concept des interfaces d’utilisation visuelle ou graphique pour
l’industrie de l’informatique. Sun détient une licence non exclusive de Xerox sur l’interface d’utilisation graphique Xerox, cette licence couvrant
également les licenciés de Sun qui mettent en place l’interface d’utilisation graphique OPEN LOOK et qui en outre se conforment aux licences écrites de
Sun.
LA DOCUMENTATION EST FOURNIE "EN L’ETAT" ET TOUTES AUTRES CONDITIONS, DÉCLARATIONS ET GARANTIES EXPRESSES
OU TACITES SONT FORMELLEMENT EXCLUES DANS LA MESURE AUTORISÉE PAR LA LOI APPLICABLE, Y COMPRIS NOTAMMENT
TOUTE GARANTIE IMPLICITE RELATIVE À LA QUALITÉ MARCHANDE, À L’APTITUDE À UNE UTILISATION PARTICULIÈRE OU À
L’ABSENCE DE CONTREFAÇON.
For further information on Intellectual Property matters, contact Sun’s Legal Department:
E-Mail: trademarks@[Link]
Phone: 650.960.1300
JavaPhone TM Overview
The JavaPhone API is a vertical extension to the PersonalJava TM platform developed through an open
process by Sun Microsystems in collaboration with other key expert groups in the telecommunications
engineering community. This API, combined with the PersonalJava API, provides the ideal development
and deployment platform for telephony applications and services targeted at wireless communicators and
smart phones, as well as Internet screenphones.
The JavaPhone API extends the PersonalJava platform by adding access to functionality unique to client
telephony devices as follows:
In addition to the core API interfaces that comprise the JavaPhone platform, the specification also
describes the Communication API and the Secure Sockets Layer (SSL) API, which are optional in the
PersonalJava API, but may be required when operating phone terminals in specific environments.
The JavaPhone API can meet the telephony needs of the following users:
Wireless device manufacturers can bring telephony products to market more rapidly by taking advantage
of platform-independent, standard software components. New wireless phones or Internet screenphones
that feature a JavaPhone API implementation can leverage positioning in the marketplace by taking
advantage of an ever increasing number of industry standard compliant applications and services.
Network operators benefit from the ability to deliver value-added business solutions for a diverse array of
Java technology-enabled devices in their networks regardless of the underlying microprocessor or
operating system on the device. This group of telephony users can maintain and grow their competitive
advantage by upgrading and managing their phone services dynamically, allowing subscribers to have
access to new types of services and applications in a transparent fashion. In essence, value-added services
written in the Java programming language offer security, extensibility, and platform independence.
Application developers can quickly develop cost-effective service applications while ensuring portability
across a wide variety of devices. In addition, this group benefits from the ability to utilize a true
object-oriented language that allows them to save time and money by reusing robust software
components.
The JavaPhone API in concert with the PersonalJava platform provides an ideal development environment
for an emerging class of value-added services that can be deployed across a diverse array of Java
technology-enabled devices.
JavaPhone Interfaces
The JavaPhone interfaces were developed by the JavaPhone team in conjunction with other telephony and
mobile computer forums using Sun Microsystems’ open process. Collectively, these interfaces meet the
requirements of wireless and screenphone based devices.
Applications may be designed to take advantage of specific API features in the JavaPhone interfaces to
support a select category of devices. Alternatively, applications can be written to leverage the more
common required packages available on all devices to reach the largest possible installed customer base.
A profile is a collection of one or more Java APIs supported on a Java consumer platform that provide an
ideal development and deployment environment for a specific device type. JavaPhone API requirements
for both wireless and screenphone profiles are described in the following table.
In addition to the JTAPI functionality partitioned into separable packages, a capabilities package serves as
an extension mechanism that supports specific named capabilities. A JTAPI Provider announces to
applications the features included within a specific vendor’s implementation using named capabilities.
For more information on the relationship between the JTAPI Core package and the standard extensions,
refer to the JTAPI 1.2 Overview.
The following specifications describe the interfaces included in the JTAPI Core package that are required
for all JavaPhone devices.
[Link]
[Link]
[Link]
The following specifications describe the interfaces in the JTAPI Call Control package:
[Link]
[Link]
[Link]
The Phone package may be necessary, for example, if the physical components of a phone terminal are
used in an application that manipulates the typical phone functions such as tracking the number of button
entries necessary to record numbers for speed dialing. For more information on the Phone package
architecture, refer to the JTAPI 1.2 Phone Package Overview.
The following specifications describe the interfaces in the JTAPI Phone package:
[Link]
[Link]
[Link]
In the JTAPI mobile package, groups of related features have been placed into an interface to allow
individual implementations to decide whether those particular features will be provided on their platform.
For example, the application developer may test the MobileProvider instance to determine if it is an
instanceof MobileRadio before attempting to offer a user interface that controls the startup state
of the radio hardware.
The following JTAPI Mobile core interfaces are included in the JavaPhone 1.0 Specification.
AddressBook
The AddressBook API provides applications with access contact information. Leveraging the vCard
specification (RFC 2426), the AddressBook API provides storage for and access to business card
information. An application using the AddressBook API can locate and update contact information such
as phone numbers, postal addresses, email addresses, and other information about individuals, groups, and
organizations. In GSM phones, for example, the AddressBook API provides access to name and address
information stored on the SIM card.
The primary design goal of the AddressBook API is to be simple and thin so that it can fit in
resource-limited devices. Because the AddressBook API is an extensible API that leverages a standard
schema, application developers can easily find and use contact information for writing programs. The API
specifies a base storage class for all types of items including contact items, calendar entries, and todo
entries. Schema strings used in querying and storing contact information are those specified in vCard.
(vCard personal data interchange format has been accepted as a standard method to transfer contact
information.)
User Profile
The User Profile API provides an application with information about the current user or owner of the
device. For example, in a GSM phone, the User Profile API provides access to the SIM card information
for the owner which might include the user’s name and other attributes that identify the user.
The current user profile information is returned in the same format as the AddressBook API.
Calendar
The Calendar API provides applications with access to schedule information. Leveraging the iCalendar
specification (RFC 2445), the Calendar API provides storage for and access to schedule information such
as dates and task entries. CalendarEntries provide access to descriptions, dates, and repeat information.
ToDo entries provide for access to notes and items to be done. Scheduling data stored in a device
implemented with the Calendar API is accessible to a user who can easily locate dates and times or make
modifications to this information.
The primary design goal of the Calendar API is to be simple and thin so that it can fit in resource-limited
devices. The API specifies a base storage class for all types of items including calendar entries and todo
entries. Schema strings used in querying and storing contact information are those specified in vCalender.
(vCalendar interchange format has been accepted as a standard way to transfer scheduling information.
Network Datagram
The Network Datagram API provides for transport independent addressing and delivery of messages.
Applications send and receive messages using addresses consisting of service name and service location.
The API allows applications to be developed independently of the physical network or bearer supported
by the device. The physical network or bearer used to deliver the message is selected by the device when
the message is sent. For example, on a wireless phone the GSM short message service (SMS) can be used.
The API allows application developers to know only the addressing and data protocol while hiding the
details of the transport. Therefore, applications do not have to be rewritten to run on different phones or
networks.
The Network Diagram API is capable of addressing and delivering messages on transports (bearers)
common to wireless devices. The following are examples of wireless device messaging:
The API supports one or more applications and transport(s) concurrently in a single VM (Virtual
Machine):
Install
The JavaPhone extension includes an interface to install and remove applications. To support JavaPhone
application development and deployment , the API supports the following installation functions:
Application packaging for development and distribution, including the following components:
Jar files that contain application classes
Unique identification of an application
Identifying the main entry point class for an application
Identifying icons to represent the application in a user interface
Installation mechanisms for installing an application into the environment
Versioning - identifying what version of an application is present
Power Monitor
The Power Monitor API monitors the available power levels of the device and notifies when the device is
changing power states. Using the Power Monitor API, the application can tailor its activities to the
available power. The Power Monitor API allows an application to determine the state of power on the
device. It allows an application to retrieve the current battery level, an estimate of remaining battery life,
and whether an external power source is being used. The API also provides notification when battery
power is running low and a service is about to be terminated as a result.
Power Management
Applications can use the Power Management API to determine the power state of the device. For example,
the ON power state can be identified. The API allows an application to be aware of transitions in the
power states, and allows it to respond to various conditions such as full power, power managed for
efficiency, suspend, and sleep states.
Communication API
The Communication API extension to the PersonalJava platform is used by applications to access serial or
parallel ports on the device. If the device does not have application accessible ports, this API is not
required to be present. For example, if the device has a modem or printer that is directly available to
applications, it would be accessed through the [Link] package.
Devices that have an infrared port should implement the serial emulation of the Infrared Data Association
standard IrCOMM: Serial and Parallel Port Emulation.
The PersonalJava TM platform specification provides the following optional packages and classes as well
as network protocols that may apply to the implementation of the JavaPhone TM API:
Optional packages
Modified packages
Optional classes
Network protocols
Optional Packages
Component Required Optional Comment
If the optional [Link],
[Link] package or the optional SSL
[Link] X Java standard extension are supported, then
[Link] is required, otherwise it is
optional.
[Link]
When the optional [Link] package is
[Link]
X implemented each of the sub-packages
[Link]
must also be supported.
[Link]
When the optional [Link]
[Link] package is implemented
X
[Link] [Link] must
also be supported.
Modified Packages
Component Required Optional Comment
See the PersonalJava specification for details about the modifed
[Link] X
[Link] classes.
The [Link] package is required except for the optional classes
[Link] X
described below.
Optional Classes
Component Required Optional Comment
[Link] This set of classes is optional as a
[Link] group.
[Link]
[Link] When a user-visible file system is
X
[Link] included on a platform
[Link] [Link] and
[Link] [Link]
[Link] must also be supported.
A complete implementation
includes support for
DateFormatZoneData,
LocaleData,
[Link] X LocaleElements classes and at
least one pair of locale specific
classes, e.g.
DateFormatZoneData_en_US
and LocaleElements_en_US
See the PersonalJava specification
[Link] X for details of the modifications to
the [Link] package
Networking Protocols
JavaPhone TM Specification
JavaPhone Specification 1.0
The Install package manages applications and standard
[Link]
extensions present in a Java application environment.
The Network Datagram API allows program to program
[Link] communication by means of sending and receiving
datagrams.
The AddressBook package defines the objects used to access,
[Link] add, delete and update the contact information in a contact
database.
The Calendar package defines objects to access, add, delete
[Link] and update the calendar event information in a Calendar
database.
The Database package defines the objects used to access
[Link]
Addressbook and Calendar information.
The UserProfile package defines objects to get and set the
[Link] current user contact information, which is returned in the
same format as the AddressBook package.
The Power Management package allows an application to
[Link] monitor and respond to changes in the power states of the
system.
The Power Monitor package allows an application to monitor
[Link]
and respond to changes in the power level of the system.
The Java Telephony API (JTAPI) is a portable,
[Link] object-oriented application programming interface for
Java-based computer-telephony applications.
The JTAPI advanced Call Control package provides more
detailed information about the core call model and supplies an
[Link]
extended set of states for the Connection and
TerminalConnection objects.
The JTAPI Call Control Capabilities package provides the
interfaces that inform the an application about which features
[Link] were included in the current JTAPI implementation and
which features are currently valid throughout a call
transaction.
The JTAPI Call Control Events package defines the specific
[Link]
Call Control state transition events.
Class Hierarchy
class [Link]
class [Link] (implements [Link])
class [Link]
class [Link] (implements [Link])
class [Link]
class [Link]
class [Link]
class [Link]
class [Link] (implements [Link])
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
class [Link]
Interface Hierarchy
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link](also extends
[Link])
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link](also extends
[Link])
interface [Link]
interface [Link]
interface [Link]
interface [Link](also extends
[Link])
interface [Link](also extends
[Link])
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link](also extends
[Link])
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link](also extends
[Link])
interface [Link]
interface [Link]
interface [Link]
interface [Link](also extends
[Link])
interface [Link](also extends
[Link])
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link](also extends
[Link])
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link](also extends
[Link])
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link](also extends
[Link])
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link](also extends
[Link])
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link](also extends
[Link])
interface [Link]
interface [Link](also extends
[Link])
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
interface
[Link]
interface [Link]
interface [Link]
interface [Link]
interface [Link]
JavaPhone Specification
Table of Contents
JavaPhone Specification . . . . . . . . . . . . . . . . . 1
JavaPhone TM API Specification . . . . . . . . . . . . . . . 1
JavaPhone TM Overview . . . . . . . . . . . . . . . . . 2
PersonalJava Platform and JavaPhone . . . . . . . . . . . . . 3
JavaPhone Interfaces . . . . . . . . . . . . . . . . . 3
Optional PersonalJava Interfaces . . . . . . . . . . . . . . 4
Security Recommendations for JavaPhone Interfaces . . . . . . . . . . 4
Java TM Telephony API (JTAPI) Core Package . . . . . . . . . . . . 5
JTAPI Package Specifications . . . . . . . . . . . . . . . 5
JTAPI Core Package . . . . . . . . . . . . . . . . 5
JTAPI Call Control Package . . . . . . . . . . . . . . . 6
JTAPI Phone Package . . . . . . . . . . . . . . . . 6
JTAPI Mobile Package . . . . . . . . . . . . . . . . 6
JTAPI Mobile core interfaces . . . . . . . . . . . . . . 7
AddressBook . . . . . . . . . . . . . . . . . . 7
User Profile . . . . . . . . . . . . . . . . . . . 8
Calendar . . . . . . . . . . . . . . . . . . . 8
Network Datagram . . . . . . . . . . . . . . . . . 8
Install . . . . . . . . . . . . . . . . . . . . 9
Power Monitor . . . . . . . . . . . . . . . . . . 9
Power Management . . . . . . . . . . . . . . . . . 10
Communication API . . . . . . . . . . . . . . . . . 10
Secure Sockets Layer (SSL) . . . . . . . . . . . . . . . 10
JavaPhone Platform Specification . . . . . . . . . . . . . . . 11
TM
PersonalJava Optional Packages . . . . . . . . . . . . . . 11
Optional Packages . . . . . . . . . . . . . . . . . 11
Modified Packages . . . . . . . . . . . . . . . . . 12
Optional Classes . . . . . . . . . . . . . . . . . . 12
Networking Protocols . . . . . . . . . . . . . . . . . 12
Overview . . . . . . . . . . . . . . . . . . . . 14
TM
JavaPhone Specification . . . . . . . . . . . . . . . 14
Class Hierarchy . . . . . . . . . . . . . . . . . . . 16
Hierarchy For All Packages . . . . . . . . . . . . . . . 16
Class Hierarchy . . . . . . . . . . . . . . . . . . 16
Interface Hierarchy . . . . . . . . . . . . . . . . . 17