Michael McGrady wrote:
Thanks, Holger,
The idea is not to jettison but to decouple JINI from JavaSpaces.
Similarly, in part, various Web frameworks (e.g., Struts) are decoupled
from Servlets. Without something like JINI, JavaSpaces would be useless
but this is different than creating a situation where JINI itself,
rather than something like JINI, would be required.
The idea too is not to suggest that JINI is something that needs to be
replaced. The idea, rather, is that it needs to be decoupled to follow
architectural best practices and that the lack of cohesion in
JIN:-JavaSpaces due to the coupling is not a good thing and can be seen
as the reason for a lot of the unnecessary complexity in River.
Okay, I think there needs to be a viewpoint expressed here that comes from a
different direction. Jini is not all the services in River. Jini is the
foundation/API in River, which allows you to create clients and services. These
utilize the Java security system, Java mobile code, and the Java platform, in
general, to effectively (and I'd say efficiently) create distributed, scalable
network centric applications.
Javaspaces is an API in the Jini platform. Reggie is a service implementing the
Javaspaces API, in River, which provides a piece of, and uses the Jini platform.
There are 3 things in the Jini platform which the outrigger implementation of
Javaspaces uses. It registers with service discovery so that you can find it.
It doesn't have to use reggie, any implementation, which implements the spec,
will work. It uses transactions and thus leasing to help manage the integrity
of the system. It doesn't need to have mahalo, but any transaction
implementation that implements the spec.
The sun provided LandLord leasing implementation is something that meets the
spec for leasing. Other implementations of the transaction/leasing spec would
interroperate.
It is possible to make outrigger buildable as a single "artifact" (maven or
otherwise) so that it's not part of the River distribution (blitz is a
Javaspaces implementation that demonstrates this separation from the platform).
Outrigger has intimate dependencies on the Jini "platform" (service registration
as a service, and transactions and leasing etc in the APIs) which mean that it
is not "separable" from Jini without being something different than Javaspaces.
Outrigger is separable from River as an artifact, but I am not convinced that
this separation would be good, because then all the River infrastructure to
actually use Outrigger would be another step needed to get it to work.
Gregg Wonderly