UML composition, aggregation and plain association are semantic concepts, not programming concepts. The meaning of them can be understood as follows:
- Composition: A consists of B; B is a part of A and hence cannot exist without A
- Aggregation: A owns B, B belongs to A
- Association: A uses B, A is related to B in a given way
(Composition and Aggregation are special types of associations.)
In Java, you may implement all of them in the same way. It's a conceptual difference.