The way I look at it is encapsulation is an OOP concept, not really tied to any implementation, whether it is
Java, Slang, C++ or C ( I included C cause many people consider that C supports true encapsulation - enough has been said on this - so I will not contribute more and also I can't be sure cause I haven't programmed in C for many years ), or any other programming language for that matter.
I think a well encapsulated wrapper protects data, i.e it provides data hiding, which is crucial for any object oriented implementation cause data is what constitutes the state of an instance. The goal is to not reduce the complexity, but to protect data.
Yes abstraction also hides details, i.e the implementation details. The goal here is, though, to reduce complexity. And it is the 'how' ( the implementation ) that is hidden, not 'what' as in the case of encapsulation.