Java is an object-oriented programming (OOP) language, which means concepts or things are represented as “objects” that have data fields and methods. In object-oriented programming, models called “objects” represent either a programming entity or an abstract concept. These objects are created and assembled independently of one another but can work with each other in logical ways. Objects are manifestations of classes and can inherit code allowing for code re-use, which can drastically reduce code duplication if used correctly. Additionally, encapsulation, another core OOP concept, allows you to create code with the implementation hidden. Although, in many cases, writing OOP code in Java (and other OOP languages) can take longer than using a procedural language, the benefits obtained with OOP, namely code reusability, encapsulation of data, and readability of code, often result in code that is easier to maintain in the long run.