Introduksjon til Apache Commons

La oss selvfølgelig begynne med historien!

Det hele startet i 1999 med registreringen av "Apache Group" på vegne av Apache Software Foundation (ASF). Prosjektet støttet av stiftelsen var Apache HTTPD Web Server opprettet mellom 1995 og 1999.

Det samme var Jakarta-prosjektet (Jakarta-prosjektet), som dukket opp som et resultat av samarbeidet mellom Sun Microsystems, IBM, Oracle og gutta fra Apache. Og i 2001, under arbeidet, la utviklingsteamet merke til at de ofte skriver den samme funksjonaliteten, noen ganger kopierer de den ganske enkelt fra hverandre. Slik kode kalles boilerplate. De klarte å samle en stor mengde kode som hjalp utviklere, men det var ikke noe bibliotek til å lagre den.

Slik ble Jakarta Commons-prosjektet født, der Java-komponenter ble lagt til (for det meste basert på eksisterende kode). Prosjektet ble senere omdøpt til Apache Commons.

Mer generelt er Apache Commons "en stor samling av små Java-verktøy". Det brukes i mange åpen kildekode-prosjekter.

Apache Commons-verktøy er kjernen i prosjekter som Apache Tomcat, Struts, Hibernate og andre.

Selvfølgelig kan alt dette kobles til manuelt, uten byggesystem (Maven, Gradle), men vi vil ikke gjøre dette og bare legge dem til prosjektet vårt.

For å jobbe med Maven må du først legge til den aktuelle avhengigheten:

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

Der ${apache.common.version} er versjonen av dette biblioteket.

For Gradle (Groovy):

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

Populære Apache Commons-biblioteker

Her er en liste over de mest brukte klassene og metodene:

Apache Commons: Lang

Dette biblioteket inneholder følgende pakker:


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

Her kan du enkelt og raskt jobbe med strenger, refleksjon, serialisering, objekter og systemet. La oss merke oss de mest brukte metodene:

StringUtils

Et stort antall metoder for å manipulere strenger.

  • is(Not)Blank/Empty(String) - det er på tide å glemme denne typen sjekk: if (s!=null && s.trim().length()>0) , og det er en god erstatning her

StringEscapeUtils

  • (un)escapeSql(String) - Erstatt PreparedStatment
  • (un)escapeHtml(String) - for å behandle verdier fra HTML

ToStringBuilder

  • reflectionToString(Object) er en implementering av toString() basert på refleksjon. Når du fjerner et felt ved hjelp av refleksjon, vil resultatet av metoden endres.

EqualsBuilder og HashCodeBuilder

  • reflectionEquals/HashCode(Object) er en god erstatning for automatisk generering med sin egen fordel: disse to metodene tar hensyn til strukturelle endringer i objektet under drift, for eksempel ved å legge til felt

UnntakUtils

  • getFullStackTrace(Throwable) - skriv ut hele StackTrace som en streng

Apache Commons: Samlinger

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

Et bibliotek som perfekt utfyller Java SE Collections Framework.

CollectionUtils er en klasse for praktisk arbeid med samlinger:

    filter/finn(Collection, Predicate) - filtrering og søk etter predikat forAllDo(Collection, Closure) - utfører Closure for hvert element, men denne metoden er utdatert , bruk Iterator.forEach() is(Not)Empty(Collection) - lar deg ikke å sjekke til null før du ringer isEqualCollection(Collection, Collection) - hjelper å sammenligne to samlinger

Det er også mange andre klasser med varierende nyttenivå. Her og nedenfor lister jeg opp de mest brukte rent i mitt tilfelle.

Apache Commons:IO

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

I tillegg hjelper det å jobbe med filer i Java:

FileUtils

  • copyDirectory(Fil, Fil) - kopier kataloger
  • copyFile(File, File) - kopier filer
  • listFiles(File, String[], boolean) - lister filer etter utvidelse og rekursivt
  • readFileToString(File, String)
  • writeStringToFile(File, String)

IOUtils

  • closeQuietly(Reader/Writer/InputStream/OutputStream) - lukker datastrømmen
  • copy(InputStream, OutputStream) - kopier fra en strøm til en annen