Hi Gregg,

On Oct 1, 2007, at 9:37 AM, Gregg Wonderly wrote:

Bill Venners wrote:
Anyway, I was curious what everyone here thought. It may be a way to position River in people's minds, give it a marketing story.

I think this is a reasonable analogy to use. Some will still argue about the locking that occurs in the JavaSpaces server etc. But, I think there is some meat to the argument that the design of parallel systems should be thought of as a distributed computing problem.

I'm not sure what you mean about "the locking that occurs in the JavaSpaces server," but if you mean that JavaSpaces is implemented using shared state and locks, that's OK. When you send a message to an actor there's locking and shared state going on in the actor's message queue. What's important is that clients of the actors don't need to explicitly lock anything. Client programmers can think at a higher level of abstraction, and the model is composable. I think such things would be true of a JavaSpaces compute grid model.

One complaint I can imagine is that you'd be using processes instead of threads, except that you could have a single worker process with many worker threads each operating independently. Even a master thread could be doing the work of the master in the same process, also independently. What people might find a bit odd is that JavaSpaces itself is in a different process, and you have to go over TCP/IP to pass jobs and results back and forth between master and worker threads, even when those threads are in the same process.

But I think the answer to that could be that this is how you make it possible to just add another box and scale horizontally when you need more workers. One thing that is apparently true about actors, and again sorry I don't understand this model very well as yet, is that if your program works on one box it will work on many. That's a pretty useful feat. In the case of JavaSpaces, what it would mean is that you treat all objects the same whether they are remote or local, because you treat them all as if they are remote. So you handle partial failure of a different core on the same CPU, which is pretty unlikely to ever happen. But it is worth hit, because when you do that you can indeed just add more boxes with more cores and your app scales.

Anyway, I was just speaking last week to a high-level director of software at a large enterprise. I mentioned Jini and asked if he'd heard of it. He said, "Oh yes, that's about writing software on devices, right?" Jini has a new name now, River, so perhaps there's an opportunity for a new marketing story. I have noticed that there has been a lot of concern in the software community recently about the coming proliferation of multi-core architectures. It smells like a disruptive technology is coming, and that may be an opportunity to explain River in a way that makes people feel it could help them solve a real problem that they expect to be facing very soon.

Bill

Reply via email to