The Jini architecture consists of the following components (see Figure 24):
An infrastructure component, which enables building a federation of JVM
A programming model component, which provides a set of interfaces for constructing reliable distributed services
The services component, which forms the living entities and represents the offered functionality within the federation
Although the system has three component parts, the boundary between the parts is blurred. All three parts collaborate with each other, like a set of gears within a machine, to achieve the overall system objectives. In fact, the infrastructure and the services components are built using the programming model component interfaces.
Figure 24 Jini architecture components.
Jini architecture is a Java-based solution for dynamic distributed computing. The Jini system extends the Java application environment from a single JVM to a network of JVMs. From that perspective, Jini can be seen as a network extension of the infrastructure, programming model, and services of Java application environment (see Figure 25). Jini utilizes most of the core Java technologies, such as RMI and JavaBeans, while adding additional functionality to meet the distributed/network nature of the system.
Figure 2-5 Java's extension for Jini.
How tightly are Jini architecture and Java coupled?
Jini is tightly coupled with Java as an application environment and a programming model.
Jini is not coupled with Java as a language.
This means that the service can be implemented in any language: C, C++, or JPython. But to participate in the architecture, it should be subjected to a compiler that can produce Java-compliant byte code. If not, it can be Java wrapped/Java-tized using Java native interface (JNI). In this way, even a legacy application can be Java-wrapped and can be made into a Jini service. To summarize: Jini architecture is not Java language-centric but Java application-centric.