Apache River is a project furthering the development and advancement of Jini technology.

River is the implementation of Jini service oriented architecture. It defines a programming model which both exploits and extends Java technology to enable the construction of secure, distributed systems consisting of federations of services and clients. Jini technology can be used to build adaptive network systems that are scalable, evolvable and flexible as typically required in dynamic computing environments.


Client and service communicate with a protocol called JERI. JERI implementations are available for plain TCP, plain SSL, HTTP, HTTPS and Kerberos TCP. For compatibility with RMI there is also a JRMP transport.

From small to big

Service and client: uses JERI to communicate, no dynamic discovery.
Combination of service, client and registry: allows for automatic discovery of any of them, the VM hosting the service registers it in the registry.
Service, client, registry and class-server: on-demand distribution of compiled code.

Basic services

Several basic services are available for locking, distributed events, leasing, transactions, etc.

Extended services

An implementation of Tuple spaces called JavaSpaces is part of the project.