Java SIP Client Development

The Java SIP library is a compact but feature rich, mature SIP client, developed by Mizutech with special care for reliability, flexibility, interoperability and backward API compatibility. 
Initial versions were focusing on applet use-case (our old applet based browser webphone), then lately (since 2014) the project turned to be a general purpose Java SIP client library.
The library is under continuous development with new versions released almost every week. The webpage is updated less frequently (only major new versions are published) but our customers always get the latest stable version. We provide long-term support and we have ambitious plans regarding the future of the library.
Major changes for the JVoIP library are listed in the change log below.

JVOIP VERSION HISTORY

   Latest stable release:

For new customers we always send the latest stable version which usually contains more improvements above the last published demo release. Internally we release a new stable version every month, however the downloadable demo on this website is updated only around once per year.

JVoIP 7.0 - Thursday, November 29, 2018

  • new: group chat
  • new: offline messaging
  • new: auto switch codec for conference
  • new: capability to change audio format during calls
  • new: advanced dial plan rules (dial plan)
  • new: handle system environment variables for paths
  • improved: main status reports
  • improved: local character set handling
  • improved: via rport handling
  • improved: conference mixer
  • improved: presence
  • improved: best codec selection
  • improved: codec change on reinvite
  • improved: dynamic payload handling
  • improved: prioritize codec which is already in use by other ep
  • improved: conference from wideband call
  • improved: audio queue teardown
  • improved: cisco CUCM compatibility
  • improved: mediaench
  • improved: notification handling
  • improved: CHATREPORT (with better offline queue handling)
  • improved: route and path handling
  • improved: sync voice recording for call legs
  • improved: best local IP autodetect
  • improved: dns lookups
  • fix: re-register if no register endpoint
  • fix: signaling halt after audio error
  • fix: lose connection after a while
  • fix: freeze on audio record device disable or change
  • fix: catch on GetHostString voip.mizu-voip.com
  • fix: direct call to SIP URI
  • fix: speex wideband minimum buffer size
  • fix: winaudio hung on close
  • fix: crash on close
  • fix: numerous other minor bug fixes
 
