Java supports key object-oriented programming concepts like abstraction, encapsulation, inheritance and polymorphism. Abstraction hides unnecessary details, encapsulation wraps data and functions into a class, inheritance allows classes to inherit attributes and behaviors from parent classes, and polymorphism allows one interface to multiple forms. Java also uses bytecode, JIT compilation, and dynamic binding. Interfaces allow classes to implement common behaviors without sharing an inheritance relationship. Abstract classes support inheritance and require subclasses to implement abstract methods.