Та програм хангамжаа аль хэдийн суулгасан байгаа ч техникийн хэрэглэгчдэдээ платформыг өргөжүүлэх боломжийг олгох илүү үр дүнтэй арга хэрэгтэй хэвээр байна.
Хэдийгээр OSGi-г ихэнх Java хөгжүүлэгчид сайн мэддэг ч үүнийг бүтээгдэхүүндээ нэгтгэх нь хэцүү ажил мэт санагдаж магадгүй юм. OSGi-ийн нарийн үйл ажиллагааны талаар тодорхой мэдээлэл дутмаг байгаа нь цаашдын замыг улам бүр дордуулж байна.
Тэдний туршиж үзэхийг хүсч буй бүх зүйлээс ялгаатай нь OSGi нь Java хөгжүүлэгчдэд өргөн далайгаар аялах оролдлоготой адил санагддаг.
Энэхүү нийтлэл нь OSGi Felix-ийн хаврын заавар, түүний давуу тал болон бусад чухал нарийн ширийн зүйлийг энгийн програм ашиглан танилцуулах болно.
Тэгэхээр OSGi гэж юу вэ?
Модуль болон бүрэлдэхүүн хэсгүүдийг үүсгэх, түгээх нь OSGi (Open Service Gateway Initiative) гэгддэг Java хүрээний тусламжтайгаар боломжтой болсон.
Энэ нь функцийн капсулжуулалт, сул холболтыг онцолж өгдөг бөгөөд энэ нь хөгжүүлэгчдэд хэд хэдэн давуу талыг санал болгодог бөгөөд үүнд эх кодуудын хооронд хялбархан шилжих боломжтой модульчлагдсан функцууд болон төгсгөлгүй хамаарал шаарддаггүй тестүүд багтдаг.
OSGi хэрхэн ажилладаг вэ?
Java-д зориулсан динамик бүрэлдэхүүн хэсгүүдийн системийг OSGi гэж нэрлэгддэг техникийн үзүүлэлтээр тодорхойлдог. Эдгээр үзүүлэлтүүд нь програмыг хэд хэдэн хэсгээс бүтээж, дараа нь багц болгон багцалсан хөгжүүлэлтийн аргыг идэвхжүүлдэг.
Орон нутгийн болон сүлжээнд суурилсан үйлчилгээг эдгээр бүрэлдэхүүн хэсгүүд харилцахын тулд ашигладаг. Хөтөлбөрийн үндсэн кодыг аль болох авсаархан болгох нь зорилго юм. Энэ код болон хэд хэдэн бүрэлдэхүүн хэсгүүдийн хооронд өндөр холболт хийх боломжтой.
Програмын дахин ашиглах боломжтой барилгын элементүүдийг бүрэлдэхүүн хэсэг гэж нэрлэдэг. Цахим худалдааны вэб сайтад зориулсан дэлгүүрийн тэрэг эсвэл ажилчдын удирдлагын системд зориулсан цалингийн програм зэрэг функцүүдийн талаар бодоорой.
Бүрэлдэхүүн хэсгүүд нь OSGi-г ашиглан бусад бүрэлдэхүүн хэсгүүдээс хэрэгжүүлэлтээ нууж, зөвхөн үйлчилгээгээр дамжуулан тэдэнд шаардлагатай өгөгдлийг өгөх боломжтой.
Энэ нь бүрэлдэхүүн хэсгүүдэд хандах эрхгүй өгөгдлийг санамсаргүйгээр өөрчлөхөөс сэргийлж, хамаарлыг удирддаг.
OSGi програмын бүрэлдэхүүн хэсгүүдийн хоорондох бүх холболтыг хамгийн тохиромжтой ертөнц дэх үйлчилгээгээр дамжуулан хийдэг. Java багц нь үйлчилгээнд зориулагдсан API-г агуулдаг.
Үйлчилгээ үзүүлэгч болон үйлчлүүлэгчдийн хамтын ажиллагаа нь API-г бүрдүүлдэг ангиуд болон/эсвэл интерфейсийг ашиглахыг шаарддаг.
OSGi-ийн бүх бүрэлдэхүүн хэсгүүдийг багц болгон багцалсан бөгөөд тус бүр нь ажиллахад шаардлагатай нөөцийг агуулдаг. Багцууд нь хүрээлэн буй орчноос юу хэрэгтэй, юу хийх чадвартай болох талаар маш тодорхой байдаг.
ашиг тус
- OSGi програмууд нь гадаад багц репозиторуудад хандах боломжтой.
- Энэхүү хүрээ нь модулийн түвшинд үйлчилгээнд чиглэсэн дизайн хийх боломжийг олгодог.
- Энэ нь гуравдагч талын номын сангуудыг стандартчилах, нэгтгэхэд хялбар болгохоос гадна програмын багцын хувилбарууд болон хамаарлыг удирдах боломжтой болгодог.
- Аппликейшн нь өөрчлөгдөж буй эрэлт хэрэгцээнд илүү дасан зохицож, илүү зөөврийн, дахин инженерчлэл хийхэд илүү хурдан байдаг.
- A вэб програм Java EE програмчлалын загвартай фреймворкийн интеграцчлалын ачаар динамик ашиглалтын хугацаатай, хувилбартай OSGi багц болгон ашиглах боломжтой.
- Програмын нэг хэсэг болгон гуравдагч талын номын сан болгон суулгахын оронд уг хүрээ нь програмын серверийн ажиллах цагийн нэг хэсэг болгон хангагдсан стандартчилсан хэлбэрээр Spring Framework-ийн тунхаглалыг нэгтгэх, хялбаршуулсан нэгжийн туршилтыг хангадаг.
- Динамик амьдралын мөчлөг бүхий хэд хэдэн хувилбартай багцуудаас бүрдсэн корпорацийн програмуудын хувьд уг хүрээ нь тусгаарлалтыг санал болгодог.
- Энэ нь хэд хэдэн програмын ашигладаг нийтлэг болон хувилбартай багцуудыг хадгалах нэгдсэн багцын агуулахыг агуулж байгаа бөгөөд програм тус бүрийг хуваалцсан номын сан бүрийн тусдаа хуулбарыг байрлуулахаас сэргийлдэг.
OSGi Felix пүршийг эхлүүлж байна
Нөөц олж авах
Apache Karaf-ийн хамгийн сүүлийн хувилбарыг татаж авснаар энэ сайт, бид OSGi адал явдалаа эхлүүлж болно.
Apache Felix, OSGi тодорхойлолтын Apache хэрэгжүүлэлт дээр үндэслэн Apache Karaf нь OSGi-д суурилсан програмуудад зориулсан платформоор хангадаг.
Караф нь Феликс дээр OSGi-тэй танилцахад туслах олон төрлийн ашигтай функцуудыг өгдөг, тухайлбал платформтой харилцах боломжийг олгодог тушаалын мөрийн интерфейс.
Багцын нэвтрэх цэг
Програмыг OSGi орчинд ажиллуулахын өмнө OSGi багц хэлбэрээр багцалсан байх ёстой. Нэмж хэлэхэд, өргөдөл оруулах цэгийг зааж өгөх ёстой; Энэ нь стандарт нийтийн статик хүчингүй үндсэн(String[] args) функц биш юм.
Тиймээс "бүтээж эхэлцгээе"Сайн уу” OSGi дээр суурилсан програм.
Бид үндсэн OSGi API хамаарлыг бий болгосноор эхэлдэг:
OSGi ажиллах хугацаа нь хамааралд хандах боломжтой тул багцад үүнийг оруулах шаардлагагүй. Тиймээс нийлүүлсэн гэж тэмдэглэсэн.
Одоо шууд HelloWorld анги үүсгэцгээе:
Багцуудад нэвтрэх цэгийн үүрэг гүйцэтгэдэг ангиуд нь OSGi-аас хангагдсан BundleActivator интерфейсийг хэрэгжүүлэх ёстой.
Энэ ангийг агуулсан багцыг эхлүүлэх үед OSGi платформ нь start() функцийг дууддаг. Нөгөө талаас багц зогсохын өмнөхөн stop() функц дуудагдана.
Багц бүрд зөвхөн нэг BundleActivator байх боломжтой гэдгийг мартаж болохгүй. Хоёр арга нь өгөгдсөн BundleContext объектыг ашиглан OSGi ажиллах цагтай холбогдох боломжтой.
Багц үүсгэх
Шаардлагатай өөрчлөлтүүдийг хийснээр pom.xml-г жинхэнэ OSGi багц болго.
Бид хамгийн түрүүнд боодол үйлдвэрлэх зорилготой гэдгээ тодорхой илэрхийлэх ёстой.
Дараа нь бид maven-bundle-plugin-ийг Apache Felix нийгэмлэгийн зөвшөөрлөөр HelloWorld ангиллыг OSGi багц болгон багцлахад ашигладаг.
Багцын MANIFEST файлд оруулахыг хүсч буй OSGi толгойн утгыг зааврын хэсэгт зааж өгсөн болно.
Bundle-Activator нь үнэхээр багцыг эхлүүлэх, зогсооход ашиглагдах BundleActivator шийдлийн зохих нэршил юм. Энэ нь саяхан үүсгэсэн ангитай нийцдэг.
Хэдийгээр энэ нь OSGi толгой биш боловч Private-Package толгой хэсэг нь залгаасыг багцад багц нэмэхийг зааварчилдаг боловч үүнийг бусад залгаасуудад ашиглах боломжгүй болгодог. Багц үүсгэхийн тулд mvn install командыг ашиглах хэрэгтэй.
Багцыг суулгаж, ажиллуулж байна
Карафыг энэ тушаалыг ажиллуулж эхэлцгээе:
"KARAF HOME" нь Карафыг суулгасан хавтсыг хэлнэ. Karaf консолын сануулга гарч ирэх үед бид багцыг суулгахын тулд дараах тушаалыг ашиглаж болно.
Орон нутгийн Maven репозиторыг ашиглах нь Карафыг багцыг ачаалах арга юм.
Багцын тоон ID-г буцааж Караф үүнийг бичнэ. Энэ ID нь өмнө нь хэдэн багц суулгаснаас хамаарч өөр байж болно. Багцыг амжилттай суулгасан бөгөөд үүнийг эхлүүлэх тушаал дараах байдалтай байна.
Таныг багцыг эхлүүлэх үед "Hello World by Jay" гарч ирнэ. Бид одоо багцыг зогсоож устгаж болно:
Консол дээр "Godbye World by Jay" гэсэн бичиг гарч ирнэ.
Дүгнэлт
Хөгжүүлэгчид OSGi ашиглан үндсэн программын бусад бүрэлдэхүүн хэсгүүдээс тусгаарлагдсан, аюулгүй байлгахын зэрэгцээ одоо байгаа вэб програмдаа шинэ функцийг хялбархан нэмж болно.
Бид энэ нийтлэлээс OSGi-ийн талаар, түүний үйл ажиллагаа, давуу тал, энгийн програмын талаар олж мэдсэн. OSGi-г өөрийн хэрэглээнд оруулах нь тийм ч хэцүү биш юм.
Кодлоход баяртай байна!
хариу үлдээх