C is widely used for system programming and embedded systems because of its low-level capabilities. It offers direct access to memory, supports pointers, and allows bitwise operations, which makes it highly suitable for hardware-related programming. Java, while useful for applications, does not support low-level memory manipulation and is platform-independent, making it less ideal for systems programming. C++, although more powerful than C due to object-oriented features, is also used in system programming but is more frequently applied to high-performance applications, such as games and simulations, than to low-level embedded systems.