Original sentence: Object casting incurs a heavy overhead that also cannot be removed from the language and has to be done during runtime, and again there is no way to avoid this in Java except for the simplest of primitives, while in C it is possible to do runtime casting however often times it can be done more efficiently by specifying before compilation rather than during runtime.These include garbage collection which in Java is not optional, if a garbage collector is used in C through an external libray it may make no difference in performance and most C programmers never use a garbage collector.While there have been significant improvments in compiling java, there are reasons why the language it self is not able be compiled to be as efficient as C and C++ compiled programs