Einführung in Apache Commons

Beginnen wir natürlich mit der Geschichte!

Alles begann 1999 mit der Registrierung der „Apache Group“ im Auftrag der Apache Software Foundation (ASF). Das von der Stiftung unterstützte Projekt war der zwischen 1995 und 1999 erstellte Apache HTTPD-Webserver.

Dasselbe galt für das Jakarta-Projekt (Jakarta-Projekt), das als Ergebnis der Zusammenarbeit von Sun Microsystems, IBM, Oracle und den Jungs von Apache entstand. Und im Jahr 2001 bemerkte das Entwicklungsteam während der Arbeit, dass sie oft die gleichen Funktionen schreiben, manchmal einfach voneinander kopieren. Ein solcher Code wird Boilerplate genannt. Es gelang ihnen, eine große Menge Code zu sammeln, der den Entwicklern half, aber es gab keine Bibliothek, um ihn zu speichern.

So entstand das Jakarta Commons-Projekt, bei dem Java-Komponenten hinzugefügt wurden (meist basierend auf vorhandenem Code). Das Projekt wurde später in Apache Commons umbenannt.

Im weiteren Sinne ist Apache Commons „eine große Sammlung kleiner Java-Dienstprogramme“. Es wird in vielen Open-Source-Projekten verwendet.

Apache Commons-Dienstprogramme sind das Herzstück von Projekten wie Apache Tomcat, Struts, Hibernate und anderen.

Natürlich kann dies alles manuell und ohne Build-System (Maven, Gradle) verbunden werden, aber wir werden dies nicht tun und sie einfach zu unserem Projekt hinzufügen.

Um mit Maven zu arbeiten, fügen Sie zunächst die entsprechende Abhängigkeit hinzu:

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

Wobei ${apache.common.version} die Version dieser Bibliothek ist.

Für Gradle (Groovy):

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

Beliebte Apache Commons-Bibliotheken

Hier ist eine Liste der am häufigsten verwendeten Klassen und Methoden:

Apache Commons:Lang

Diese Bibliothek enthält die folgenden Pakete:


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

Hier können Sie bequem und schnell mit Strings, Reflektion, Serialisierung, Objekten und dem System arbeiten. Beachten wir die am häufigsten verwendeten Methoden:

StringUtils

Eine große Anzahl von Methoden zum Bearbeiten von Zeichenfolgen.

  • is(Not)Blank/Empty(String) – es ist an der Zeit, diese Art der Prüfung zu vergessen: if (s!=null && s.trim().length()>0) , und hier gibt es einen guten Ersatz

StringEscapeUtils

  • (un)escapeSql(String)PreparedStatment ersetzen
  • (un)escapeHtml(String) – um Werte aus HTML zu verarbeiten

ToStringBuilder

  • reflexionToString(Object) ist eine Implementierung von toString() basierend auf Reflexion. Wenn Sie ein Feld mithilfe der Reflektion entfernen, ändert sich das Ergebnis der Methode.

EqualsBuilder und HashCodeBuilder

  • reflexionEquals/HashCode(Object) ist ein guter Ersatz für die automatische Generierung mit eigenem Vorteil: Diese beiden Methoden berücksichtigen strukturelle Änderungen im Objekt während des Betriebs, beispielsweise das Hinzufügen von Feldern

ExceptionUtils

  • getFullStackTrace(Throwable) – gibt den gesamten StackTrace als String aus

Apache Commons: Sammlungen

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

Eine Bibliothek, die das Java SE Collections Framework perfekt ergänzt.

CollectionUtils ist eine Klasse zum komfortablen Arbeiten mit Sammlungen:

    filter/find(Collection, Predicate) – Filtern und Suchen nach Prädikat forAllDo(Collection, Closure) – führt den Abschluss für jedes Element durch, aber diese Methode ist veraltet . Verwenden Sie Iterator.forEach() is(Not)Empty(Collection) – ermöglicht Ihnen Vor dem Aufruf von isEqualCollection(Collection, Collection) nicht auf Null prüfen – hilft beim Vergleichen zweier Sammlungen

Es gibt auch viele andere Klassen mit unterschiedlichem Nutzen. Hier und unten liste ich die in meinem Fall am häufigsten verwendeten auf.

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

Darüber hinaus hilft es, mit Dateien in Java zu arbeiten:

FileUtils

  • copyDirectory(File, File) – Verzeichnisse kopieren
  • copyFile(Datei, Datei) – Dateien kopieren
  • listFiles(File, String[], boolean) – Dateien nach Erweiterung und rekursiv auflisten
  • readFileToString(Datei, String)
  • writeStringToFile(Datei, String)

IOUtils

  • closeQuietly(Reader/Writer/InputStream/OutputStream) – schließt den Datenstrom
  • copy(InputStream, OutputStream) – von einem Stream in einen anderen kopieren