It's kind of funny how almost no one is advised to write code in Java these days, and on the other hand really cool infrastructure projects like this or Cassandra are almost always written in Java. I understand they have to perform better than the average webapp, but still...funny.
My recent experience with Java code is that efficiency conscious Java code is ridiculously under-performing compared to efficiency conscious C code. By virtue of Java's structure and culture (as codified in its libraries), you have to spend approximately twice as much physical memory as you would in C. E.g., I had a 100,000,000 record array that I needed to sort. That's great -- Java has an Array.Utils.sort() method;…
Against C there is always the "Java makes it more difficult for you to mess things up" argument...