Apache Commons bilan tanishuv
Albatta, tarixdan boshlaymiz!
Hammasi 1999-yilda Apache Software Foundation (keyinroq ASF) nomidan "Apache Group" ro'yxatga olinishi bilan boshlandi. Fond tomonidan qo'llab-quvvatlangan loyiha 1995-1999 yillar oralig'ida yaratilgan Apache HTTPD Web Server edi.
Bunda Jakarta loyihasi (Jakarta Project) ham xuddi shunday bo'lib, Sun Microsystems, IBM, Oracle va Apachedan yigitlar hamkorligi natijasida paydo bo'lgan. Va 2001-yil davomida ishlab chiquvchilar jamoasi bir xil funksiyalarni ko'p marta yozayotganliklarini sezib qolishdi, ba'zida ular kodlarini bir-birlaridan nusxa ko'chirishardi. Bunday kod andoza deb ataladi. Ular ishlab chiquvchilarga yordam beradigan ko'p miqdorda kod to'plashga muvaffaq bo'lishdi, lekin uni saqlash uchun kutubxona yo'q edi.
Shunday qilib, Jakarta Commons loyihasi paydo bo'ldi, unga Java komponentlari (asosan mavjud kod asosida) qo'shildi. Keyinchalik loyiha Apache Commons deb o'zgartirildi.
Rostini aytganda, Apache Commons - bu "kichik Java-foydali dasturlarining katta to'plami". U ochiq manba kodli ko'plab loyihalarda ishlatiladi.
Apache Commons utilitalari Apache Tomcat, Struts, Hibernate va boshqalar kabi loyihalar asosida yotadi.
Albatta, bularni hammasini qo'l bilan, qurilish tizimisiz (Maven, Gradle) ham ulash mumkin, lekin biz buni qilmaymiz va ularni loyihamizga qo'shamiz.
Maven bilan ishlash uchun avval mos keladigan dependence qo'shamiz:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${apache.common.version}</version>
</dependency>
Bu yerda ${apache.common.version} — bu kutubxonaning versiyasi.
Gradle (Groovy) uchun:
implementation 'org.apache.commons:commons-lang3:3.12.0'
Mashhur Apache Commons kutubxonalari
Mana eng ko'p ishlatiladigan sinflar va metodlar ro'yxati:
Apache Commons: Lang
Ushbu kutubxonada quyidagi paketlar mavjud:
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
Bu yerda qatorlar, reflection, serialization, obyektlar va tizim bilan qulay va tezkor ishlash mumkin. Eng ko'p ishlatiladigan metodlarni qayd etamiz:
StringUtils
Qatorlar bilan manipulyatsiya qilish uchun juda ko'p metodlar mavjud.
- is(Not)Blank/Empty(String) — bunday turdagi tekshiruvdan voz kechish if (s!=null && s.trim().length()>0), bu yerda yaxshi o'rin bosuvchi mavjud
StringEscapeUtils
- (un)escapeSql(String) — PreparedStatment o'rniga qo'llaniladi
- (un)escapeHtml(String) — HTML-dan qiymatlarni qayta ishlash uchun
ToStringBuilder
- reflectionToString(Object) — reflaksiya asoslangan toString()ning amalga oshirilishi. Biror maydon reflaksiya orqali o'chirilganda, metod natijasi o'zgaradi.
EqualsBuilder & HashCodeBuilder
- reflectionEquals/HashCode(Object) — avtomatik generatsiyaga yaxshi o'rin bosuvchi va o'z pluslariga ega: bu ikki metod obyektning tuzilmaning o'zgarishlarini, masalan, maydonlar qo'shilishini hisobga oladi.
ExceptionUtils
- getFullStackTrace(Throwable) — butun StackTrace'ni qator sifatida chiqarish
Apache Commons: Collections
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 Frameworkni ajoyib tarzda to'ldiruvchi kutubxona.
CollectionUtils — kolleksiyalar bilan qulay ishlash uchun sinf:
-
filter/find(Collection, Predicate) — predikat bo'yicha filtr va qidiruv
forAllDo(Collection, Closure) — har bir element uchun Closure bajarayotgan, lekin bu metod
deprecated,
Iterator.forEach() o'rniga foydalaning
is(Not)Empty(Collection) — chaqirishdan oldin nullni tekshirish shart emas
isEqualCollection(Collection, Collection) — ikki kolleksiyani taqqoslashga yordam beradi
Shuningdek, turli darajadagi foyda keltiradigan ko'plab boshqa sinflar mavjud. Shu yerda va keyingi joylarda men o'zimda eng ko'p ishlatiladiganlarini eslatib o'tdim.
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
Javada fayllar bilan ishlashni yanada qulayroq qiladi:
FileUtils
- copyDirectory(File, File) — papkalarni nusxalash
- copyFile(File, File) — fayllarni nusxalash
- listFiles(File, String[], boolean) — kengaytma va rekursiv bo'yicha fayllar ro'yxati
- readFileToString(File, String)
- writeStringToFile(File, String)
IOUtils
- closeQuietly(Reader/Writer/InputStream/OutputStream) — ma'lumot oqimini yopadi
- copy(InputStream, OutputStream) — bir oqimdan boshqasiga nusxalash
GO TO FULL VERSION