Pengantar Apache Commons

Tentu saja, mari kita mulai dengan sejarah!

Semuanya dimulai pada tahun 1999 dengan pendaftaran "Grup Apache" atas nama Apache Software Foundation (ASF). Proyek yang didukung oleh yayasan adalah Server Web HTTPD Apache yang dibuat antara tahun 1995 dan 1999.

Begitu pula Proyek Jakarta (proyek Jakarta), yang muncul sebagai hasil kolaborasi Sun Microsystems, IBM, Oracle, dan orang-orang dari Apache. Dan pada tahun 2001, selama bekerja, tim pengembangan memperhatikan bahwa mereka sering menulis fungsi yang sama, terkadang mereka hanya menyalinnya satu sama lain. Kode seperti itu disebut boilerplate. Mereka berhasil mengumpulkan sejumlah besar kode yang membantu pengembang, tetapi tidak ada perpustakaan untuk menyimpannya.

Beginilah proyek Jakarta Commons lahir, di mana komponen Java ditambahkan (kebanyakan berdasarkan kode yang ada). Proyek ini kemudian berganti nama menjadi Apache Commons.

Secara lebih luas, Apache Commons adalah "kumpulan besar utilitas Java kecil". Ini digunakan di banyak proyek sumber terbuka.

Utilitas Apache Commons berada di jantung proyek seperti Apache Tomcat, Struts, Hibernate, dan lainnya.

Tentu saja, semua ini dapat dihubungkan secara manual, tanpa sistem build (Maven, Gradle), tetapi kami tidak akan melakukan ini dan hanya menambahkannya ke proyek kami.

Untuk bekerja dengan Maven, pertama-tama tambahkan dependensi yang sesuai:

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

Di mana ${apache.common.version} adalah versi pustaka ini.

Untuk Gradle (Asyik):

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

Perpustakaan Apache Commons Populer

Berikut adalah daftar kelas dan metode yang paling sering digunakan:

Apache Commons: Lang

Perpustakaan ini berisi paket-paket berikut:


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

Di sini Anda dapat dengan mudah dan cepat bekerja dengan string, refleksi, serialisasi, objek, dan sistem. Perhatikan metode yang paling banyak digunakan:

StringUtils

Sejumlah besar metode untuk memanipulasi string.

  • is(Not)Blank/Empty(String) - saatnya untuk melupakan jenis pemeriksaan ini: if (s!=null && s.trim().length()>0) , dan ada pengganti yang bagus di sini

StringEscapeUtils

  • (un)escapeSql(String) - Ganti PreparedStatment
  • (un)escapeHtml(String) - untuk memproses nilai dari HTML

ToStringBuilder

  • reflectionToString(Object) adalah implementasi dari toString() berdasarkan refleksi. Saat Anda menghapus bidang menggunakan refleksi, hasil metode akan berubah.

Sama dengan Builder & HashCodeBuilder

  • reflectionEquals/HashCode(Object) adalah pengganti yang baik untuk pembuatan otomatis dengan keunggulannya sendiri: kedua metode ini memperhitungkan perubahan struktural pada objek selama operasi, misalnya, menambahkan bidang

ExceptionUtils

  • getFullStackTrace(Throwable) - menampilkan seluruh StackTrace sebagai string

Apache Commons: Koleksi

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

Perpustakaan yang melengkapi Kerangka Koleksi Java SE dengan sempurna.

CollectionUtils adalah kelas untuk pekerjaan mudah dengan koleksi:

    filter/find(Collection, Predicate) - memfilter dan mencari berdasarkan predikat forAllDo(Collection, Closure) - melakukan Penutupan untuk setiap elemen, tetapi metode ini sudah usang , gunakan Iterator.forEach() is(Not)Empty(Collection) - memungkinkan Anda tidak memeriksa ke null sebelum memanggil isEqualCollection(Collection, Collection) - membantu membandingkan dua koleksi

Ada juga banyak kelas lain dari berbagai tingkat utilitas. Di sini dan di bawah saya daftar murni yang paling umum digunakan dalam kasus saya.

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

Selain itu, ada baiknya bekerja dengan file di Java:

FileUtils

  • copyDirectory(File, File) - menyalin direktori
  • copyFile(File, File) - salin file
  • listFiles(File, String[], boolean) - daftar file dengan ekstensi dan secara rekursif
  • bacaFileToString(File, String)
  • writeStringToFile(File, String)

sampai

  • closeQuietly(Reader/Writer/InputStream/OutputStream) - menutup aliran data
  • copy(InputStream, OutputStream) - salin dari satu aliran ke aliran lainnya