Architecture of Jcapi

Java I/O application layer  
IsdnConnection
IsdnInputStream
IsdnOutputStream
IsdnIOException
Isdn???
  Java
ISDN application layer
? JcapiEvent ?
? JcapiListener ?
? JcapiException ?
JcapiB3Connection
Jcapi???
implementation
org.capi.capi20
CapiException
class
net.sourceforge.jcapi
Jcapi
class
net.sourceforge.jcapi
JcapiMessage
class
net.sourceforge.jcapi
JcapiNotifier
class
public interfaces to be certified by CAPI Association
org.capi.capi20
CapiListener
interface
org.capi.capi20
Capi
interface
org.capi.capi20
CapiMessage
interface
 
platform specific layer  
jcapi20
e.g. jcapi20.dll
  Java Native Interface (C/C++)
vendor/device specific layer
(not part of Jcapi)
 
CAPI 2.0 Application Level
e.g. capi2032.dll
  native

Vendor/device specific layer

The whole architecture of Jcapi is based on the native Common ISDN API (CAPI 2.0) for any platform or system architecture. The vendor of the ISDN device should offer an application level CAPI, usually a shared library (e.g. capi2032.dll for Win32-systems).

Platform specific layer

Since a CAPI shared library cannot be loaded directly from a Java application, it needs to be "wrapped". This is done by the jcapi20 shared library which links the vendor specific CAPI library dynamically and offers a Java Native Interface for Java access.

Thereby this library builds a bridge over two gaps between platform independent Java applications and ISDN devices: First, it gives access to the native coded driver including direct memory access and second, it replaces the platform specific CAPI 2.0 by an Java Native Interface identical for all platforms and systems.

Since this wrapping feature is only possible for native coded programs, the library has to be built for all platforms seperately; but keeping it small and simple minimizes the extend required.

Specification layer: CAPI 2.0 for Java

This layer is designed to extend the Common ISDN Application Programming Interface (CAPI 2.0) to the Java Virtual Machine (JVM) as an additional platform. Therefore it has to be certified by the CAPI Association.

Implementation layer

The CAPI interfaces described above are implemented by this layer. The CapiException class lies somewhere in between: It belongs to the CAPI specification but is already an implementation.

ISDN application layer

The CAPI 2.0 is a "low level" interface with the need of special know-how of the ISDN protocols and data structures. It is not designed for application programmers who don't want to deal with "bits and bytes". The ISDN layer offers a more simple and "Java like" API.

Java I/O application layer

There are standards defined for Java communication APIs like stream I/O. These APIs are implemented for ISDN communication within this layer.