Why Is Java Not Pure OOP?

Java is not pure object oriented programming language because some of its data types are not object.
In java we can make use of primitive data types. Pure Object Oriented Programming Language should only contain objects.
Many languages are Object Oriented. So, for you to know if a programming language is pure OOP or not, the language needs to satisfy the following features:
1. Encapsulation or Data Hiding- is a language method for limiting the access to some of the object’s mechanism.
2. Inheritance- is a way to classify and recycle code by creating set of attributes and behaviors identified as objects, which afterward may be based onto prior created objects.
3. Polymorphisms/Dynamic Binding- simply means binding controls to data from databases.
4. Abstraction- allows one to pull together instances of entities into cluster in which their common trait need not be considered. There are two types of abstraction — Process abstraction and Data abstraction.
5. All predefined types are objects- means the function have been defined previously.
6. All operations are performed by sending messages to objects.
7. All user defined types are objects.
In Java language, features 4 and 5 are lacking, so it makes Java not 100% pure OOP. OOP prototype of programming says that everything in a programming world should felt like object meaning it should be abstract and encapsulated. As mentioned earlier, the prototype is not completely satisfied by Java.
But in order to resolve this issue, Java 1.5 was released and it contains auto-boxing feature that makes automatic translation of object to primitive and vise versa. Although, Java Language is not a pure OOP, it is still successful in the market as it keeps on entertaining people with games and other applications that require a java scripting. Kudos to the developers Java!