* C is a relatively low-level language, which makes it ideal for OS internals.
* C++ is a middle-level language, but inherits all the low-level bits from C.
* Java is a pure middle-level language that completely abstracts away OS details.

We need to accept that different languages are useful for different things. Personally, I don't like Java at all, but I must accept that it has its uses!