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.