Overhead: C versus Java

Yester day at university: "I rather use C than Java, because with Java I feel like I'm causing so much overhead." I think many people think the same way about Java, there are some things to realize though. There are two kinds of overhead:

  • Execution overhead, which was meant in the statement
  • Developer overhead

Every time I had to use C it was a disaster. It would always crash one way or another with a "Segmentation fault". Well, that's nice and helpful. I'd always read across array boundraries. I'm always having trouble working with pointers and C scopes and having memory leaks. And if I'd have to program securily I must absolutely be sure that buffer overflows are not possible, buffer overflows cause 50% of the security leaks. Not to mention that a lot of software written is very hard to read because of excessive use of macros. With Java however I have less problems, code is usually easier to read. I don't have memory leaks, buffer overflows are non-existant (or at least not malicious). And when something goes wrong I get a descriptive exception which tells me exactly what went wrong where in my code.

Sure there's an execution overhead in running Java code (although this is way less than it once were), but there's so much developer overhead in other languages. Computers will become faster in the future, memory and diskspace won't be a problem. Computers will be more and more about solving problems quickly and C is not the answer to that. Java may not be either, but at least comes more close.