|
White Paper
Introduction
The consumer telecommunications market has recently gone through a series of changes that have a significant impact on the industry and the way different players are gearing towards the service driven network era. On one hand, the Internet has been so pervasive that new types of terminals now include access to the World Wide Web as a standard feature, and traditional content providers are being compelled to reach out to this increasingly important market.
On the other hand, network operators are facing increased competition, high churn rates and lower return on investment, as they increase the pace of investments to upgrade their network infrastructure. In order to boost customer loyalty, build brand recognition, and increase revenue, network operators are seeking efficient ways to deliver new types of dynamic information services and value added applications.
Finally, device manufacturers are responding to these market dynamics by creating new categories of phone terminals, shortening development cycles, adding new functionality, and improving quality and usability.
JavaTM technology is particularly well suited to answer these needs, providing a robust platform that encourages application code reuse, while ensuring the safe delivery of dynamic information services on a variety of phone terminals, independent of hardware and operating system constraints. The JavaPhoneTM API specification has been developed by Sun Microsystems and a number of leaders in the telecommunications industry to define a set of Java technology based interfaces that provides content providers, network operators, and device manufacturers, with a robust and flexible platform targeted at wireless smartphones and Internet screenphones.
This document is intended to familiarize the reader with the JavaPhone API environment, its design goals and benefits. The JavaPhone API specification is available for public review on the World Wide Web at http://java.sun.com/products/javaphone/.
Overview
Emerging Telephony Device Markets
The World Wide Web has become a pervasive channel for disseminating information and distributing products and services. Consumer electronics companies are racing to create a new class of low-cost consumer devices designed to make getting online even simpler, less expensive, and more routine.
Telephony devices that are designed to support Internet connectivity and act as databases for storing personal management information include Internet screenphones and wireless smartphones.
It is the simplicity and familiarity of the telephone platform that makes the screenphone or smartphone easier for consumers to understand and use than other Internet appliances. Digital handsets accounted for 85% of total mobile phone sales in 19981, and analysts predict that data traffic (data and applications) will represent one third of total traffic by the end of 2007 versus 3% in 19982.
Internet Screenphones
A screenphone is an intelligent telephone with a screen and a small optional keyboard that offers Internet access and custom services through a phone line at the touch of a button. This device is designed so users can quickly access the Internet and transact business online. The device is targeted at the business and home consumer who needs to access information on the Web as well as store, retrieve, or send specific data using email or a phone number to connect to an address. The market for Internet screenphones is estimated to be 9.5 million units and $2.2 billion in revenue by 20023.
Wireless Smartphones
A smartphone is an all-in-one mobile communicator providing email, fax, paging, and Internet access. It typically includes a calendar, address book, notepad, and PC synchronization capabilities.
Using a small screen located on the device, users can access specific information services, to do lists, phone numbers, or schedules on demand. Analysts such as IDC and In-Stat predict that there will be nearly 400 million subscribers worldwide equipped with digital cellular phones in 2002.
JavaPhone API Design Goals
The JavaPhone API is a vertical extension to the Java platform developed through an open process between Sun Microsystems and key leaders in the telecommunications industry. Combined with the PersonalJavaTM or EmbeddedJavaTM application environment, the JavaPhone API provides an environment of choice that enables the rapid development of value added applications and the safe delivery of dynamic information services on telephony devices.
The API has been designed to provide access to functionality unique to client telephony devices and supports direct telephony control, address book and calendar information, user profile access, datagram messaging, power monitoring, and application installation.
The JavaPhone API assists device manufacturers in the rapid deployment of telephony products to market by using prebuilt components on a stable deployment platform. The API also broadens the market for content providers by providing portability across a wide number of platforms. As a result, customers can choose from a variety of dynamic services supplied by many different manufacturers.
The JavaPhone API extends the PersonalJava platform by adding access to functionality unique to client telephony such as:
- Direct telephony control (JTAPI Core)
- Datagram messaging (Network Datagram API)
- Access to address book information (AddressBook API)
- Access to calendar information (Calendar API)
- Access to user information (User Profile API)
- Power Management (Power Management, Power Monitor APIs)
- Application installation mechanisms (Installation API)
Features and Benefits
The JavaPhone API extends the strengths of the PersonalJava platform by providing functionality unique to telephony devices. The PersonalJava application environment was introduced to provide a standard, platform-independent environment that reduces the development costs and time to market for applications and applets running on multiple consumer device platforms. Furthermore, because the Java Development Kit (JDKTM) is used as the development environment for Java technology-enabled devices ranging from smart cards to servers, the developer can leverage his or her experience to create total solutions.
Unlike desktop systems, consumer devices use different user interface technologies, have significantly smaller memories and screen sizes, use embedded processors, and have tight constraints on power consumption, user response time, and physical space. Consumer devices must run independently in an environment without system administration functions available. For this reason, the device cannot fail.
The Java platform has several features that make it ideally suited for these devices. Dynamic linking and loading enables remote updates and patching of software. Code storage space is minimized, since Java programming language bytecodes are more compact than native machine code. The Java programming language is object-oriented, allowing code to be modular and multi-purpose, eliminating the need for all application code to be resident on a device at all times.
Platform independence
One of the most important characteristics of Java technology is the fact that it provides a platform independent application environment from which device manufacturers, content developers and network operators can benefit.
This allows device manufacturers to bring new models to market in a faster and more cost efficient manner, since they can leverage previous development efforts while minimizing porting efforts to new hardware platforms.
As application developers and content providers move from in-house custom software development to commercial off-the-shelf software modules for common functions, they now have more time to focus on creating value added, differentiating services and applications.
Network operators benefit from the ability to deliver their value-added services to a diverse array of Java technology-enabled devices in their networks, regardless of the underlying microprocessor or operating system on those devices. Using Java technology's superior object-oriented development model, network operators can leverage advanced digital networks, differentiate product offerings, sustain brand loyalty, increase airtime usage, and retain subscribers.
Security
Another strong advantage of the Java application environment is the excellent level of security it provides. Strong security is achieved through a two-pronged approach based on the Java technology-based "sandbox" model as well as digital signatures. The Java application environment provides a "sandbox" or safe virtual program area in which an applet can execute safely without any risk to the host system. Digital signatures provide a simple and robust infrastructure to control the deployment of applets with extended capabilities. In addition, fine-grained security will be available in the near future, providing network operators with an even higher degree of control on what type of services are being deployed on their network.
Dynamic upgrades
Device obsolescence is one of the biggest problems network operators and their subscribers are facing today. Therefore, the capability to dynamically upgrade the software capabilities in a wireless device bears extremely important financial, technical and operational benefits for network operators. This enables them to 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.
JavaPhone API User Scenarios
By integrating various telephony applications, a single device can be a cost-effective alternative to multiple devices (phone, computer, and a fax machine, for example). Implementation of the JavaPhone API is demonstrated in the following customer scenarios. The specific JavaPhone API packages supported are listed after each scenario. Further information about each JavaPhone API package is located in Section 2 of this White Paper.
JavaPhone Technology in the Home
Kim starts the day by brewing the coffee and uses her Internet screenphone to see if she has received any messages. She has received several. Her auto mechanic left her a message, indicating that her car won't be ready until later in the afternoon, and requires approximately $800 in repairs. He also asks that she call back at noon to see if her car is ready.
With a click of a button, Kim stores his number in her phone's built-in address book and adds a reminder to the built-in scheduler. She uses a secure connection and transfers funds from her savings account to her checking account to cover the car repair.
Another $800 for car repairs? Kim needs to replace her car. She accesses the classified section of her online newspaper, where she hopes to find a reliable replacement. She copies a few listings to the phone's built-in memo pad, and accesses Edmund's Web site, where she gathers information from their Used Car section.
Kim checks her other messages: one is from a friend who wants to get together and do something that evening. Kim accesses a local cinema's Web site to see what is playing, then checks out the reviews. One movie sounds interesting, but the critic said the wait to get into the theater was longer than the movie itself. Kim uses a secure connection and purchases the tickets in advance. She calls her friend to let her know.
The scheduler in her screenphone reminds her to call a cab to get to work. She clicks on the cab company's number, which her screenphone automatically dials. Before Kim leaves home, she uses the infrared port to synchronize the information in her address book and scheduler on her Internet screenphone with that on her cellular smartphone, which she drops into her bag as she heads out the door.
TABLE 1 JavaPhone API Packages in the Home
| · JTAPI | · Calendar | · Communication API |
| · AddressBook | ·SSL | |
JavaPhone Technology in the Workplace
Kim arrives at work and checks her Internet screenphone for messages. She receives a customer complaint at her desk. Using caller ID, she maps the caller to a Web page that shows the client's history and pops up a mail view that shows recent messages to and from that client.
With the information she has at her fingertips, Kim checks the corporate help desk trouble reports for the problem and for a possible solution. She faxes the necessary information to the client and adds to the shared corporate "To Do List", an entry for a support representative to call on the client and follow up on the problem.
TABLE 2 JavaPhone API Packages in the Workplace
| · JTAPI | · Communication API | · Calendar |
JavaPhone Technology on the Business Trip
John is attending a business convention in San Francisco and has decided to stay over the weekend to take advantage of the local attractions. During a break at the convention, he uses his wireless smartphone and connects to the travel service offered by his network operator.
He selects an online travel guide that includes typical information such as lodging, restaurants, museums, and exhibitions. As he prepares to download it, a warning message informs him that his battery level is too low to perform the task. John replaces the battery and resumes the download operation.
After browsing the information provided in the online guide, he decides to spend the weekend in the Napa Valley. He selects a hotel located in Calistoga and presses the speed dial key on his phone to automatically dial the number displayed on screen. Once he is done with the hotel, the travel guide application asks him whether he wants to book a rental car. Upon confirmation, the application automatically dials the phone number of his favorite car rental company.
Finally, John sends a short text message to his administrative assistant to ask her to reschedule his meetings on Monday morning. Later on, he receives a message back from her with a calendar confirming that she has entered the changes on his electronic calendar in the office. The message also prompts him to accept a calendar update, which he accepts in order to synchronize his local calendar on the phone.
TABLE 3 JavaPhone API Packages on the Business Trip
| · JTAPI Core | · AddressBook | · Calendar |
| · Power Monitoring | · User Profile | |
| · JTAPI Mobile | · Datagram | |
JavaPhone API Environment
The JavaPhone API is primarily directed at an audience of content providers who are producing applications and dynamic information services targeted at a variety of telephony devices, and at the network operators who provide their subscribers access to these services. Much of the functionality that is required by content providers and network operators is provided by the Java platform on the phone terminal. Typically, the PersonalJava application environment provides the Java platform for the telephony devices. The JavaPhone API defines the functions of the phone terminal that are not already addressed by the main application environment.
RTOS Layer and Application Environment
The JavaPhone API and application environment are typically implemented on top of a real time operating system (RTOS). The RTOS provides the base for real-time threading, memory management and device drivers. It offers the network support, file system support if any, and low level power management functions, and defines the environment for any device drivers that are needed to control platform hardware. If any new capabilities are added to the hardware or RTOS layers, they can be wrapped in Java technology-based interfaces to be made available.

