For systems programming purposes, if C or C++ can be avoided and no other JVM language were available or anything like that, I would use Java without many reservations. C is relatively tedious. C++ has a Byzantine standard. Java is at least GC'd, which can be tolerated in some situations (though I suspect much of the sluggishness of Android with respect to iPrison platforms is due to the use of Java rather than Objective-C, which appears to be a much saner "C with objects" than C++ from what I know). Plus Java 8 did a lot to undo the excessive verbosity of previous iterations of the language.