Apache Commons'a Giriş

Tabii ki, tarihle başlayalım!

Her şey 1999 yılında Apache Software Foundation (ASF) adına "Apache Group"un tescil edilmesiyle başladı. Vakfın desteklediği proje, 1995 ile 1999 yılları arasında oluşturulan Apache HTTPD Web Sunucusu idi.

Sun Microsystems, IBM, Oracle ve Apache'den gelen adamların işbirliği sonucunda ortaya çıkan Jakarta Projesi (Jakarta projesi) de aynısıydı. Ve 2001'de, çalışma sırasında, geliştirme ekibi genellikle aynı işlevi yazdıklarını, bazen basitçe birbirlerinden kopyaladıklarını fark etti. Böyle bir koda standart kod denir. Geliştiricilere yardımcı olan büyük miktarda kod toplamayı başardılar, ancak bunları saklayacak bir kitaplık yoktu.

Java bileşenlerinin eklendiği (çoğunlukla mevcut koda dayalı olarak) Jakarta Commons projesi böyle doğdu. Proje daha sonra Apache Commons olarak yeniden adlandırıldı.

Daha genel olarak, Apache Commons “küçük Java yardımcı programlarından oluşan büyük bir koleksiyondur”. Birçok açık kaynak projede kullanılmaktadır.

Apache Commons yardımcı programları, Apache Tomcat, Struts, Hibernate ve diğerleri gibi projelerin merkezinde yer alır.

Tabii ki, tüm bunlar bir yapı sistemi (Maven, Gradle) olmadan manuel olarak bağlanabilir, ancak bunu yapmayacağız ve sadece projemize ekleyeceğiz.

Maven ile çalışmak için önce uygun bağımlılığı ekleyin:

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

${Apache.common.version} bu kitaplığın sürümüdür .

Kepçe (Harika) için:

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

Popüler Apache Commons Kitaplıkları

İşte en çok kullanılan sınıfların ve yöntemlerin bir listesi:

Apache Commons: Dil

Bu kütüphane aşağıdaki paketleri içerir:


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

Burada dizeler, yansıma, serileştirme, nesneler ve sistem ile rahat ve hızlı bir şekilde çalışabilirsiniz. En çok kullanılan yöntemleri not edelim:

StringUtils

Dizeleri işlemek için çok sayıda yöntem.

  • is(Not)Blank/Empty(String) - bu tür bir kontrolü unutmanın zamanı geldi: if (s!=null && s.trim().length()>0) ve burada iyi bir değiştirme var

StringEscapeUtils

  • (un)escapeSql(String) - PreparedStatment'i değiştir
  • (un)escapeHtml(String) - HTML'den değerleri işlemek için

ToStringBuilder

  • ReflectionToString(Object), yansımaya dayalı bir toString() uygulamasıdır . Yansıma kullanarak bir alanı kaldırdığınızda, yöntemin sonucu değişecektir.

EqualsBuilder ve HashCodeBuilder

  • ReflectionEquals/HashCode(Object), otomatik oluşturma için iyi bir alternatiftir ve kendi avantajına sahiptir: bu iki yöntem, işlem sırasında nesnedeki yapısal değişiklikleri, örneğin alan eklemeyi dikkate alır.

İstisna Utils

  • getFullStackTrace(Throwable) - tüm StackTrace'i bir dize olarak çıktılar

Apache Commons: Koleksiyonlar

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

Java SE Collections Framework'ü mükemmel şekilde tamamlayan bir kitaplık.

CollectionUtils , koleksiyonlarla rahat çalışmaya yönelik bir sınıftır:

    filter/find(Collection, Predicate) - yüklemeye göre filtreleme ve arama forAllDo(Collection, Closure) - her öğe için Kapatma gerçekleştirir, ancak bu yöntem kullanımdan kaldırılmıştır , Iterator.forEach() is(Not)Empty(Collection) kullanın - size izin verir isEqualCollection(Collection, Collection) çağrılmadan önce null olarak kontrol edilmemesi - iki koleksiyonun karşılaştırılmasına yardımcı olur

Farklı düzeylerde fayda sağlayan başka birçok sınıf da vardır. Burada ve aşağıda, yalnızca benim durumumda en sık kullanılanları listeliyorum.

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

Ek olarak, Java'daki dosyalarla çalışmaya yardımcı olur:

Dosya Utils

  • copyDirectory(File, File) - dizinleri kopyala
  • copyFile(Dosya, Dosya) - dosyaları kopyala
  • listFiles(File, String[], boolean) - dosyaları uzantıya göre ve yinelemeli olarak listeler
  • readFileToString(Dosya, Dize)
  • writeStringToFile(Dosya, Dize)

IOUtils

  • closeQuietly(Reader/Writer/InputStream/OutputStream) - veri akışını kapatır
  • copy(InputStream, OutputStream) - bir akıştan diğerine kopyala