FIGURE 1 Typical Software Stack on a Telephony Device
The base for the JavaPhone API extensions is the Java platform, typically based on the PersonalJava or EmbeddedJava specifications, implemented on top of the available real-time operating system, which provides application programmers with a stable and robust foundation that allow them to be unaware of most application environment, RTOS, or hardware details. This layer provides the Virtual Machine and Java technology-based classes to support a user interface toolkit, input and output, networking, internationalization, security, and class loading.
The choice of Java application environment will be dictated by the memory limitations imposed by the phone terminal design, as well as by the capability to download applications and support standard peripherals. The PersonalJava application environment is designed for devices that are often executing applets from a network. To enable this "general purpose" functionality, a core required set of APIs or libraries must be present on every PersonalJava technology-enabled device.
The EmbeddedJava application environment is targeted at dedicated-function embedded devices which may be network-connected or stand-alone. Telephony devices based on the EmbeddedJava application environment will be performing a defined set of software tasks which are well-known at product conception. Only the class libraries that are needed to support this set of software tasks are included on the device. Because of this, every EmbeddedJava implementation may be different since there is no concept of a core required set of API's. The advantage of this is that the EmbeddedJava implementation often occupies a smaller memory footprint than the PersonalJava application environment. Additional information on these two application environments can be found at http://java.sun.com/products/personaljava/ and http://java.sun.com/products/embeddedjava/.
JavaPhone API Profiles
The JavaPhone API is a programming interface that provides content developers and network operators a means to access functionality unique to phone terminals, including direct telephony control, datagram messaging, address book and calendar information, user profile access, power monitoring, and application installation.
The JavaPhone extensions can support several different kinds of applications that can either be built into a phone or can be dynamically downloaded. The interfaces defined in the JavaPhone API enable applications to smoothly integrate functions and data that exist in the phone and in the network.
Devices that implement the JavaPhone API range from high-end cellular smartphones with large displays and the ability to locally store selected data, to intelligent Internet screenphones. The common elements are a small memory footprint, low resolution or small size displays, alternate input methods, and varied network connectivity options.
The JavaPhone API defines two sets of overlapping APIs and libraries corresponding to these different phone terminals: a wireless smartphone profile, and an Internet screenphone profile.
The Internet screenphone profile defined through the JavaPhone API includes a basic set of extensions commonly found in such devices as displayed in Figure 1. These include mandatory functionality defining direct telephony control, address book, and user profile access. This profile also defines optional functions such as application installation, encryption and serial port support that may be required in order to install/update local application and support peripherals such as a smart card reader, IR port, printer, scanner, or fax.

