Introducere în Apache Commons

Desigur, să începem cu istoria!

Totul a început în 1999 odată cu înregistrarea „Apache Group” în numele Apache Software Foundation (ASF). Proiectul susținut de fundație a fost Apache HTTPD Web Server creat între 1995 și 1999.

La fel a fost și Proiectul Jakarta (proiectul Jakarta), care a apărut ca urmare a colaborării dintre Sun Microsystems, IBM, Oracle și băieții de la Apache. Și în 2001, în timpul lucrului, echipa de dezvoltare a observat că scriu adesea aceeași funcționalitate, uneori o copiază pur și simplu una de la alta. Un astfel de cod se numește boilerplate. Ei au reușit să colecteze o cantitate mare de cod care a ajutat dezvoltatorii, dar nu a existat nicio bibliotecă pentru a-l stoca.

Așa s-a născut proiectul Jakarta Commons, în care au fost adăugate componente Java (în mare parte bazate pe codul existent). Proiectul a fost ulterior redenumit Apache Commons.

Mai larg, Apache Commons este „o colecție mare de mici utilitare Java”. Este folosit în multe proiecte open source.

Utilitarele Apache Commons sunt în centrul proiectelor precum Apache Tomcat, Struts, Hibernate și altele.

Desigur, toate acestea pot fi conectate manual, fără un sistem de construcție (Maven, Gradle), dar nu vom face acest lucru și doar le vom adăuga la proiectul nostru.

Pentru a lucra cu Maven, mai întâi adăugați dependența corespunzătoare:

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

Unde ${apache.common.version} este versiunea acestei biblioteci.

Pentru Gradle (Groovy):

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

Biblioteci populare Apache Commons

Iată o listă cu cele mai utilizate clase și metode:

Apache Commons:Lang

Această bibliotecă conține următoarele pachete:


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

Aici puteți lucra convenabil și rapid cu șiruri, reflexie, serializare, obiecte și sistemul. Să notăm cele mai utilizate metode:

StringUtils

Un număr mare de metode de manipulare a șirurilor.

  • is(Not)Blank/Empty(String) - este timpul să uităm de acest tip de verificare: if (s!=null && s.trim().length()>0) , și există un înlocuitor bun aici

StringEscapeUtils

  • (un)escapeSql(String) - Înlocuiește PreparedStatment
  • (un)escapeHtml(String) - pentru a procesa valori din HTML

ToStringBuilder

  • reflectionToString(Object) este o implementare a lui toString() bazată pe reflectare. Când eliminați un câmp folosind reflexia, rezultatul metodei se va schimba.

EqualsBuilder și HashCodeBuilder

  • reflectionEquals/HashCode(Object) este un bun înlocuitor pentru generarea automată cu propriul avantaj: aceste două metode iau în considerare modificările structurale ale obiectului în timpul funcționării, de exemplu, adăugarea de câmpuri

ExceptionUtils

  • getFullStackTrace(Throwable) - scoate întregul StackTrace ca șir

Apache Commons: Colecții

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

O bibliotecă care completează perfect cadrul Java SE Collections Framework.

CollectionUtils este o clasă pentru lucrul convenabil cu colecțiile:

    filter/find(Collection, Predicate) - filtrarea și căutarea după predicat forAllDo(Collection, Closure) - efectuează închidere pentru fiecare element, dar această metodă este depreciată , utilizați Iterator.forEach() is(Not)Empty(Collection) - vă permite a nu verifica la null înainte de a apela isEqualCollection(Colecție, colecție) - ajută la compararea a două colecții

Există, de asemenea, multe alte clase cu diferite niveluri de utilitate. Aici și mai jos am enumerat cele mai frecvent utilizate exclusiv în cazul meu.

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

În plus, vă ajută să lucrați cu fișiere în Java:

FileUtils

  • copyDirectory(Fișier, Fișier) - copiați directoare
  • copyFile(Fișier, Fișier) - copiați fișiere
  • listFiles(File, String[], boolean) - listează fișierele după extensie și recursiv
  • readFileToString(Fișier, șir)
  • writeStringToFile(Fișier, șir)

IOUtils

  • closeQuietly(Reader/Writer/InputStream/OutputStream) - închide fluxul de date
  • copy(InputStream, OutputStream) - copiați dintr-un flux în altul