JSRs: Java Specification Requests
JSR 32: JAINTM SIP API Specification
The following updates have been made to the original request since its submission:
2002.06.21: Spec Lead changed from Dynamicsoft to Sun Microsystems:
2003.06.23: NIST added as a co-lead:
2005.03.16: NIST becomes sole Maintenance Lead.
2005.06.22: BEA added as a co-lead:
Original Java Specification Request (JSR)
Section 1: Identification
NOTE: this information has been updated from this original request.
This JSR is being submitted and endorsed by the following Java Community Process Participants:
Section 2: Request
This JSR is to develop the JavaTM APIs for Integrated Networks (JAIN) Session Initiation Protocol (SIP). It will describe the Java API for call control in the Telecommunications and Internet industry.
2.1 What Is SIP
SIP is an IETF standard protocol for IP-communication, enabling IP-Telephony gateways, client endpoints, PBXs and other communication systems or devices to communicate with each other. SIP mainly addresses the call setup and tear down mechanisms of sessions and is independent of the transmission of media streams between caller and callee.
2.2 Target Java Platform
The JAIN SIP Specification is targeted towards telephony over Internet Protocol (IP) networks.
2.3 Needs of Java Community This Specification Addresses
The JAIN SIP Specification defines an API which allows for the rapid creation and deployment of dynamic telephony services into a Java telephony platform. Telephony applications require costly resources to develop, test, and deploy. A JAIN SIP component can be rapidly developed, tested, and integrated on a variety of platforms with access to numerous tools and utilities. A JAIN cross-platform solution gives the Carriers, Service Providers, and Network Equipment Providers a consistent, open environment to develop and deploy portable telephony services.
2.4 The API Being Defined
The API specified by the JAIN Protocol Expert Group Java Community Process Participants for SIP are based on the RFC 2543 Session Initiation Protocol published by Internet Engineering Task Force. The JAIN SIP API specification abstracts a functional definition into the variant protocol stacks.
The JAIN SIP API will leverage the Java Beans Event model. The protocol stack vendor supplies the JAIN SIP 'provider' interface into the protocol stack. JAIN SIP 'listeners' may readily be rolled onto the platform by an object manager.
Proprietary stack features are hidden behind a Factory (a standard design pattern). Through a combination of common JAIN and JAIN SIP interfaces, a protocol stack provider is obtained to which JAIN SIP listeners can then register.
2.5 Underlying Technologies
The JAIN SIP Specification is based on contributions made by the JAIN JSPA. While JAIN SIP will adapt well to, and interwork with, other protocols such as H.323 and MGCP, its initial purpose is to provide a ubiquitous, standard interface into SIP protocol stacks.
A JAIN SIP application can be written as a program, applet, servlet, or bean. The JAIN SIP API encapsulates the functions of the differing versions of the SIP protocol with a standardized Java interface, so that call-processing and session initiations are readily available within the network.
While no dependency on Java visual tools for constructing JAIN SIP components is assumed, the use of a Java Bean Manager and/or visual Java bean builder can be a significant aid in the development, integration, testing, and deployment of communication service over packet network that employs JAIN SIP components.
2.6 Proposed Package Names
Package names being considered are:
2.7 Possible Platform Dependencies
2.8 Security implications
None. JAIN SIP expects to utilize standard JDK security.
2.9 Internationalization Implications
Because JAIN SIP is based on IETF specifications, the API can be readily adapted to all markets.
2.10 Localization Implications
Since JAIN SIP is based on IETF specifications, the SIP API can be readily adapted to any North American market protocol stacks.
2.11 Risk Assessment
JAIN SIP moves Java into carrier grade service. The telecommunications industry imposes stringent performance and failure requirements on hardware and software platforms. Risks include failure of the Java platform due to poor performance or the inability to fail-over or recover. Performance evaluation and tests based on API architecture will be published with each release of the API. Fail-over will be measured and published based on latency to recover to a like platform and recover state data through JDBC interfaces or Transaction based tools.
Section 3: Contributions
Documents describing JAIN can be found at http://java.sun.com/products/jain/index.html