Abstraction is a technique for hiding complexity that is irrelevant to the targeted user (ie targeted business domain).
A designer should not know which electrons flow in the wire to defined its color.
The implementation of abstraction is done through the creation of higher layer that encapsulate the recurring patterns of the lowest level.
The following are the basis abstractions found in a computer and materialized in language generation
To build a data abstraction, you need to identify for each data structure a set of operations (module).
Custom abstractions can facilitate portability (cross-platform deployment) and performance optimization. …. Custom abstractions may additionally limit expressiveness: they must be revisited to take advantage of new library features and due to encapsulation may be unable to exploit supporting technologies.
All Abstraction are failed abstraction
The amount of time saved via guava dependency is orders of magnitude less than the amount of time lost via guava dependency mismanagement.