Java APIs for Integrated Networks (JAIN) is an activity within the Java Community Process, developing APIs for the creation of telephony (voice and data) services. Originally, JAIN stood for Java APIs for Intelligent Network. The name was later changed to Java APIs for Integrated Networks to reflect the widening scope of the project. The JAIN activity consists of a number of "Expert Groups", each developing a single API specification.
JAIN is part of a general trend to open up service creation in the telephony network so that, by analogy with the Internet, openness should result in a growing number of participants creating services, in turn creating more demand and better, more targeted services.
A goal of the JAIN APIs is to abstract the underlying network, so that services can be developed independent of network technology, be it traditional PSTN or Next Generation Network.
The JAIN effort has produced around 20 APIs, in various stages of standardization, ranging from Java APIs for specific network protocols, such as SIP and TCAP, to more abstract APIs such as for call control and charging, and even including a non-Java effort for describing telephony services in XML.
There is overlap between JAIN and Parlay/OSA because both address similar problem spaces. However, as originally conceived, JAIN focused on APIs that would make it easier for network operators to develop their own services within the framework of Intelligent Network (IN) protocols. As a consequence, the first JAIN APIs focused on methods for building and interpreting SS7 messages and it was only later that JAIN turned its attention to higher-level methods for call control. Meanwhile, at about the same time JAIN was getting off the ground, work on Parlay began with a focus on APIs to enable development of network services by non-operator third parties.
From around 2001 to 2003, there was an effort to harmonize the not yet standardized JAIN APIs for call control with the comparable and by then standardized Parlay APIs. A number of difficulties were encountered, but perhaps the most serious was not technical but procedural. The Java Community Process requires that a reference implementation be built for every standardized Java API. Parlay does not have this requirement. Not surprisingly, given the effort that would have been needed to build a reference implementation of JAIN call control, the standards community decided, implicitly if not explicitly, that the Parlay call control APIs were adequate and work on JAIN call control faded off. Nonetheless, the work on JAIN call control did have an important impact on Parlay since it helped to drive the definition of an agreed-upon mapping of Parlay to the Java language.