it's a general-purpose, multi-paradigm programming language. it's encompasses static typing, strong typing, lexically scoped, imperative, declarative, functional, generic, object-oriented, and component-oriented programming disciplines.