Java is an object-oriented language like C++ that is interpreted, garbage collected, and can be compiled. It was designed to be portable, distributed, multithreaded, and robust. Key features include interfaces that allow unrelated classes to satisfy requirements, events and listeners for event-driven programming, reflection for introspection and dynamic behavior, and a large library of packages.