Smalltalk was the first full implementation of an object-oriented language with features like abstraction, inheritance, and dynamic binding. C++ combined imperative and object-oriented programming, growing rapidly in popularity along with OOP. Java eliminated unsafe features of C++ while adding support for applets and concurrency.