The archaic explanation:
Java applications require a virtual machine to run because they cannot be are usually not compiled directly into machine language (native code) for many processors, instead Java is usually complied into bytecode. Java is also a very high-level Object-Oriented programming language (OOP) which means that while the application code itself is much easier to maintain, the objects that are instantiated will use that much more memory.
The more modern explanation:
However, many do argue that the problem is usually more so because of the Java program's data structures and architecture, rather than the bytecode. And I tend to agree with that.
There are a number of other reasons why Java apps are using so much system resources (like RAM). For example, most modern applications use the UTF-8 charset, which requires more memory per character, for strings (usually text) as it can support so many other languageslanguages' symbols. And since so many applications target a huge international market, they're sorta obligated to use it.
That said, Java arguably remains the most popular programming language at the moment. Many applications that your computer runs are written in Java. That is why.