Java defines data as objects with methods that support the objects. It provides features like abstraction, encapsulation, inheritance and polymorphism. Java programs can be executed on any platform that supports a Java Virtual Machine as Java code is compiled to bytecode, which is platform independent. To execute a Java program, the source code must be compiled to bytecode using the javac compiler, which checks for errors. The bytecode can then be executed using the java command.