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.
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
Performance and Stability
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
You can contribute to this project by :
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.
- 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
- Contributing code snippets and examples to be included
with the distribution.
- Contributing test cases to be included in the distribuiton.
Note that all contributions to the gov/nist hierarchy are in the public
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.