Objectives of JAIN SLEE
The JSLEE standard was originally conceived to meet the specific and exacting needs of an application server operating in the service layer of telecommunication networks. The network service layer has extreme transaction processing requirements in terms of latency, throughput, availability and management, commonly referred to as carrier-grade requirements.
JSLEE specifies an asynchronous run-time environment which allows telecommunication systems to be modelled as Finite State Machines (FSM) connecting to a number of external systems by asynchronous signalling protocols.
When the JAIN JCP commenced work, their starting point was "what do we need to add to J2EE to make it suitable for communications". The short answer is to keep one or two features, but essentially to start again as the specific requirements for a telecommunications application server are very different from those of enterprise IT systems. Communications networks involve markedly different user expectations, technical requirements and business drivers from those of enterprise systems.
The result was JSLEE, an open standard describing a robust and high-performance execution environment for telecommunications applications. JSLEE APIs adopt successful patterns and concepts from JEE and incorporates other Java standards such as JMX for system management.
The JAIN SLEE programming model has been designed to simplify the work of the application developer, eliminate common programmer errors and ensure that robust services can be developed rapidly. Rhino and JAIN SLEE is Java technology so the large family of standard Java APIs can also be used in signalling applications.
JAIN specifies a comprehensive range of APIs that target converged IP and PSTN networks. JAIN includes APIs for high-level application development (e.g. Service Provider APIs), Call Control, as well as protocol level APIs for signalling (SIP, MGCP, SS7, etc.)
Whilst originating to meet the specific challenges of the telecommunications environment, JSLEE is directly applicable to a generic class of problems that require asynchronous behaviour, guaranteed response with low latency, and continuous availability. In short, any problem that has traditionally or can be been modelled with a Finite State Machine (FSM) is likely to be addressed well by the JSLEE standard and JSLEE Application Servers. Such problem areas are "in-network" telecommunications equipment, trading systems, tracking of people and goods/ materials using technologies like RFID, sensor-based control systems etc.
Service Execution Environment
A SLEE – Service Logic Execution Environment – is a well known concept in the telecommunications industry. A SLEE is a high throughput, low latency event processing application environment. The service logic ‘environment’ can be realised, as it has been historically, by a set of software libraries that provide the run-time facilities that the service requires. Given the progress in software engineering techniques over the last two decades, nowadays these capabilities are more typically provided by an Application Server as an alternative to the object library approach. Regardless of the detail of how the SLEE is realised, the principle is the same: to provide the features and functions that are common to all services so that they do not need to be built in each separate case.
Until JAIN SLEE however, SLEEs have been proprietary and hence incompatible with other SLEEs as they each provide their own set of capabilities with proprietary APIs. This means services and features are not portable between SLEEs. Services and features in different SLEEs cannot interact because the SLEEs do not support interoperability. Indeed, often the SLEE is 'invisible' and the highly desirable separation between application and platform logic becomes corrupted over time as additional platform features are added in the application or vice versa.
JAIN SLEE (JSLEE – the Java SLEE) is designed specifically to allow implementations of the standard to meet the stringent requirements of communications applications, such as network signalling applications. The JSLEE specification is also designed so that implementations can achieve scalability and availability through clustering architectures.
JSLEE sits alongside other proven Java standards such as the well-established JEE standard for enterprise application servers.
JSLEE specifies server software capabilities that provide behaviour common to all services. This means that common “systems level” behaviour is not re-developed for each and every service. It also enforces a clean separation between the service (aka application) and the facilities that are a standard feature of the platform. Because the same platform is used by many services, the resulting applications/ services are more robust because the common core is already extensively tested and deployed.