I don't think that should put you off, here's why....

We're not talking about distributed computing so much as what we want to do
with Jini. These are in point of fact two different things. First a little
bit of dist comp theory, this is the last I'll mention, promise:

ConcurrentMap and indeed Map semantics alongside the constructs for
atomicity (e.g. synchronized) as found in Java are not "distributed
computing friendly". This is because the failure semantics they offer are
next to zero (all these things provide blocking operations with no timeout
that are expected to end successfully in very small finite time). The only
way these work is with a compromise of sufficient redundant hardware and
reliable networking setups that can protect these constructs from failures.
Similar tradeoffs can be seen with many message queues, databases and such.

All this is at odds with the philosophy Jini takes in its design which can
be summarised as "all dist comp failure semantics will be made explicit".

That's all the theory one needs to know for this debate.....

It follows that Jini and many of the so-called distributed computing
frameworks are fundamentally different beasts. The majority want Jini to
look like these other beasts as that is what they understand, which is fair
enough. Alas Jini cannot do this without discarding its core philosophy and
would offer no more value than any other framework were it to do so (because
that programming philosophy is already well catered for).

Now, the community can choose to support users that want to build explicit
failure handling into their distributed systems or they can choose to eschew
that and support users that believe in reliable hardware. There is a third
way of course which is to build something atop Jini that supports this
opposite philosophy. The trouble with this for me is, as I hint above, I
personally don't see much in the way of benefit over what else is already
out there. About the only difference would be "powered by Jini" on the box
or whatever other branding one cares for. Maybe the hardware outlay is
cheaper as well but for the many small systems built by the majority, the
difference is negligible.

The "reliable hardware, no failure semantics software" crew is the majority
of developers so if one wants mass appeal, that is where one must go. If one
wishes to be niche, that's fine too the community just needs to recognise
the consequences of our choices.

One thing is for sure though, whichever developer group is selected as the
target audience, a decent starting point will still need building. Jini has
never had that sorted.

Before anybody flames me, I care not a jot which approach people go with, I
have my own preference and I believe it works better for the kinds of
systems I need to build is all. These systems are not the norm, they are
big, with lots of machines, run across a number of datacentres and are
heavily automated to keep ops costs (including mistakes) down. I use a lot
of Jini-style constructs and philosophy but tend to end up casting my own
frameworks to best suit the environment I'm working in.


On 27 December 2010 16:31, Patricia Shanahan <p...@acm.org> wrote:

> I think this is a really valuable conversation, and I hope it can be
> brought to a conclusion we can work with. I will not be contributing because
> I don't have sufficient distributed computing background.
>
> Patricia
>
>
>
> Niclas Hedhman wrote:
>
>> Gang,
>>
>> There is a strong distributed tradition in the group of people here,
>> yet unable to communicate the 'purpose' of River. Large companies look
>> at Gigaspaces, pays good money for it and asked if liking Jini, most
>> will go "Huh? Why would we use that?", mostly ignorant to the fact
>> that Jini specs drove Gigaspaces into where it is.
>>
>> At my company, we are doing evaluations of distributed technologies at
>> the moment. Jini/River is not even on the map, because it "misses the
>> points" that are our starting point. But an open source contender like
>> Hazelcast is, because it delivers an 'starting point' which is easy to
>> understand, i.e. a list of features as Distributed
>> Map/Queue/Events/Executor/... expressed in terminology that we (the
>> users) already know.
>>
>> So here is my modest suggestion for the Jini community; If you are as
>> hot on distributed technology as you think you are, then start
>> thinking in terms (and deliver a clear message) that matters to the
>> users;
>>
> ...
>

Reply via email to