Generic JTAPI and Jcc is a framework to allow for the rapid application of Java telephony specification implementations. It does this by reducing the "service provider" coding requirements by an order of magnitude and by providing common services.
Testimonials
Even if I only report the problems I encounter while using GJTAPI I have to tell you that its a lot of fun to work with GJTAPI. I am the only developer at <organization deleted> working on the implementation right now and I already have a working Core-JTAPI after not too many hours of work. This is amazing!Ulf LichtNews
Licencing
The Generic JTAPI and JCC Project has decided to release its core code and documents under an X11-style licence. Originally a LGPL licence was considered, allowing proprietary service providers to be hooked in while still ensuring that changes to the core remain open. Some team members were concerned that this would limit the ability of certain telephony providers or product developers from making core changes necessary for their particular product. In the PDA/cellphone space this is of particular concern since the current framework is not optimized for space, but rather for scalability.A template of the licence can be found here. Note that each file has copyrights associated with it pertaining to the developers who have worked on that file.
Some service providers may be licenced under a different licence.
History
The Generic JTAPI and JCC started off in 2000 as an internal project within U|Force Inc. (now 8x8 Inc.) to develop a re-usable framework that would reduce the amount of work required to develop new JTAPI implementations. It was based on work done by Tim Panton and WestHawk in the Free JTAPI Project. From the beginning there was talk of 8x8 releasing the framework to the public to help spur on the development of JTAPI implementations. Once JCC support was added to the framework, the project had the ability to provide both JTAPI and JCC support to a telephony system with the development of a single "telephony provider interface" layer. In late 2001 8x8 gave permission to open-source its Generic JTAPI and JCC code.Architecture
The architecture is based on a re-usable middle layer that provides common services for all JTAPI and JCC implementations:As well, the framework/service-provider architecture supports;
- Capabilities tracking
- Call and Connection creation and tracking
- Event delegation to both Observers and Listeners
- Both old and new media services
More documentation can be found in the src/docs directory of the CVS repository, or in SourceForge's Docs or Released Files sections for the project.
- Cascading of layers. So the switch service layer can be plugged in under a remote service provider which is than plugged into the framework allowing for a switch to be controlled remotely. Multiplexor and invertor service providers also allow many other combinations, such as two existing JTAPI implementations being multiplexed together or an existing JTAPI implementation being given a JCC interface.
- Reducing development complexity. JTAPI is a huge API, but writing a GJTAPI service provider involves implementing one interface and sending a handful of events. This order-of-magnitude reduction in complexity is intended to increase the development of new JTAPI implementations and reduce the number of bugs.
Service Providers
Depending on how you count them, there are between 10 and 18 service providers currently available for GJTAPI. This is because the XTAPI bridge supports 4 XTAPI service providers and the Invertor has five modes depending on what version/media support the inverted JTAPI implementation has.
The "connector" service providers allow for the stacking of the "blocks" together in various ways. For instance, A mux SP could be layered on top of a dialogic SP and a invertor SP, where the invertor is layered on a third party JTAPI framework. This would allow the dialogic and third-party telephony spaces to be seen as one to the JTAPI application.
Service Provider
Telephony "Fabric"
Status
Dependencies
Location
Comments
Providers
Emulator
N/A -- visual emulator
Stable
core gjtapi jar file, net.sourceforge.gjtapi.raw.emulator.EmProvider
Useful for testing JTAPI applications.
Dialogic
Dialogic GlobalCall for linux
Alpha
libgcprovidler.so
or
gcprovider.dll
core gjtapi jar file.
net.sourceforge.gjtapi.raw.dialogic.GCProvider
Media not yet supported.
Voice Modem
Currently "Hayes Accura V92 External" and Lucent Venus chipset
Alpha
comm.jar core gjtapi jar file
net.sourceforge.gjtapi.raw.modem.ModemProvider
- It takes too long for the modem to realise that an outgoing call has been answered.
- Only .au files are supported for playing.
- Recorded files are ulaw files and must be converted to another format to be useful.
ilink ilink TeamCall Server
Beta
Available from ilink.de
Media not yet supported.
Free Demo available.
SIP
Session Initiation Protocol
1.0
JainSipApi.jar
nist-sdp-1.0.jar
nist-sip-1.2.jar
Stun4J.jar
jmf.jar
log4j.jarcore gjtapi jar file as of release 1.8,
net.sourceforge.gjtapi.raw.sipprovider.SipProvider
Callcontrol and media supported using sip-communicator and JMF
TAPI3
TAPI 3.0
1.0
Tapi3Provider.dll
core gjtapi jar file as of release 1.8,
net.sourceforge.gjtapi.raw.tapi3.Tapi3Provider
Currently does not support playing or recording audio.
Asterisk
Asterisk iPBX on Linux
Inital specification
Connectors and Bridges
Inverter
"Connector"
Stable
core gjtapi jar file,
Five sub-providers, tuned to the capabilities of the JTAPI implementation being hooked in:
net.sourceforge.gjtapi.raw.invert.InverterProvider
net.sourceforge.gjtapi.raw.invert.NewMediaGenProvider net.sourceforge.gjtapi.raw.invert.NewMediaProvider net.sourceforge.gjtapi.raw.invert.NonMediaProvider net.sourceforge.gjtapi.raw.invert.OldMediaProvider
Allows a JTAPI implementation to be hooked in below GJTAPI. This allows, for instance, a 1.2 JTAPI implementation to be accesses as 1.3 compliant. It also can work with the "Mux" to combine multiple JTAPI implementations into one.
Multiplexor
"Connector"
Stable
core gjtapi jar file,
net.sourceforge.gjtapi.raw.mux.MuxProvider
Allows two or more GJTAPI service providers to be seen as a single service provider to GJTAPI, allowing for their telephony space to be "merged".
CORBA
"Connector"
Stable
core gjtapi jar file,
net.sourceforge.gjtapi.raw.remote.CorbaProvider
Allows a Service Provider to be accessed remotely using CORBA
RMI
"Connector"
Stable
core gjtapi jar file,
net.sourceforge.gjtapi.raw.remote.RemoteProvider
Allows a Service Provider to be accessed remotely using RMI
XTAPI Bridge
"Connector"
Stable
Xtapi jar files and possibly Dlls or shared libraries
core gjtapi jar file,
net.sourceforge.gjtapi.raw.xtapi.XtapiProvider
Supports XTAPI's service providers:
This is in its own jar since XTAPI is GPL code.
- MS TAPI
- Serial Modems
- H.323
- Dialogic D4J
Web Service Bridge
"Connector"
First Release
Jax-Rpc supplementary GjtpaiWebService.jar found in the Gjtapi Web Service Bridge release, ca.deadman.gjtapi.raw.remote.webservices.WebProvider. On a JAXRPC capable server, you must install and configure Gtapi-rpc.war
This two-part bridge allows for a GJTAPI framework to connect to a remote service provider using web services (aka jaxrpc or SOAP)
SourceForge Project Page
Ongoing project information may be found on the project's SourceForge Project Page.Consulting
While GJTAPI is an open-software project, some organizations may be looking for help with implementing a service provider for their needs or in adapting the GJTAPI framework for their environment. Both Westhawk and Deadman Consulting have in-depth experience in the GJTAPI framework and provide telephony consulting services that may be of interest to such organizations.
Latest Code
The most recent drop of code for GJTAPI and JCC is 1.8 and contains:This builds on release 1.7, which includes
- The new TAPI 3.0 Provider (default)
- The new SIP Provider
- The XTAPI bridge has been changed to the X11 licence and moved into the core
More providers may have recently been checked into CVS. We always need help with the development more providers, however (i.e. Asterisk).
- Basic Framework -- core, callcontrol, media, private data
- JAIN JCC support
- JAIN Jcat support -- preliminary support for version 0.3.1 -- see release notes
- Seven service providers -- emulator, mulitplexor, invertor, rmi remote, modem, dialogic and corba remote
Members
This project was started through the co-operation of Richard Deadman (Deadman Consulting) who worked to develop GJTAPI through a contract with 8x8, and Tim Panton of Westhawk, who developed the FreeJTapi implementation on which GJTapi is based.We are actively encouraging new members to pitch in, including telephony companies.