There has been a number of blogs and articles across the web recently about the benefits of Javaspaces and use cases for them
Although I am nowhere near an authority on the subject, here’s my take on what a Javaspace is and what it can do for you.
In fact it’s not my take it’s actually Ken Arnold’s from JCM 7
‘A Javaspace is essentially a Work Coordination Tool.’
Now sit back and think about that for just one second
Work Coordination is simply a way of saying that a Javaspace can do a lot of the things that JMS or a proprietary messaging system can do (although of course there are things that Javaspaces do that a MQ can’t and vice versa), also a database (in the raw sense of the word not RDBMS), although many would say (myself included) you should not use a Javaspace in place of a persistent database, also you can use it to run an alternative to ESBs. I think the core concept that others also refer to a Javaspace as emplifying, is a distributed shared memory model for Java objects; and a persistent one at that. Of course there are some caveats, in general entries must have public fields, making them more lightweight objects more similar to structs than what we would commonly define in OO parlance as an object.
The second thing to note is the word ‘Tool’ – yes a Javaspace is a tool, just like Jini, it is a cog in the overall system; a very powerful one, but a component nonetheless. Many people are looking for use-cases of where to use Javaspaces. But here’s a thought – do you ever ask what the use-case for a network is? No because it’s an infrastructural component that other things that you do have use cases for, sit on top of, and have a dependency upon.
You can use Javaspaces (and Jini) anywhere you need to move data around the system in a dynamic flow, i.e. not from one particular point to another.
Hence the popular use of Javaspaces in the master-worker pattern (There are other Space-based patterns, such as distributed tables and maps).
Think what things javaspaces can help you do, rather than what Javaspaces can do for you straight out of the box. The value in Jini and Javaspaces is dependent upon the value of the things that utilise them. The world is becoming more and more distributed, multiple core machines mean distribution of processing within the single box. But distribution cause it’s own problems, changing topology, network failure, etc.
We hide behind the assumptions that the network will never change, because it’s hard to factor in; but Jini at least allows us to be aware and to address these things. Instead we invest thousands in load balancers routers, failover servers, when what we really need is the ability to work with the network as it’s changing.
Again IANAA (I am not an authority), but at least this is my current view



