JavaRush /Kurslar /All lectures for UZ purposes /Apache loyihasi bilan tanishuv

Apache loyihasi bilan tanishuv

All lectures for UZ purposes
Daraja, Dars
Mavjud

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

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION