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.
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"):
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.
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:
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 java.net 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 java.net 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.