JVoIP 6.8 - Friday, April 20, 2018

  • new: API_GetNotifications and API_GetNotificationsSync (no need for socket anymore for the notifications)
  • new: IMS/3GP/VOLTE support
  • new: multi-line remote audio streaming
  • new: reports about voice recording (VREC)
  • new: mp3 call record option
  • new: unsubscribe API
  • new: store (rename) previous log file
  • new: call with DTMF as: xxx,yyy (first call xxx, then send yyy as dtmf)
  • new: sample rate convert
  • new: wideband audio streaming (this is for local streams. wideband codec for VoIP calls have been added long time ago)
  • new: PLAYREADY notification for local audio streams
  • new: API for local streaming from buffer
  • new: API_RecFiles
  • new: run without audio devices (for example for streaming from/to file or for recording on a headless Linux)
  • new: wpapiconnectport setting (set before start if needed)
  • new: aectype setting
  • new: singleinstance setting
  • improved: correct (best match) local bind IP detection
  • improved: successive API calls (multiple calls launched at once)
  • improved: presence xml handling
  • improved: wideband optimizations
  • improved: multi-line operations
  • improved: call transfer
  • improved: non-blocking dns requests in separate thread (with timeouts)
  • improved: GetCodecFrameCountTime (to be sent in SDP vs real)
  • improved: silence detect alg skip packets during call hold
  • improved: GUI flickering
  • improved: DeleteOldRecFiles recursive
  • improved: DNS record caching with auto refresh
  • improved: don't send ping packets if not registered
  • improved: chat composing notifications (SIP MESSAGE isComposing)
  • improved: applying settings changes vs caching
  • improved: improved compatibility with third-party devices (accept malformed SIP packets if doesn't affect security)
  • improved: a long list of micro optimizations
  • fix: multiple frames per packet for speex
  • fix: crash with multiple frames per packet in opus ultra wide-band
  • fix: AEC related buffer overrun 
  • fix: ftp missed files upload
  • fix: special or unicode characters in the audio device name
  • fix: CSeq number increase for new REGISTER after old failed
  • fix: various SIP signaling related fixes
  • fix: 14 other minor bug fixes
 
JVoIP 6.6 - Friday, December 8, 2017

  • new: headless mode (can be used also on servers with no GUI or X-Window installed)
  • new: BLF (support for Busy Lamp Field)
  • new: autoprovisioning with opcodes
  • new: notification about unregister
  • new: wideband conference
  • new: in-band DTMF (previously only RFC 2833 and SIP INFO was supported)
  • new: API_GetLineDetails to query endpoint details
  • new: allowsipuriasusername parameter (for URI input normalization)
  • new: AGC for recorded voice and volume normalization for the sides
  • new: auto codec switch from wide-band to narrow-band when low quality network is detected
  • new: registerex API
  • new: OPUS codec pure Java implementation (not need for external library anymore)
  • improved: voicemail (display and asterisk compatibility)
  • improved: presence
  • improved: conference mixer
  • improved: multi-line (simultaneous calls)
  • improved: PLC (packet loss concealment)
  • improved: voice recording quality
  • improved: insert multiple custom SIP headers
  • improved: minimal built-in user interface (not for the headless version)
  • improved: command line parser, config file detection
  • improved: example code and documentation
  • improved: a long list of other minor improvements
  • fix: catch on RefreshDNSCache, catch on HostToIpExFromCache
  • fix: InetConnectionTest (when used with public server)
  • fix: rejectonbusy
  • fix: conference calls with speex
  • fix: wideband codec transcoding bug fixes
  • fix: special characters in chat messages
  • fix: G.729 ptime and framing time fix for voice call recording
  • fix: hold/reload sending 0.0.0.0 ipv4 address with the SDP
  • fix: 44 other minor issues closed (all the pending issues resolved, no any open ticket left)
 
JVoIP 6.4 - Wednesday, June 7, 2017

  • new: presence complete rewrite with support for PUBLISH/SUBSCRIBE/NOTIFY
  • new: unicode for chat
  • new: public universal API accessible via UDP/TCP/HTTP (clear text/XML/JSON or URL parameters)
  • new: ability to receive the media streams from the SDK
  • new: multiple simultaneous registrations (multi-account capability via the “extraregisteraccounts” setting)
  • new: UPNP NAT (better NAT handling behind UPNP capable routers)
  • new: reinvite with private media ip if no incoming audio with stun enabled (handling stun external port mismatch)
  • new: more settings such as allowcallredirect, disablesamecall, checkvolumelevel and usecommdevice
  • new: chat composing notifications and send via API_SendChatIsComposing
  • new: detailed call details (API_GetLastCallDetails)
  • new: recorded voice upload via http post (previously only FTP was available)
  • new: auto call forward on no answer (“callforwardonnoanswer” settings)
  • new: enableaudiostreams setting (set to 0 to disable audio recording and playback)
  • improvements: IM delivery robustness
  • improvements: SIP stack handle warning and diversion headers
  • improvements: stun and turn (earlier public IP discovery, doesn’t use on local LAN’s)
  • improvement: various improvements for SIP and mediaench and more native audio features on Windows OS
  • improvement: local conference RTP mixer
  • improvement: SIP proxy and registrar handling
  • improvement: VoIP logs in a separate low-priority thread
  • improvement: better proxy detection for UDP/TCP/TLS
  • improvement: various improvements for direct encrypted peer to peer media handling
  • fix: HTTP API
  • fix: config and log file management
  • fix: DNS SRV record timeout handling
  • fix: AEC for wideband speex and opus
  • fix: audio device listing
  • fix: reject double outbound calls to same destination
  • fix: more than 70 minor fixes and improvements
 
JVoIP 6.0 - Tuesday, April 11, 2017

  • new: multiple simultaneous registrations (multi-account capability via the “extraregisteraccounts” setting)
  • new: UPNP NAT (better NAT handling behind UPNP capable routers)
  • new: reinvite with private media ip if no incoming audio with stun enabled (handling stun external port mismatch)
  • new: more settings such as allowcallredirect, disablesamecall, checkvolumelevel and usecommdevice
  • new: chat composing notifications and send via API_SendChatIsComposing
  • new: detailed call details (API_GetLastCallDetails)
  • new: recorded voice upload via http post (previously only FTP was available)
  • new: auto call forward on no answer (“callforwardonnoanswer” setting)
  • improvements: sip stack handle warning and diversion headers
  • improvements: stun and turn (earlier public IP discovery, doesn’t use on local LAN’s)
  • improvement: various improvements for mediaench
  • improvement: more native audio features on Windows
  • improvement: local conference mixer
  • improvement: log in a separate low-priority thread
  • improvement: http download/upload/autoprovisioning/ssl issues bypass option
  • improvement: better proxy detection for UDP/TCP/TLS
  • improvement: various improvements for direct encrypted peer to peer media handling
  • fix: DNS SRV record timeout handling
  • fix: AEC for wideband speex and opus
  • fix: audio device list on Windows
  • fix: ptime settings for G.729
  • fix: reject double outbound calls to same destination
  • fix: more than 60 other minor fixes and improvements
 
JVoIP 5.6 - Tuesday, December 20, 2016

  • new: voice activity detection, statistics and user notifications
  • new: public universal API accessible via UDP/TCP/HTTP (clear text/XML/JSON or URL parameters)
  • new: custom skin wizard (internal)
  • new: blacklist
  • new: voice recording http upload
  • improvement: web address in manifest to avoid Java – JavaScript browser popup
  • improvement: various tunneling related changes
  • fix: SRTP
  • fix: tunnel failover to backup server
  • fix: select audio device on Windows and MAC
 
JVoIP 5.4 - Tuesday, March 17, 2015

  • new: peer to peer encrypted media
  • new: presence and contact list management
  • new: more flexible configuration
  • new: desktop mode
  • improvement: SRV DNS failover
 
JVoIP 5.0 - Saturday, February 14, 2015

  • new: stable TLS/SRTP
  • new: native audio layer for windows
  • new: integrated with the new tunneling module
  • new: a new skin template
  • improvements: API
  • fix: conference and other audio related bugs
 
JVoIP 4.8 - Saturday, March 8, 2014

  • new: opus codec
  • new: video module (“as is”)
  • new: ogg/vorbis recording
  • new: java API
  • improvement: aec
  • improvement: reregistration
  • improvement: rtp read threading
  • fix: more than 20 minor bug fixes
 
JVoIP 4.6 - Friday, February 14, 2014

  • new: skins
  • new: recording in gsm format
  • new: failowering based on SRV records
  • new: voicemail
  • new: mediaench (AEC, AGC, denoise) now available also on MAC
  • improvement: more than 40 minor improvements and bug fixes
  • improvement: JS API
  • fix: compatibility with the recent java update
  • fix: via branch bug
  • fix: other minor issues
  • fix: dtmfmode when set to 3 now sends in both formats
 
JVoIP 4.2 - Friday, December 2, 2011

  • new: denoise filter (noise suppression)
  • new: AGC (auto gain control)
  • new: the ability to set custom ringtone
  • new: call forwarding
  • new: silence detection and suppression
  • new: streaming audio file to the other end
  • improvement: AEC module complete rewrite(currently available on windows only)
  • improvement: call recording and sound playback API’s
  • improvement: new encryption for TCP and HTTP tunneling
  • improvement: API_PlaySound can play both local and remote files
  • improvement: HTTP tunneling
  • fix: address incomplete bug with INVITE
  • fix: one way audio in conference
  • fix: some minor issues with codec negotiations
 
JVoIP 4.0 - Wednesday, March 9, 2011

  • new: conferencing
  • improvement: iLBC codec (now it is enabled by default with low priority)
  • improvement: iPhone like skin example and documentation upgrade
 
JVoIP 3.8 - Saturday, February 19, 2011

  • new: voice recording
  • new: aec (automatic echo canceller -beta version)
  • new: automatic transport detection (failovering from UDP encryption -> TCP-tunneling -> HTTP)
  • new: httpsessiontimeout applet parameter
  • new: ringtimeout applet parameter
  • new: waitforunregister option
  • new: option to enable peer to peer calls (direct call to SIP URI)
  • new: various new applet parameters and API function to allow more external control
  • improvement: disabled nagle algorithm for TCP tunneling
  • improvement: auto detect audio card wideband capabilities before the first call is made
  • improvement: packet loss concealment enhancements. Plc is enabled by default
  • improvement: handling of out of order packets
  • improvement: jitter buffer fine-tuning
  • improvement: call transfer
  • improvement: bigger range for the volume control
  • improvement: thread manager
  • improvement: random UDP port for tunneling
  • improvement: autodetect direct server access possibility (while using tunneling_
  • improvement: call duration display in hh:mm:ss format
  • fix: always clear old credentials on new settings and on unregister
  • fix: API_Dtmf, API_Unregister (waitforunregister)
  • fix: iphone skin compatibility with IE, Chrome, Firefox and Safari
  • fix: codec change on reinvite
 
JVoIP 3.6 - Monday, July 5, 2010

  • new: api_playsound
  • new: ackforauthrequest
  • new: 100rel PRACK support
  • new: earlymediasend applet parameter
  • new: logtoconsole applet parameter
  • new: autoaccept applet parameter
  • new: rejectonbusy applet parameter
  • new: sendmac applet parameter
  • new: call timeout setting
  • new: API_GetVersion
  • new: API_Chat
  • new: API_TransferDialog
  • new: iPhone skin
  • improvement: show the sip display-name for incoming calls
  • improvement: receive chat messages as javascript notifications
  • improvement: call to URI (loading the server from URI and not from settings)
  • improvement: discparty parameter in CDR records
  • improvement: transfertype 3 and 4
  • improvement: http tunneling
  • improvement: java script event notifications
  • fix: background color settings in the chat and audio settings form
  • fix: one way audio on some circumstances since version 3.5
  • fix: restored compatibility with java 1.4
  • fix: authentication with empty parameters (for example empty opaque)
 
JVoIP 3.5 - Sunday, June 20, 2010

  • new: http tunneling using browser http send/receive capabilities to automatically bypass http proxies
  • new: plc algorithm (packet loss concealment)
  • new: Spanish translation
  • new: capability request applet parameter and function call
  • new: media timeout option
  • new: srv dns record lookup option
  • improvement: rtcp option
  • fix: final codec offer in ACK caused one way audio problem. Now this can be disabled with the setfinalcodec option.
  • fix: sequence number overrun caused media RTP problems after 21 minute
 
JVoIP 3.4 - Thursday, June 10, 2010

  • new: http tunneling
  • new: deployment toolkit example
  • new: DTMF RFC2833
  • new: Toolkit_with_JS.htm deployment example
  • new: easy encryption for all applet and java function string parameters
  • new: API_SetParameter function
  • new: code frame count setting
  • improvement: js and jnlp now accept jre 1.4
  • improvement: possibility to pass MD5 instead of password
  • fix: API_SendDtmf was not able to send more than one DTMF digit at once
  • fix: STUN sets external IP even on wrong conditions
 
JVoIP 3.2 - Tuesday, April 27, 2010

  • new: accept header
  • new: API_MuteEx function
  • new: jnlp documentation and examples
  • improvement: allow header now list all supported methods
  • improvement: remaining credit display timings
  • improvement: display sent dtmf digits
  • improvement: support for multiple instances
  • fix: sdp body is missing from INFO messages sending DTMF
  • fix: removed static variables to improve multithread stability
 
JVoIP 3.0 - Tuesday, February 9, 2010

  • new: g.729 codec
  • new: wideband and ultra-wideband codec
  • auto convert mono to stereo sound
  • improvement: better audio device handling (try to open all existing device on failure)
  • fix: some SIP messages don’t contain the URI in message header
 
JVoIP 2.6 - Friday, January 15, 2010

  • new: authorization name and display name parameters
  • improvement: new discontransfer applet parameter
  • improvement: OpenSIPS compatibility
  • improvement: new color parameters
  • fix: route/record-route handling in transfer, hold and disconnect
  • fix: cseq sometime is not increased for subsequent register requests
  • fix: ring not stopping on call reject/hangup
  • fix: call transfer sends wrong refer-to URI
  • fix: display registered status when not registered
 
JVoIP 2.4 - Tuesday, November 10, 2009

  • new: more options to enable/disable certain functions
  • improvement: call transfer compatibility
  • improvement: better handle reinvite requests
  • improvement: multiline status management
  • improvement: call hold and call transfer
  • improvement: changed some default GUI settings
  • fix: microphone control change bug
  • fix: some incoming calls was dropped because wrong cseq initialization
 
JVoIP 2.0 - Wednesday, October 28, 2009

  • new: multiple lines (up to 4)
  • new: select audio device
  • new: volume controls
  • improvement: attended transfer
  • improvement: extended authentication options (qop, auth-int)
  • fix: call transfer Refer-to URI brackets
  • fix: auto dial and register
  • fix: handling ACK for 200 OK
 
JVoIP 2.2 - Thursday, August 13, 2009

  • new: call hold option
  • new: default volume applet parameters
  • new: java to javascript API
  • new: javascript to java API
  • new: ringtone for incoming and outgoing calls
  • improvement: ability to enable/disable/set priority for g711 codec’s
  • fix: hold and mute sometimes disabled
  • fix: register endpoint timeout
  • fix: cdr records not sent to javascript
 
JVoIP 1.8 - Monday, June 8, 2009

  • new: mute, transfer, redial
  • improvement: handling record route
  • improvement: rtp packet replay to all request -open NAT
  • fix: via branch and to tag was kept persistent across dialogs
  • fix: save setting not worked since version 1.6
  • fix: redial
  • improvement: opening NAT at call begins by sending UDP packets to possible destinations
  • improvement: jitter buffer fine-tune and configuration possibilities
  • improvement: receiving early media (like ringtones and announcements)
 
JVoIP 1.4 - Friday, May 1, 2009

  • new: quick STUN
  • new: rtport handling
  • new: GSM codec
  • new: outbound proxy
  • new: applet parameters: signalingport, rtpport, register interval
  • fix: registration and call timeouts
  • fix: authentication sent with all request
  • fix: sip stack initialization on Vista
  • fix: sip message parser
  • improvement: jitter buffer
  • improvement: thread priority optimizations
 
JVoIP 1.2 - Wednesday, March 11, 2009

  • new: DTMF with INFO
  • new: speex codec
  • new: IM (chat) with MESSAGE method
  • new: basic presence
  • fix: sip signaling message handler
 
JVoIP 1.0 - Thursday, February 5, 2009

  • initial stable release (RFC 3261 and 2543, PCMU, PCMA)
 
JVoIP 0.8 - Sunday, December 7, 2008

  • beta version with basic SIP call functionality
 

More news and software releases can be found here.
Like our facebook page to get notified about new java sip client releases and VoIP industry news.

JVoIP