A programming language.
As defined by Gosling, Joy, and
Steele in the Java Language Specification
A platform.
A virtual machine (JVM) definition.
Runtime environments in diverse
hardware.
A class library
Standard APIs for GUI, data
storage, processing, I/O, and networking.
...