If you know c++ then you also know c. Learn Java, then make an informed decision yourself!
By the way, when you say you want to be writing compilers and operating systems, do you have a potential employer in mind? There aren't many paying jobs I know of building new compilers or os'. Device drivers, yes. Addons for Gnu C++ (for, say ARM implementations) maybe.
Languages and os' seems to be fading to the university arena. You could work on existing languages and os' of course (MS and Sun and the like).
Anyway, that was a side note. My advice: Learn Java to some reasonable proficiency so you can make an informed decision.