Last updated November 19, 2015 15:27, by Mudumbai Ranganathan

Whats in here?

This project publishes the Reference Implementation, Technology Compatibility Kit, examples and tools for JAIN-SIP-1.2 (JSR-32 maintenance release) and an SDP library that conforms to the public release of JSR 141 (JAIN-SDP) interfaces. JAIN-SIP is a low level Java API speicification for SIP Signaling. The intended users of this project are SIP developers.

This project publishes a full implementation of the RFC 3261 Specification and as well as suppport for several SIP RFCs and SIP Over WebSockets to be able to use WebSockets as a transport for SIP so that it can interact with WebRTC webapps using SIP as their signalling protocol.

You can embed the JAIN-SIP stack in an applet, HTTP servlet or an application. JAIN-SIP can be used in SIP Proxy Servers (stateful and statelss) and in SIP User Agents. JAIN-SIP has been used to build a Session Border Controller, a few Softphones, a Resource Adapter for the JAVA Service Logic Execution Environment, a SIP Servlet Implementation and in a few Test tools.

The JAIN-SIP Reference implementation is a product of the Advanced Networking Technologies Division at the National Institute of Standards and Technology (NIST) - an agency of the United States Department of Commerce. The JAIN SIP RI, TCK and tools published by this project are in the public domain.

Documentation and Downloads


Click here to get the latest jenkins continous integration build snapshot.

Performance and Stability

This project includes an extensive test suite that is run when ever a change is made to the SVN repository. Visit the download link above to see the tests run by cruise control for each commit. JAIN-SIP has been leak tested under both error conditions and error free operational scenarios. Here are the results of long term stability testing (Pascal Maugeri: "Genaker VoIP API using JAIN-SIP v1.2.85"):

Getting Started

A nice getting started article. There are also various books in which JAIN-SIP is used to teach about SIP signalling, VOIP and IP Telephony. Search in Amazon to find those.

Recent Developments

Vladimir Ralev accepts the role of Maintenance Lead of this project. ( Thanks Vlad! )

JAIN-SIP-2.0 specification work is under way. Please check out and contribute. See JAIN-SIP 2.0 Proposed Draft Spec

Significant performance enhancements. Many thanks to Jean Deruelle (TeleStax, Inc.).

SCTP support (experimental). Many thanks to Jeroen van Bemmel for adding this support.

HA support ( see mobicents project ) described here

Related Projects

Some other active projects that use JAIN-SIP:

SIP-FOR-ME: SIP is not just for you. Its for ME too! A usable subset of this project has been "ported" to j2me.

JAIN-SIP-APPLET-PHONE: Its an Applet! No its a Phone! No its jain-sip-applet-phone!!

Jitsi: A very cool multiprotocol communicator.

Cafe-SIP: An open source project that builds SIP tools and the Jiplet container.

KIT-KAT: A cool testing tool from AT&T that uses JAIN-SIP

The SipXecs open source PBX uses JAIN-SIP.

The Mobicents JAIN-SLEE Container uses JAIN-SIP for its resource adapter.

SIP Servlets implementation on JAIN-SIP ( with extensions )

The openfire XMPP container uses JAIN-SIP for its SIP plugin.

OpenJSip: A simple well documented JAIN-SIP proxy server.

A ESB Connector for SIP that is built on JAIN-SIP

Voicetechnology uses JAIN-SIP in a Hosted PBX product. Deployed in Brazil and Japan to provide Hosted PBX Services.

RFC 3263 Router for JAIN-SIP

A SIP tester that uses JAIN-SIP

High Availability and Failover for JAIN SIP

How to Contribute

You can contribute to this project by :

Using it in your product or project and providing feedback for the next version of JSIP.

Fixing Bugs : export a diff listing from cvs, open an issue for the bug on and attach your suggested solution there. You can discuss your bug on the NIST-SIP mailing list or the JAIN-SIP project user list.

Reporting Bugs : To report a bug provide a small self-contained example that illustrates the bug. You can pattern the test case usually along the lines of examples/simplecallsetup. Having a test case handy speeds up the bug fix. Your test case will be included in the project as a test case. Please enter an issue in the issue tracker so other users can know about the issue and its status. Please attach your test case or bug description with debug log file there.

Contributing Extensions and enhancements (i.e. support for SIP extension RFCs and drafts that are not covered by JAIN-SIP): For this you need to discuss your planned contribution with the project owners and sign up as a developer. Note that there are no content developer roles for this project. Please discuss your planned contribution with the owners before applying for a developer role. You may be requested to submit contributions as patches for some time before developer role is granted.

Contributing code snippets and examples to be included with the distribution.

Contributing test cases to be included in the distribution.

Your contributions will be acknowledged individually in the code (as a comment) and in the Acknowledgements page. Please run the ant runtck target before submitting patches and make sure your bug fix does not break something else. Please follow coding guidelines. If you are using eclipse, codefmt.xml is the style file to use.

Note that all contributions to the gov/nist hierarchy are in the public domain.

You are encouraged to subscribe to the jain-sip user mailing list for project announcements.


Architecture / API design (JAIN-SIP Spec Leads): M. Ranganathan (NIST / Nortel) and Phelim O'Doherty (Oracle) with substantial input from early adopters.

Special mention: Jeroen van Bemmel (Lucent), Sarit Gallanos (Radvision) and Ben Evans (Open Cloud).

Implementation Lead: M. Ranganathan

Implementation Team: Version 1.1: M. Ranganathan and Olivier Deruelle

Version 1.2: M. Ranganathan and Jeroen van Bemmel (review and bug fixes)

TCK : Version 1.1 : Emil Ivov (Louis Pasteur University) and M. Ranganathan (NIST).

Version 1.2 : M. Ranganathan and Jeroen van Bemmel

Cruise Control Builds: Luis Barriero (Redhat Mobicents QA).

Substantial input from Users and Early Adopters is acknowledged.