In the Java programming language, the Collections API (or framework), added in JDK 1.2, provides utility classes for dealing with 'collections' of Objects.

Use of the collections package on Open Source platforms has been tough. The way the collections package was implemented (by placing everything in java.util) made it basically IMPOSSIBLE to write code that used collections AND still ran under JDK 1.1. For a long time JDK 1.1 was the only reliable JVM available on all platforms (including Linux, FreeBSD, etc). Therefore, until recently, if you wanted to use collections and at the same time write portable code, you were in trouble.

That said, the collections framework is pretty cool. For starters, a lot of the code is not synchronized which means that if you *know* your code is threadsafe, it can be made significantly faster by using collections.

Also, everything is broken out into interfaces with specific implementations. Each implementation has specific properties that your application can utilize. For example some Collections are sorted, some don't allow duplicate items, etc.