1.1 Кattа dasturlar
Bizos kichkina dasturlar yozishni o'rganib oldik, endi esa katta dastur yozishni o'rganamiz. Ma'lumki, dastur qancha katta va murakkab bo'lsa, uni ishlab chiqish uchun ko'proq pul to'lanadi :) Va biroz tarix bilan boshlaymiz…
Dasturlarining hajmi o'sib borishi bilan ishlab chiquvchilar ikki yangi holatga duch kelishdi:
- Bitta dastur ustida juda ko'p odam ishlaydi.
- Dastur kodini to'liq biladigan odam yo'q.
Juda ko'p hollarda, dasturchi dasturning bir joyidagi xatoni to'g'rilayotganida, boshqa bir yerini buzib qo'yishi mumkin edi. Release documentation-da hatto bunday hazil paydo bo'ldi:
O'zgarishlar ro'yxati:
- Eski xatolarni tuzatdik :)
- Yangi xatolar qo'shdik :(
Ushbu muammoni hal qilish uchun ikki yondashuv yaratildi: texnik va menejerlik.
Texnik yondashuv dasturlarni qismlarga bo'lishdan iborat edi: kutubxonalar va modullar. Har bir modul kichik g'ishtlardir, ulardan katta loyihalar quriladi. Kutubxonalar esa - bu turli dasturlarda foydalanilishi mumkin bo'lgan universal komponentlar.
Menejerlik yondashuvi yanada qiziqarli ediki – ular bitta loyiha/kutubxona ustida ishlash mumkin bo'lgan odamlarni cheklashdi. Empirik ravishda shunday qoida chiqarildi: jamoa shunchalik katta bo'lishi kerakki, uni ikki pitsa bilan to'ydira olish mumkin bo'lsin. Bu odatda bir loyiha ustida 8 odam-dan ko'p bo'lsa, uni ikki loyihaga bo'lish kerakligini anglatadi.
Java dasturchilar jamoasida har qanday vaziyatga mos keladigan kutubxonalarni yozish va ularni umumiy foydalanishga qo'yish moda bo'lib qoldi. Shunday qilib, Java dasturchilar bir xilda kodni qayta-qayta yozmasdan (ko'pincha xatolar bilan bo'lgan), tayyor va sinovdan o'tgan yechimlardan foydalana olishdi.
Qo'shimcha rag'bat Java tilining server yechimlarini yozishda (bэkendda ishlaydigan) katta mashhurlik orttirishi edi. Birinchidan, server dasturida ishonchlilikka yuqori talablar mavjud, va vaqt sinovidan o'tgan kutubxonalardan foydalanish har doim o'z kodni yozishdan afzalroqdir.
Ikkinchidan, serverlarda kod hajmi uchun deyarli cheklovlar yo'q. Mobil ilova ishlab chiquvchisi uni 10 megabaytga siqishtirishga harakat qiladi, desktop ilovasi ishlab chiquvchisi – 100 megabaytga. Ammo Java-dagi bэkend ishlab chiquvchisi loyiha ichiga bir necha o'n gigabayt kutubxonalarni tiqa oladi va unga hech kim hech narsa demaydi :)
Bu hazil emas. Bэkend loyihasi bir necha o'n modullardan va bir necha yuz kutubxonadan iborat bo'lishi juda oson. Bunday loyihalarni yig'ish ssenariylarini tavsiflash (va o'zgartirish!) juda qiyin bo'lib qoldi.
Va shu asnoda Maven paydo bo'ldi.
1.2 Maven bilan tanishuv
Maven – bu loyihalarni yig'ishni boshqarish uchun maxsus “framework”. U uch narsani standartlashtiradi:- Loyiha tavsifi;
- Loyihalarni yig'ish ssenariylari;
- Kutubxonalar orasidagi bog'liqliklar.
Maven’ning avvalgisi Ant edi, merosxo'ri esa Gradle. Ammo aynan Maven ushbu uchta standartni rivojlantirdi va mukammal darajaga yetkazdi, ular o'zaro munosabatlarini tartibga solish bilan birga. Aynan u Java jamoalari ishini yangi bosqichga olib chiqdi. Keling, unga batafsilroq qaraylik.
Texnik jihatdan Maven – bu loyihalarni yig'ish jarayonini boshqarish uchun mo'ljallangan maxsus dastur/xizmat. Uni oddiy arxiv sifatida yuklab olish va istalgan katalogga chiqarib yozish mumkin. Maxsus o'rnatuvchi kerak emas.
Uning grafik interfeysi yo'q – barcha buyruqlar unga konsol orqali beriladi. Bilan yanada qulayroq ishlash uchun, operatsion tizimingizda maxsus atrof-muhit o'zgaruvchilarini (environment variables) yozishga tavsiya etiladi.
Shuningdek, Maven bilan kutubxonalarni saqlaydigan maxsus repository (katalog/papka) mavjud. Bu kutubxonalar loyihalarni yig'ishda ishlatiladi. Diskda biror papkadan tanlash va uni repository sifatida belgilash kerak bo'ladi.
Yana bir qiziqarli tomoni shundaki, barcha kutubxonalar uchun global Maven repository mavjud, lekin bu haqda keyinroq gapiramiz.
1.3 Maven yuklab olish va o'rnatish
Maven’ning rasmiy sayti maven.apache.org mavjud. U yerda loyiha haqida juda ko'p hujjatlar mavjud, shuning uchun agar qiyinchiliklar yoki qo'shimcha savollar tug'ilsa – kirib o'qib chiq.
Shuningdek, downloads sahifasidan (https://maven.apache.org/download.cgi) maven’ni (apache-maven-3.8.5-bin.zip) yuklab olish mumkin. Chiqarilgan arxiv taxminan 10 MB joy egallaydi, lekin mahalliy maven repository vaqt o'tishi bilan bir necha yuz megabayt xotira talab qiladi.
Maven Java-da yozilgan va JRE 7-versiyasidan past bo'lmasligini talab qiladi, shuningdek JAVA_HOME kabi atrof-muhit o'zgaruvchilarining yozilishi kerak.
Kompyuteringizda Maven uchun papkani, masalan, d:\devtools, yarating va Maven bilan arxivni unga chiqarib yozing. Natijada sizda d:\devtools\maven\bin kabi papka paydo bo'lishi kerak, unda asosiy binar fayllar joylashgan bo'ladi.
1.4 Atrof muhit o'zgaruvchilari
Shundan so'ng, bin papkasiga bo'lgan yo'lni chiqarilgan arxivdan arxivdan PATH muhitining o'zgaruvchisida qo'shishingiz kerak bo'ladi.
Windows 10-da muhital o'zgaruvchini (environment variable) o'rnatish uchun, Boshqarish paneli — Sistema — Sistema qo'shimcha parametrlariga o'tish kerak. So'ngra “Muhital o'zgaruvchilar” tugmasini bosish, PATH ni topish va “O'zgartirish” ni bosish, undan keyin d:\devtools\maven\bin yo'lini qo'shish kerak. Eslatib o'tamiz, yo'l aynan bin papkaga olib borishi kerak.
Unix asosidagi operatsion tizimlarda muhit o'zgaruvchini konsol buyrug'i bilan qo'shishingiz mumkin:
export PATH=/opt/apache-maven-3.8.5/bin:$PATH
Agar hammasi to'g'ri bajarilgan bo'lsa, konsolda “mvn -v” buyrug'ini tering. Javobda siz quyidagi narsani ko'rasiz:
C:\Users\Zapp>mvn -v
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 15:51:28+0200)
Maven home: T:\apache-maven-3.0.5\bin\..
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_65\jre
Default locale: en_US, platform encoding: Cp1251
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"
1.5 Maven’ning mahalliy repository
Bundan tashqari, Maven loyihalarni yig'ishda foydalanadigan jar-kutubxonalarni saqlaydi. Bunday papkaning nomi – mahalliy maven repository.
Agar bunday papka belgilanmagan bo'lsa, Maven uni joriy foydalanuvchining bosh katalogida yaratadi. Menda bu katalog quyidagicha: C:\Users\Zapp\.m2
Papka juda o'ziga xos nomga ega “.m2”. Garchi, Linux foydalanuvchilari bunga ajablanmaydi – u yerda bu turdagi nomlar xizmat axborotining turli xil ”repository”lari yoki/yoki har qanday boshqa saqlash joylari uchun keng tarqalgan.
Muvofiq! Mavеnni tizimli papkalarda joylashtirmang, chunki ish paytida unga ushbu papkalarda yozish uchun ruxsat kerak bo'ladi, bu esa antivirus yoki operatsion tizimning qo'shimcha qiziqishini uyg'otishi mumkin.
Maven 3.5 versiyasigacha M2_HOME atrof-muhit o'zgaruvchisining ko'rsatilishi talab qilingan, ammo endi bu kerak emas.
Maven’ni konfiguratsiya qilish haqida batafsil ma'lumotni quyidagi havola orqali o'qishingiz mumkin: https://maven.apache.org/configure.html
GO TO FULL VERSION