Why Java is not purely (100%) Object-oriented?

Pure Object Oriented Language or Complete Object Oriented Language are Fully Object Oriented Language which supports or have features which treats everything inside program as objects. Java is not 100% Object-oriented.

There are 7 qualities to be satisfied for a programming language to be pure Object Oriented:

  1. Encapsulation/Data Hiding
  2. Inheritance
  3. Polymorphism
  4. Abstraction
  5. All predefined types are objects (Not Supported in Java)
  6. All user defined types are objects
  7. All operations performed on objects must be only through methods exposed at the objects. (Not Supported in Java)

Three main reason are:

Primitive Data Types: it makes use of eight primitive data types such as boolean, byte, char, int, float, double, long, short which are not objects. 

Static Keyword: We do not call Static Variable and Static Method using Objects.

Wrapper Class: We can communicate with objects without calling their methods. Even using Wrapper classes does not make Java a pure OOP language, as internally it will use the operations like Unboxing and Autoboxing.