Now as I was saying, people who understand Smalltalk make disparaging comments about Java. And they understand that Java is not at all OO. Contrary to what the cretins say, it isn't true that Smalltalk is "the purest OO language". Smalltalk is not pure, it is highly impure. Smalltalk is crap and is the crappiest of OO languages. Smalltalk is the absolute bare minimum of what an OO language is. And since Java is inferior to the bare minimum, then logically it isn't OO at all. BUT, that doesn't actually explain what an OO language is and why Smalltalk is one and Java is not.
This rabid lethal epidemic of ignorance is what enables cretins such as this guy to compare Java and Smalltalk and Self without ever realizing that "one of these does not belong" much like a monkey does not belong with a man and a woman. So let us dispel the ignorance and talk about what actually makes up OO. Which is of course not classes as the majority of (entirely retarded) people claim. Rather it is objects. And by objects we mean independent dynamic contexts.
Now, the fact classes aren't objects in Java is bad, The fact there exist non-object primitive types in Java is bad too, but the fact that as far as scoping is concerned, objects simply do not exist in Java and are totally irrelevant? That's a deal-killer. No objects in Java <=> Java not object-oriented. And now let's turn to one of the most intrinsic and yet blatantly externally obvious properties OF objects so that everyone can behold the knowledge that Java has no objects and bask in Enlightenment. The Enlightenment that even LISP manages to be OO and Java will never be.
Fermions vs Bosons
Objects in reality are made up of FERMIONS. Fractional spin particles which obey the Fermi exclusion principle. Bosons are integral spin particles which do not obey the Fermi exclusion principle and therefore stack on top of each other and FORM NO STRUCTURES. Fermions <=> exclude each other <=> form structures <=> form objects. Bosons <=> stack on top of each other <=> form no structures <=> do not form objects. Bosons are light and radio waves and fermions are planets and stars and idiots who lionize Java.
Now, in Smalltalk and in Self and in LISP, there exist dynamic contexts which EXCLUDE EACH OTHER. They DO NOT STACK. And in Java those same "dynamic contexts" STACK ON TOP OF EACH OTHER. In Java, an instance of a class can freely play with any variables of any other instance of the class. Why? Because instances do not matter, because they aren't real, because they don't exclude each other, because they stack in the same volume. In physical reality, you can stack an infinity of bosons in the same volume until the whole volume collapses down into a black hole. In Java, you can stack an infinity of instances of a class into the exact same namespace until Java runs out of memory and collapses into itself.
There are no objects in Java because there is no matter in Java because there are no fermions. This is why everyone who's ever so much as played with Smalltalk or Self or LISP has grasped intuitively the feeling that objects in those languages are more "concrete" and more "real". Because they are LITERALLY more physical than the insubstantial ungraspable bosonic crap pseudo-matter which is all you can find in Java. In OO languages, objects have SUBSTANCE, whereas in Java they do not. In OO languages, objects take up VOLUME, whereas in Java they do not. In OO languages, objects PERSIST, whereas in Java they do not. And since classes aren't real in Java, it follows the fact that Java classes DO exclude each other can't matter at all.
In Smalltalk, everything is REAL. Everything is made of REAL objects and REAL matter. Objects have volume, and they jostle each other if you try to make one object reach into the innards of another object. It is indeed possible to make them do that but only by doing surgery rather than like a holographic projection passing through you. You can FEEL the resistance against doing this. and classes are even MORE real, because all classes are objects too. You can OFTEN ask classes "you class, give me your name and ID" and "you class, are you class ThisNameIsMine?" and the browser constantly asks classes for their parents and children. and you CAN ask ClassName allInstances of a class. And that's the least of what you can do.
So, Smalltalk, LISP and Self ==> OO + real + objects + matter. Java, C++ ==> dead crap + fake + insubstantial + ectoplasm. Also, OO <=> Good, and Java <=>; Bad. The reason Java and C++ prevailed and OO lost is because most people are retarded brain-dameged idiots incapable of grasping OO. Just like they're incapable of grasping Goodness is the reason why we have capitalism and coal and disease and poverty and wars and death. Bad to the retards is "Good Enough". This is the Worse Is Better crowd.