FIGURE 2 Internet Screenphone Profile
In contrast, a wireless smartphone utilizes a slightly different set of JavaPhone API packages as displayed in Figure 4. Essentially, this profile includes some additional mandatory functionality, such as datagram messaging, calendar access, power monitoring, and mobile telephony, while reducing the scope of core telephony interfaces to a minimum. The optional functions supported in this profile are similar to those defined in the Internet screenphone profile.

FIGURE 3 Wireless Profile
JavaPhone API Components
Address Book
The AddressBook package defines the objects used to access, add, delete and update the contact information in a contact database. An application using the AddressBook package can locate and update contact information such as phone numbers, postal addresses, email addresses, and other information about individuals, groups, and organizations. The AddressBook package specifies a base storage class for all types of items including contact items, calendar entries, and to do 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 package defines objects to get and set the current user contact information, which is returned in the same format as the AddressBook package.
JTAPI Core
Java Telephony API (JTAPI) is designed to fit a variety of telephony application configurations using a core package that defines the basic call model and a variety of extensions (optional packages) that build on the basic foundation classes. Some of these extensions are also included in the JavaPhone API.
In addition to the JTAPI functionality partitioned into separable packages, a capabilities package that serves as an extension mechanism that supports specifically properties named capabilities. A JTAPI Provider announces to applications the features that are included in a specific vendor's implementation using the capabilities named in the extension.
JTAPI Mobile
The core JTAPI interfaces are designed to support capability interfaces that declare the type of services an application developer can rely on in the platform. However, the space constraints of a mobile telephony device cannot afford a large degree of overhead to simply designate whether or not a feature is supported on the device.
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 see if it is an instance of MobileRadio before attempting to offer a user interface that controls the start-up state of the radio hardware.
Calendar Information
The Calendar package defines objects to access, add, delete and update the calendar event information in a Calendar database. The Calendar package provides storage for and access to schedule information such as dates and task entries. Scheduling data stored in a device implemented with the Calendar package is accessible to a user who can easily locate dates and times or make modifications to this information.
Datagram Messaging
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 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 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 Datagram API is capable of addressing and delivering messages on transports (bearers) common to wireless devices. It can also support one or more applications and transport(s) concurrently in a single VM.
Power Management
The Power Management package allows an application to monitor and respond to changes in the power states of the system. For example, the ON power state can be identified, and an application can respond to various conditions such as full power, power managed for efficiency, suspend, and sleep states.
Power Monitoring
This package allows an application to monitor and respond to changes in the power level of the system. An application is able to retrieve the current battery level, an estimate of remaining battery life, and whether an external power source is being used. This package also enables an application to be notified when the battery power is running low and a service is about to be terminated.
Installation
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
Serial Communications
Serial communications includes the Communication API and the Secure Sockets Layer (SSL) API. The Communication API 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 javax.comm package. The SSL package is an optional component used by applications to provide secure communication over TCP/IP sockets.
Summary
The JavaPhone API leverages the benefits and momentum of Java technology while providing functionality unique to telephony devices. Key benefits of the JavaPhone API environment include:
- Portability across platforms: Write Once, Run Anywhere (operating system platform independence)
- Faster time to market
- Lower development costs (ease of code development and re-use, ease of remote support and upgrades)
- Security (information can be protected, individual capabilities can be granted to applications)
- Better code quality (enabled by Java's object orientation and individual security features)
- Increased available market for developers (same applet/applications span a larger number of users; consumer device users can use many existing Java applets and applications).
The power and flexibility of the JavaPhone API make it the platform of choice for developing applications and deploying dynamic information services on Internet screenphones or wireless smartphones.
1 Dataquest, February, 19992 Ovum, 1998
3 IDC, April 1998
|