Michael Coté explains why Java is a different beast. It is the culture that makes the developers focus more on Java than on the purpose and delivery mechanism of the application. I believe even .NET applications are in the same boat.
With their roots in OOP, abstractions are used everywhere, like Coté says, for modeling possibilities. But does this mean that abstraction is bad. No, in my opinion, the problem lies in what is being abstracted for whom. The categorical dual of abstraction is encapsulation, which can hide information. The consequences are bad if wrong information gets hidden. On the other hand, the right abstraction can be a key element in following the principle of least astonishment. In fact it is advised to program to an abstraction.
There has always been a tussle in transparency and abstraction. We need the right balance of these two to be able to identify and solve problems. Most of the times the balance is dictated by the domain and the delivery mechanism, not the technology itself.