I work on conceptually similar problems in Investment Banking using
Java In Memory caching products (Coherence, GigaSpaces etc). These
are very simple problems complicated by moderately large datasets
shared a across a cluster (e.g. 20 VMs). I think these problems are
relatively easy to solve within a specific domain. At least
abstractions can make programmers largely unaware of the heavy lifting
underneath, i.e. one person/group writes the framework and many other
Solutions like Google App Engine, look like interesting solutions to a
broader class of problems at the expense of fundamental changes in
approaches that perform well.
But I don't think there is necessarily a magic bullet to make
multicore processing as simple as a basic procedural program. The
best Java really achieved for multi-threaded programming was getting
programmers to stop writing programmers using Thread, volatile and
synchronized, and instead using the concurrent library.