I'm assuming this question is being asked in good faith, and isn't
simply flamebait.
There are good reasons to stick with C. There are also good reasons
to use C++, or Objective-C, or Fortran, or Haskell (Java I'm not so
sure about; the more I play with it, the less impressed I am).
If you need something with a standardized GUI that works almost
everywhere, Java is pretty hard to beat.
I would not write a database in Java (though people have).
I would not write weather calculation or seismic calculation programs
in Java (though people have).
But if I needed to write a very portable user interface that runs on
Windows and Linux and Solaris and AIX and OpenVMS etc. Java would be
pretty hard to beat.
Mono is beta on Posix, in my opinion.
No one language is universally better at everything than every other
language. There are application domains where C is still the best
answer; there are application domains where anything *but* C is the
best answer.
There are domains where the only choices are C and assembler. I would
probably choose C in those circumstances.