O`ZBEKISTON RESPUBLIKASI AXBOROT
TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI MUHAMMAD ALXORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
Mustaqil ish
Mavzu: Apache Common Collection
Guruh: 412-19
Bajardi: Abduraximov Fazliddin
Tekshirdi: Abdullaev Ulugbek
Toshkent – 2022
Apache Common Collection
Reja:
I Qism:
Kirish
II Asosiy qism:
Apache Common Collection tarixi
Foydalanish va xususiyatlari
Apache Common Collection asosidagi loyihalar
III Yakuniy qism:
Xulosa
Foydalanilgan adabiyotlar
Apache Commons bu Apache Software Foundation loyihasi boʻlib, avval Jakarta loyihasi doirasida. Commonsning maqsadi qayta foydalanish mumkin, ochiq kodli Java dasturiy ta'minotini taqdim etishdir. Commons uch qismdan iborat: to'g'ri, qum qutisi va harakatsiz. Commons Proper qayta foydalanish mumkin bo'lgan Java komponentlarini yaratish va saqlashga bag'ishlangan. Commons Proper - bu hamkorlik va almashish uchun joy bo'lib, u yerda Apache hamjamiyatidagi ishlab chiquvchilar Apache loyihalari va Apache foydalanuvchilari baham ko'radigan loyihalar ustida birgalikda ishlashlari mumkin. Commons ishlab chiquvchilari o'zlarining komponentlari boshqa dasturiy ta'minot kutubxonalariga minimal bog'liq bo'lishini ta'minlashga harakat qiladilar, bu komponentlar osongina joylashtirilishi mumkin. Bundan tashqari, Commons komponentlari o'z interfeyslarini iloji boricha barqaror ushlab turadi, shuning uchun Apache foydalanuvchilari, shuningdek, boshqa Apache loyihalari kelajakdagi o'zgarishlardan xavotirlanmasdan ushbu komponentlarni amalga oshirishlari mumkin. Commons Sandbox Commons ishtirokchilari hamkorlik qiladigan va Commons Proper dasturiga kiritilmagan loyihalar ustida tajriba o‘tkazadigan ish maydonini taqdim etadi. Commons aʼzolari Commons Proper’ga koʻtarilish uchun Sandbox’dagi loyihalarni qoʻllab-quvvatlaydi va ishlab chiquvchilar guruhlari Sandbox loyihalarini reklama standartlariga javob bermaguncha yaxshilash ustida ishlaydi.
Java Collections Framework JDK 1.2 da katta qo'shimcha bo'ldi. U eng muhim Java ilovalarini ishlab chiqishni tezlashtiradigan ko'plab kuchli ma'lumotlar tuzilmalarini qo'shdi. O'shandan beri u Java-da yig'ish bilan ishlash uchun tan olingan standartga aylandi.Commons-Collections yangi interfeyslar, ilovalar va yordamchi dasturlarni taqdim etish orqali JDK sinflarini qurishga intiladi. Ko'p xususiyatlar mavjud, jumladan:Har bir ob'ektning bir nechta nusxalariga ega bo'lgan to'plamlar uchun sumka interfeysi.Xaritalar uchun BidiMap interfeysi, uni qiymatdan kalitga va kalitga qarab qidirish mumkin.MapIterator interfeysi xaritalar orqali oddiy va tez takrorlashni ta'minlaydi.To'plamga qo'shilgan har bir ob'ektni o'zgartiradigan o'zgartiruvchi dekorativlar.Bir nechta to'plamlarni bir xil ko'rinishga olib keladigan kompozit to'plamlar.Buyurtma elementlarini saqlaydigan tartiblangan xaritalar va to'plamlar, jumladan LRU asosidagi xarita qo'shiladi.Kalitlar va yoki qiymatlarni yaqin nazorat ostida axlat yig'ish imkonini beruvchi mos yozuvlar xaritasi.Ko'pgina taqqoslash dasturlari. Ko'p iterator ilovalariMassiv va sanablardan tortib to to'plamlargacha bo'lgan adapter sinflari
Birlashma, kesishish va yopish kabi to'plamlarning tipik to'plam nazariyasi xususiyatlarini sinash yoki yaratish uchun yordamchi dasturlar.
Commons-Collections kundalik dasturlashga yordam beradigan ko'plab darslarni taqdim etadi.Commons-collections standart Java to'plamlariga o'xshash sinxronlashtirish uchun dizayn yondashuvidan foydalanadi. To'plamlar, xaritalar va sumkalarning turli xil ilovalari qo'shimcha sinxronizatsiyasiz xavfsiz emas. Collections'dagi mos synchronizeXXX usuli bu ilovalarni ko'p tarmoqli ilovada foydalanish uchun sinxronlashtirishning bir usuli hisoblanadi.
Umumiy to'plamlar tarixi
Commons-Collections vaqt o'tishi bilan rivojlanayotgan ochiq manbali loyihaning klassik namunasidir. Ushbu sahifada ba'zi asosiy bosqichlar ko'rsatilgan.
Collections 1.0 Jakartaning boshqa joylarida yozilgan turli xil Collection, Comparator, Iterator va Utility sinflarining yig'ilishi edi. Ushbu bosqichda komponent asosan hamma narsani birgalikda mavjud qilish orqali kodni qayta ishlatishga qaratilgan.
Barcha sinflar o'zlarining kichik paketiga ega bo'lgan komparatorlardan tashqari bitta paketga joylashtirildi.
Collections 2.0 o'sish jarayonini boshladi. Bag interfeysi turli ilovalar bilan qo'shildi. Bundan tashqari, qo'shimcha to'plamlarni amalga oshirish qo'shildi.
Barcha sinflar o'zlarining kichik paketiga ega bo'lgan komparatorlardan tashqari bitta paketga joylashtirildi.
To'plamlar 2.1 o'sishni yana oshirdi. Oldingi turli ilovalarni birlashtirgan Bufer interfeysi qo'shildi. Ko'p sonli dekorativlar o'zgarmas yoki sinxronlashtirilgan JDK dekorativlari kabi harakat qiladigan ichki sinflar sifatida qo'shildi.
Komponentning o'lchami oshgani sayin, iteratorlar o'zlarining kichik paketlariga bo'lingan. Shunday qilib, endi uchta paket mavjud edi: asosiy, taqqoslash va iterator.
Collections 3.0 18 oylik tanaffusdan keyin to'plamlarning qayta tug'ilishini ifodaladi. Ko'p, ko'p sinflar CVSga qo'shildi, lekin ibtidoiy va hodisalarni yaratuvchi sinflarni o'z ichiga olgan holda chiqarilmadi. To'plamlarni taqsimlash hajmini nazorat qilish uchun ular ikkita yangi loyihaga aylandi - ibtidoiy va voqealar.
BidiMap, MapIterator, ResettableIterator va KeyValue yangi interfeyslari qo'shildi. Bundan tashqari, mavjud to'plamlarning ko'plab yangi ilovalari, ayniqsa Xaritalar qo'shildi.
Ko'proq dekorativlar qo'shilganligi sababli, dekorativlar uchun yangi kichik paket yaratish to'g'risida qaror qabul qilindi (endi ichki sinflar yo'q). Biroq, sinfning bezakchi bo'lishi yoki bo'lmaganligi kolleksiyani topishda eng muhim bo'linma emasligi aniq bo'ldi. Buning natijasida va komponentdagi umumiy davomiy o'sish natijasida to'liq pastki paket tartibi tanlandi - har bir asosiy to'plam interfeysi uchun bitta kichik paket.
Aslini olganda, 3.0 versiyasi qayta ishlatilgan kollektsiyalarning "axlatxona" dan ushbu maqsad uchun mo'ljallangan komponentga o'tish natijasidir. Albatta, eskirishdan foydalangan holda barcha o'tishlar davomida orqaga qarab muvofiqlik saqlanib qoldi.
Collections 2.1.1 2.1 versiyasiga yamoq relizi edi. Afsuski, 3.0 versiyasi IteratorUtils sinfida ikkilik nomuvofiqlikni yaratdi. Ushbu yamoq 2.1.1 ni 3.1 bilan moslash imkonini beruvchi ish sifatida yaratilgan.
Collections 3.1 3.0-dagi ba'zi xatolarni tuzatdi va bir nechta yangi yaxshilanishlarni qo'shdi. Eng e'tiborga molik o'zgarish - bu har qanday indeksga kiritish va olib tashlash uchun yaxshi muvozanatlangan TreeList yangi ro'yxati. Boshqa o'zgarishlar Serializable va ReferenceIdentityMap-ni amalga oshiradigan ko'proq sinflarni o'z ichiga oladi.
Collections 3.2 birlashtirilgan xatolarni tuzatish va ba'zi yangi xususiyatlar. Ayniqsa, MultiValueMap - bu MultiHashMap-ning yangi yanada moslashuvchan ilovasi.
To'plamlar 3.2.1 Qayta qadoqlangan 3.2 versiyasi, OSGi yoqilgan.
To'plamlar 3.2.2 Funktor to'plamidagi xavfli sinflar uchun ketma-ketlikni qo'llab-quvvatlash sukut bo'yicha o'chirib qo'yilgan, chunki bundan masofaviy kodni bajarish hujumlari uchun foydalanish mumkin. Funksiyani qayta yoqish uchun "org.apache.commons.collections.enableUnsafeSerialization" tizim xususiyati "true"ga o'rnatilishi kerak. Xavfsiz deb topilgan sinflar: CloneTransformer, ForClosure, InstantiateFactory, InstantiateTransformer, InvokerTransformer, PrototypeCloneFactory, PrototypeSerializationFactory, WhileClosure. COLLECTIONS-580 tuzatildi. Boshqa xatolar tuzatildi.
Collections 4.0 Java 5 bilan taqdim etilgan yangi til xususiyatlarini, asosan generiklarni qo'llab-quvvatlash orqali to'plamlarning katta yangilanishini ifodaladi.
Put, Get va Trie yangi interfeyslari qo'shildi, Bufer interfeysi esa java.util.Queue bilan almashtirildi. Bundan tashqari, bir nechta yangi iteratorlar, shuningdek, Patricia Trie ilovasi qo'shildi.
Collections 4.1 4.0-dagi ba'zi xatolarni tuzatadi va bir nechta yangi yaxshilanishlarni qo'shadi. Eng e'tiborga molik o'zgarishlar MultiSet (umumiy Collection shartnomasiga to'liq mos bo'lgan Bag interfeysi o'rnini bosuvchi) va MultiValuedMapList (MultiMap interfeysi o'rnini bosuvchi) yangi interfeyslari hamda Iterable misollar uchun ravon API .
Collections 4.2 4.1-dagi ba'zi xatolarni tuzatadi va bir nechta yangi yaxshilanishlarni qo'shadi: platforma talabini Java 6 dan 7 ga yangilaydi, Java 9 mosligi uchun Automatic-Module-Name MANIFEST yozuvini qo'shadi va bir nechta yangi API qo'shadi.
Har bir asosiy to'plam interfeysi uchun Utility klassi taqdim etiladi. Shunday qilib, Set va SortedSet interfeyslari SetUtils tomonidan taqdim etiladi. Ushbu sinflar ushbu to'plam turi bilan ishlash uchun foydali usullarni taqdim etadi.
Ko'pgina usullar ikkita "root" to'plam yordam dasturida topilgan - CollectionUtils va MapUtils. Boshqa barcha yig'ish interfeyslari To'plam yoki Xaritani kengaytirgani uchun bu yordamchi dasturlardan keng foydalanish mumkin. Ularga kesishish, sanash, iteratsiya, funktor va matn terish operatsiyalari kiradi. Utility sinflar, shuningdek, JDK Collections sinfiga o'xshash tarzda kolleksiya dekoratorlari sinflariga kirishni ta'minlaydi.
JDK Map interfeysi har doim takrorlash qiyin bo'lgan. API foydalanuvchilari EntrySet yoki KeySet orqali takrorlashga majbur. Commons-Collections endi yangi interfeysni taqdim etadi - MapIterator, bu xaritalar orqali oddiy iteratsiyaga imkon beradi.
Buyurtma qilingan xaritalar
Buyurtmaga ega, lekin tartiblanmagan xaritalar uchun yangi interfeys taqdim etiladi - OrderedMap. Ikki dastur taqdim etiladi - LinkedMap va ListOrderedMap (dekorator). Ushbu interfeys xarita iteratorini qo'llab-quvvatlaydi va shuningdek, xarita bo'ylab oldinga va orqaga takrorlashga imkon beradi.
Ikki tomonlama xaritalar
Ikki tomonlama xaritalarni qo'llab-quvvatlash uchun yangi interfeys ierarxiyasi qo'shildi - BidiMap. Bular kalit qiymatni qidirishi mumkin bo'lgan xaritalarni ifodalaydi va qiymat kalitni teng osonlik bilan qidirishi mumkin.
Bags
Qo'llab-quvvatlash bags ga yangi interfeys ierarxiyasi qo'shildi - Bag. Bular har bir elementning ma'lum miqdordagi nusxalari saqlanadigan to'plamlarni ifodalaydi.
Xulosa
Men o’zim berilgan Apache Common Collection mavzusiddagi mustaqil ishni bajarib Apache Commons to'plamlari Apache Commons-ning tarkibiy qismlari hisoblanishini.Java API-dan olingan va Java tili uchun komponentlar arxitekturasini taqdim etishini.Commons-Collections yangi interfeyslarni taqdim etish orqali JDK sinflariga asoslanishga intiladi, ilovalar va yordamchi dasturlar
bilib oldim
Foydalanilgan adabiyotlar:
Do'stlaringiz bilan baham: |