Java and C# compilers are selfhosted.
Then depending on which JVM implementation we are talking about the actual JVM runtime can be Java, C, or C++, or a mix of them.
Modern C compilers are written in C++.
Rust uses LLVM, written in C++.