You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@river.apache.org by Peter Firmstone <ji...@zeus.net.au> on 2010/05/12 22:50:49 UTC

Why is River / Jini still relevant?

API Evolution is implicitly inherent in River's Lookup mechanism.

Think about the versioning evolution problem for a moment.

Here's a good presentation:
http://beta.parleys.com/#st=5&id=217&sl=33

Anyway, what happens when you change an interface, by adding a method to 
an interface?

It breaks at runtime if it mixes with the old. - So, this has long been 
known.

But it doesn't break if your using lookup. The proxy with the version of 
the interface you don't have won't unmarshall, which is no problem, use 
a different one.

Common practice is to extend interfaces for evolution. You can extend 
your interface, add the method and create a new Service Implementation 
and proxy.

Now you can service both old clients and the new.

Old clients will still lookup your service through the old interfaces, 
your new clients find you using the latest interface.  The old client 
wont directly see your new interface, however it will download it's 
class file when it unmarshalls your proxy.

When you want to drop the old interface and introduce a new one, but 
still migrate data from the old, you can wrap the old interface inside a 
proxy implementing the new, and the old interface becomes abstracted as 
a proxy implementation detail.  It can now participate with other 
implementations and consumers of the new interface.  The data prevails.  
You might change from a dumb proxy to a smart proxy, but the client 
isn't concerned.

Those who have been using Jini / River for some time will be aware of 
it, I just thought I'd mention it for anyone who isn't.

It just demonstrates why River is Still Relevant.

Name something else that solves this problem so eloquently?

Anyway I'm confident we're now changing gear, by changing the current 
Registrar to allow delayed unmarshalling and Stream inspired, 
ResultStream's of proxy's we can have multi layered filter's that can be 
mixed and matched, or shared over different lookups, we can make lookup 
scalable at the client.

However don't sit back, thinking someone else will look after River.  
River needs your scrutiny more than ever now, to ensure fundamental 
changes we will have to live with for years to come, are indeed as good 
as they should be.  I especially welcome any comments from longtime 
experienced Jini community members and Architects.  Spread the word.

Best Regards,

Peter.