Az Apache Commons bemutatása

Természetesen kezdjük a történelemmel!

Az egész 1999-ben kezdődött, amikor az Apache Software Foundation (ASF) nevében bejegyezték az "Apache csoportot". Az alapítvány által támogatott projekt az 1995 és 1999 között készült Apache HTTPD Web Server volt.

Ugyanez volt a Jakarta Project (Jakarta projekt), amely a Sun Microsystems, az IBM, az Oracle és az Apache srácok együttműködésének eredményeként jelent meg. 2001-ben pedig a munka során a fejlesztőcsapat észrevette, hogy gyakran ugyanazt a funkcionalitást írják, néha egyszerűen másolják egymásról. Az ilyen kódot boilerplate-nek nevezik. Sikerült nagy mennyiségű kódot összegyűjteniük, ami segítette a fejlesztőket, de nem volt könyvtár a tárolására.

Így született meg a Jakarta Commons projekt, melybe Java komponensek kerültek (többnyire meglévő kód alapján). A projektet később Apache Commons-ra keresztelték át.

Tágabb értelemben az Apache Commons „kis Java segédprogramok nagy gyűjteménye”. Számos nyílt forráskódú projektben használják.

Az Apache Commons segédprogramok olyan projektek középpontjában állnak, mint az Apache Tomcat, a Struts, a Hibernate és mások.

Természetesen mindez manuálisan is csatlakoztatható, build rendszer nélkül (Maven, Gradle), de ezt nem fogjuk megtenni, hanem csak hozzáadjuk őket a projektünkhöz.

A Mavennel való együttműködéshez először adja hozzá a megfelelő függőséget:

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

Ahol a ${apache.common.version} ennek a könyvtárnak a verziója.

Gradle (Groovy):

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

Népszerű Apache Commons könyvtárak

Itt található a leggyakrabban használt osztályok és metódusok listája:

Apache Commons: Lang

Ez a könyvtár a következő csomagokat tartalmazza:


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

Itt kényelmesen és gyorsan dolgozhat sztringekkel, tükrözéssel, szerializálással, objektumokkal és a rendszerrel. Nézzük meg a leggyakrabban használt módszereket:

StringUtils

Számos módszer a karakterláncok manipulálására.

  • is(Not)Blank/Empty(String) - ideje elfelejteni ezt a fajta ellenőrzést: if (s!=null && s.trim().length()>0) , és van itt egy jó csere

StringEscapeUtils

  • (un)escapeSql(String)A PreparedStatment cseréje
  • (un)escapeHtml(String) - a HTML-ből származó értékek feldolgozásához

ToStringBuilder

  • A reflectionToString(Object) a toString() reflexión alapuló megvalósítása . Ha eltávolít egy mezőt tükrözéssel, a módszer eredménye megváltozik.

EqualsBuilder és HashCodeBuilder

  • A reflectionEquals/HashCode(Object) jó helyettesítője az automatikus generálásnak, megvan a maga előnye: ez a két módszer figyelembe veszi az objektum működés közbeni szerkezeti változásait, például mezők hozzáadását.

ExceptionUtils

  • getFullStackTrace(Throwable) - a teljes StackTrace-t karakterláncként adja ki

Apache Commons: Gyűjtemények

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

Egy könyvtár, amely tökéletesen kiegészíti a Java SE Collections Framework-et.

A CollectionUtils egy osztály a gyűjteményekkel való kényelmes munkavégzéshez:

    filter/find(Gyűjtemény, Predikátum) - szűrés és keresés predikátum alapján forAllDo(Collection, Closure) - minden elemnél elvégzi a lezárást, de ez a módszer elavult , használja az Iterator.forEach() is(Not)Empty(Collection) - lehetővé teszi, hogy az isEqualCollection(Gyűjtemény, Gyűjtemény) hívása előtt ne ellenőrizze a nullát – segít két gyűjtemény összehasonlításában

Számos más osztály is létezik, amelyek hasznossági szintjei eltérőek. Itt és alább felsorolom a leggyakrabban használtakat, pusztán az én esetemben.

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

Ezenkívül segít a Java fájlokkal való munkában:

FileUtils

  • copyDirectory(Fájl, Fájl) - könyvtárak másolása
  • copyFile(Fájl, Fájl) - fájlok másolása
  • listFiles(Fájl, String[], logikai érték) - listázza ki a fájlokat kiterjesztéssel és rekurzívan
  • readFileToString(fájl, karakterlánc)
  • writeStringToFile(fájl, karakterlánc)

IOUtils

  • closeQuietly(Reader/Writer/InputStream/OutputStream) – bezárja az adatfolyamot
  • másolás (InputStream, OutputStream) - másolás egyik adatfolyamból a másikba