As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
If this question can be reworded to fit the rules in the help center, please edit the question.

4 Answers
4

I'd vote for Clojure if high performance concurrency is your main criteria. Clojure was basically designed for concurrent development from the beginning, and there have been some impressive Clojure demos running on 800+ core Azul boxes.

It is very much worth looking at this video presentation to understand Clojure's approach to concurrency:

The main trick in Clojure's concurrency performance is a clever implementation of Software Transactional Memory (STM) that lets you conduct many concurrent transactions without complex and expensive locking schemes. It also uses persistent data structures to give immutability and efficient management of multiple versions of data. It's very cool.

As for general purpose performance, Clojure is pretty fast already and getting even faster with the new 1.3 alpha branch. A stated aim of Rich Hickey (Clojure's creator) is to allow you to do anything in Clojure with the same speed that you can do it pure Java.

Other things in Clojure that I really like but may or may not be relevant to you:

Hugely powerful LISP-style macro system - "code is data" and you can manipulate it as such

It's a fully fledged functional language

It's dynamically typed by default (for flexibility and quick prototyping), but you can add static type hints if you need to (for better performance)

Excellent JVM / Java integration, so you can make use of all the good Java libraries and tools out there (e.g. Netty for event-driven server communications)

On Clojure you could use Grizzly for async http processing and comet/websockets based apps.
Redis is a great choice to cache and create a powerful distributed session with pub/sub protocol built-in
Another big thing is use RabbitMQ or ZeroMQ to simulate a agent based distributed system and provide group, data or integration services for example.

Clojure is probably the fastest dynamic language on the JVM. It hasn't quite caught up with statically compiled languages like Java or Scala yet, though it might get there in the end (given a few innovations in type inference)
–
mikeraApr 24 '12 at 1:20