I know that even a question Erlang or Java seems quite strange, because they are quite enough different languages with even different paradigms. But, now I know very superficially both of them, so, ask you what would you find more valuable to know, fast, scalable? What comes to my mind:
- Java is mainstream language. I’m not sure about Groovy and Grails, but if project becomes more than your own hobby – it’s much easier to find Java programmers to support this code. Elixir is a hobby of one good Erlang programmer – so it would be really difficult to support code in Elixir. Also, Grails is already written framework, so it should be better implemented that my own self-written in Elixir framework.
- Erlang app (being well written) is the synonym of scalability. But when it comes to web apps that starts, do some lightweight queries and die – there’s no need to scale them more than simple Round-Robin users queries between them (Java processes on different machines)?
- If we are talking about many simple queries (no long-polling and etc.) – so many processes awake and die every second – Erlang has really lightweight process model, so .. What about Java and lots of new spawned and killed processed every second?
Thank you in advance.
PS Chart from this performance test casts doubt on Java VM perfomance.
Definitely, Java. The performance test you referenced shows that Java/Netty performance equals that of multicore Erlang, You can use numerous Java actor and async I/O libraries, so each request wouldn’t start new process or thread – just create new handler in nanoseconds.