Introduction à Apache Commons

Bien sûr, commençons par l'histoire !

Tout a commencé en 1999 avec l'enregistrement du "Apache Group" pour le compte de l'Apache Software Foundation (ASF). Le projet soutenu par la fondation était le serveur Web Apache HTTPD créé entre 1995 et 1999.

Le même était le projet Jakarta (projet Jakarta), qui est apparu à la suite de la collaboration de Sun Microsystems, IBM, Oracle et les gars d'Apache. Et en 2001, pendant les travaux, l'équipe de développement a remarqué qu'ils écrivaient souvent la même fonctionnalité, parfois ils se copiant simplement les uns des autres. Un tel code est appelé passe-partout. Ils ont réussi à collecter une grande quantité de code qui a aidé les développeurs, mais il n'y avait pas de bibliothèque pour le stocker.

C'est ainsi qu'est né le projet Jakarta Commons, dans lequel des composants Java ont été ajoutés (principalement basés sur du code existant). Le projet a ensuite été renommé Apache Commons.

Plus largement, Apache Commons est "une grande collection de petits utilitaires Java". Il est utilisé dans de nombreux projets open source.

Les utilitaires Apache Commons sont au cœur de projets tels que Apache Tomcat, Struts, Hibernate et autres.

Bien sûr, tout cela peut être connecté manuellement, sans système de build (Maven, Gradle), mais nous ne le ferons pas et les ajouterons simplement à notre projet.

Pour travailler avec Maven, ajoutez d'abord la dépendance appropriée :

<dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-lang3</artifactId>
   <version>${apache.common.version}</version>
</dependency>

${apache.common.version} est la version de cette bibliothèque.

Pour Gradle (Groovy):

implementation 'org.apache.commons:commons-lang3:3.12.0'

Bibliothèques Apache Commons populaires

Voici une liste des classes et méthodes les plus utilisées :

Apache Commons : langue

Cette bibliothèque contient les packages suivants :


Packages
org.apache.commons.lang
org.apache.commons.lang.builder
org.apache.commons.lang.enum
org.apache.commons.lang.enums
org.apache.commons.lang.exception
org.apache.commons.lang.math
org.apache.commons.lang.mutable
org.apache.commons.lang.reflect
org.apache.commons.lang.text
org.apache.commons.lang.time

Ici, vous pouvez facilement et rapidement travailler avec les chaînes, la réflexion, la sérialisation, les objets et le système. Notons les méthodes les plus utilisées :

StringUtils

Un grand nombre de méthodes pour manipuler les chaînes.

  • is(Not)Blank/Empty(String) - il est temps d'oublier ce type de contrôle : if (s!=null && s.trim().length()>0) , et il y a un bon remplacement ici

StringEscapeUtils

  • (un)escapeSql(String) - Remplacer PreparedStatment
  • (un)escapeHtml(String) - pour traiter les valeurs du HTML

ToStringBuilder

  • reflectionToString(Object) est une implémentation de toString() basée sur la réflexion. Lorsque vous supprimez un champ à l'aide de la réflexion, le résultat de la méthode change.

EqualsBuilder & HashCodeBuilder

  • reflectionEquals/HashCode(Object) est un bon remplacement pour la génération automatique avec son propre avantage : ces deux méthodes prennent en compte les changements structurels de l'objet pendant le fonctionnement, par exemple, l'ajout de champs

ExceptionUtils

  • getFullStackTrace(Throwable) - affiche l'intégralité de StackTrace sous forme de chaîne

Apache Commons : Collections

Packages
org.apache.commons.collections4
org.apache.commons.collections4.bag
org.apache.commons.collections4.bidimap
org.apache.commons.collections4.collection
org.apache.commons.collections4.comparators
org.apache.commons.collections4.functors
org.apache.commons.collections4.iterators
org.apache.commons.collections4.keyvalue
org.apache.commons.collections4.list
org.apache.commons.collections4.map
org.apache.commons.collections4.multimap
org.apache.commons.collections4.multiset
org.apache.commons.collections4.properties
org.apache.commons.collections4.queue
org.apache.commons.collections4.sequence
org.apache.commons.collections4.set
org.apache.commons.collections4.splitmap
org.apache.commons.collections4.trie
org.apache.commons.collections4.trie.analyzer

Une bibliothèque qui complète parfaitement le Java SE Collections Framework.

CollectionUtils est une classe pour un travail pratique avec les collections :

    filter/find(Collection, Predicate) - filtrage et recherche par prédicat forAllDo(Collection, Closure) - effectue Closure pour chaque élément, mais cette méthode est obsolète , utilisez Iterator.forEach() is(Not)Empty(Collection) - vous permet ne pas vérifier à null avant d'appeler isEqualCollection(Collection, Collection) - aide à comparer deux collections

Il existe également de nombreuses autres classes de différents niveaux d'utilité. Ici et ci-dessous, je liste les plus couramment utilisés uniquement dans mon cas.

Apache Commons : OI

Packages
org.apache.commons.io
org.apache.commons.io.comparator
org.apache.commons.io.file
org.apache.commons.io.file.spi
org.apache.commons.io.filefilter
org.apache.commons.io.function
org.apache.commons.io.input
org.apache.commons.io.input.buffer
org.apache.commons.io.monitor
org.apache.commons.io.output
org.apache.commons.io.serialization

De plus, cela aide à travailler avec des fichiers en Java :

FileUtils

  • copyDirectory(File, File) - copier des répertoires
  • copyFile(Fichier, Fichier) - copier des fichiers
  • listFiles(File, String[], boolean) - liste les fichiers par extension et récursivement
  • readFileToString(Fichier, Chaîne)
  • writeStringToFile(Fichier, Chaîne)

IOUtils

  • closeQuietly(Reader/Writer/InputStream/OutputStream) - ferme le flux de données
  • copy(InputStream, OutputStream) - copie d'un flux à un autre