Skip to main content

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.

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 cruise control build snapshot.

Android builds

The Android OS already includes the JAIN-SIP stack internally and the classnames collide, along with some other issues which require renaming the package names. You can download the android builds from the following links:

Javadoc for Android
All-in-one jar for Android

This project includes an extensive test suite that is run when ever a change is made to the CVS 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"):

  • See Stability testing results.

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

    • Websocket transports were added - both WS and WSS to connect with WebRTC SIP phones (by Vladimir Ralev)
    • TCP and TLS implementation on top of NIO allows JSIP to scale and handle many thousands of concurrent connections efficiently (by Vladimir Ralev)
    • 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 ( Redhat ).
    • SCTP support (experimental). Many thanks to Jeroen van Bemmel for adding this support.
    • HA support ( see mobicents project ) described here :

    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!!
    SIP Communicator: A very cool multiprotocol communicator.

    The built-in Google Android SIP stack
    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

    Please 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 distribuiton.
    Your contributions will be acknowledged individually in the code (as a comment) and in the acknowledgement 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.

    YourKit is kindly supporting open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit's leading software products: YourKit Java Profiler and YourKit .NET Profiler.

    Please Confirm