Project loom looks very promising:

http://cr.openjdk.java.net/~rpressler/loom/loom/sol1_part1.html

River uses a lot of threads, many block waiting for network responses...

Virtual Threads could help significantly with salability.

Something else I've thought about in the past is Pack200, since this was introduced in Java 5, it was never part of Jini, however is anyone aware of it having been used to reduce downloads? Incidentally it's been removed from Java since 14 I think.

While focused on using River on the Internet, one of the considerations I had was remote endpoint identity.  I had realised that multiple parties would be involved and it could cause problems if different parties shared the same identity locally, incidentally River grants permission based on a ClassLoader for a service proxy, so a second party might be able to obtain access to private state as well as the permissions and identity of another service, simply by using the same codebase annotation.

When I wrote AtomicILFactory, I made sure that ObjectEndpoint was part of the identity in addition to the codebase annotation.   Of course it works a little different than other AbstractILFactory instances, rather than encoding the codebase annotation into the stream, the ServerEndpoint is contacted, authenticated, the codebase annotation is requested from the server and a ClassLoader created specifically for the service's identity (It can be effectively treated as the server's Principal), then the service proxy is deserialized into it.  This addresses some codebase annotation loss issues identified by Warres et al and a service can change it's codebase annotation, the next time a service is deserialized, it will use the latest codebase annotation.     N.B. How a ClassLoader is assigned is extensible if required, eg OSGi.

Cheers,

Peter.





Reply via email to