image/svg+xml $ $ ing$ ing$ ces$ ces$ Res Res ea ea Res->ea ou ou Res->ou r r ea->r ch ch ea->ch r->ces$ r->ch ch->$ ch->ing$ T T T->ea ou->r

Sur cette page, nous répertorions quelques bibliothèques utiles d'usage général en langage Java. Celles-ci permettent d'apporter des fonctionnalités non-présentes ou incomplètes dans le JDK de la Standard ou Entreprise Edition. Généralement ces bibliothèques peuvent être utilisées avec le JDK ou Android.

Cette page est en travaux perpétuels.

Biliothèques de collections

Ces bibliothèques complètent ou remplacent l'API collections du JDK.

Apache Commons Collections

Il s'agit d'un projet Apache faisant partie de l'ensemble de biblithèques commons pour Java. Cette bibliothèque propose des interfaces supplémentaires avec l'implantation de nouvelles structures de données dont notamment :

Cette bibliothèque permet également de manipuler des comparateurs :

Une partie de la bibliothèque permet de manipuler des itérateurs. On peut ainsi :

Javolution

Javolution propose un paquetage java.util avec de nouvelles classes pour les collections (FastCollection<E>, FastTable<E>, FastSet<E>, FastMap<K,V>...) héritant des interfaces de l'API standard. La philosophie de Javolution est de fournir des collections avec une complexité acceptable dans le pire des cas pour chaque opération plutôt que de se baser sur une complexité amortie. Cela est notamment intéressant pour des applications temps-réel.

Par exemple, FastTable<E> est une implantation de liste différente de ArrayList<E> : elle initialise différents petits tableaux (de 1024 éléments par défaut). Ainsi l'ajout d'un élément peut nécessiter tout au plus une recopie de l'index des tableaux ainsi que l'allocation d'un petit tableau ce qui peut être moins coûteux que la méthode traditionnelle d'ArrayList consistant à doubler la capacité en créan un nouveau tableau avec recopie.

Eclipse Collections (anciennement GS Collections)

Eclipse Collections est une bibliothèque Java qui propose des versions immutables et mutables de collections compatible avec l'API streams introduite par Java 8. Un type d'itérateur paresseux proche du comportement de streams est également proposé (API antérieure à l'API streams de Java 8).

La bibliothèque propose ses propres implantations de ArrayList (FastList), de HashSet et HashMap, de SortedSet et SortedMap. Des collections n'existant pas dans le JDK sont disponibles :

Un des principaux intérêts d'Eclipse Collections est la présence de collections manipulant des types primitifs (int, long, float...). Avec le JDK, seuls des types réifiés peuvent être utilisés dans les collections ce qui occasionne une surconsommation mémoire importante (ainsi qu'un surcoût temporel lié aux problématiques d'allocation/désallocation mémoire).