Eu estava tentando minhas mãos no Akka (Java api). O que tentei foi comparar o modelo de concorrência baseado em ator da Akka com o modelo de concorrência Java simples (classes java.util.concurrent).
O caso de uso era um mapa canônico simples, reduzindo a implementação da contagem de caracteres. O conjunto de dados era uma coleção de seqüências geradas aleatoriamente (400 caracteres de comprimento) e calculava o número de vogais nelas.
Para a Akka, usei um BalancedDispatcher (para balanceamento de carga entre threads) e RoundRobinRouter (para manter um limite nos meus atores de função). Para Java, usei a técnica simples de junção de bifurcação (implementada sem nenhum algoritmo de roubo de trabalho) que mapearia / reduziria execuções e juntaria os resultados. Resultados intermediários foram realizados em filas de bloqueio para tornar a junção o mais paralela possível. Provavelmente, se não estou errado, isso imitaria de alguma forma o conceito de "caixa de correio" dos atores Akka, onde eles recebem mensagens.
Observação: Até cargas médias (~ 50000 entradas de string), os resultados foram comparáveis, variando ligeiramente em diferentes iterações. No entanto, conforme eu aumentava minha carga para ~ 100000, a solução Java era interrompida. Eu configurei a solução Java com 20 a 30 threads sob essa condição e ela falhou em todas as iterações.
Aumentar a carga para 1000000, também foi fatal para a Akka. Posso compartilhar o código com qualquer pessoa interessada em fazer uma verificação cruzada.
Então, para mim, o Akka parece melhor do que a solução multithread Java tradicional. E provavelmente o motivo é a mágica oculta de Scala.
Se eu puder modelar um domínio de problema como uma mensagem orientada a eventos passando uma, acho que o Akka é uma boa opção para a JVM.
Teste realizado em: versão Java: 1.6 IDE: Eclipse 3.7 Windows Vista 32 bits. 3GB de RAM. Processador Intel Core i5, velocidade de clock de 2,5 GHz
Observe que o domínio do problema usado para o teste pode ser debatido e tentei ser o mais justo que meu conhecimento de Java permitia :-)