Berin Loritsch notes a difference between the way Java developers approach things, and the way Smalltalk developers approach things:
As I was writing about certain principles that influence simplicity, I came across the disparity between the typical Java way and the original Smaltalk way of designing your objects. Take for instance the problem of moving an object left 25 pixels and down 30. A Smalltalker would do something like this:
rect.moveLeft: 25 Down: 30
And in Java:
Point p = rect.getLocation();
rect.setLocation( p.X() - 25, p.Y() + 30 );
Anyone see the problem right away? In OOP 101, the principle is that you tell an object what you want it to do. Notice that isn't query an objects state and then modify it. In the Smalltalker's code, he is clearly telling the rectangle to move left 25 and down 30 and the parameters are verbose enough to make that clear. With Java we ask the object where it currently is, and assuming that bigger numbers mean right and down we give it a new location.
The point? Java developers are still working at the data structure level - there are objects, but they aren't really being treated like objects.