Java is a platform independent language that allows code to be written once and run on any supported platform without recompilation. The Java Virtual Machine (JVM) provides the runtime environment for compiled Java code, but JVMs themselves are platform specific. The Java Development Kit (JDK) includes tools for development like compilers as well as the JVM for execution, while the JVM only provides runtime support. Java does not support pointers, multiple inheritance, or operator overloading for simplicity and security. Classes extend the Object class by default, and interfaces can extend multiple other interfaces to achieve polymorphism.