Դուք արդեն ունեք ձեր ծրագրաշարը, բայց ձեզ դեռ պետք է ավելի արդյունավետ մեթոդ, որը թույլ կտա ձեր տեխնիկական օգտվողներին ընդլայնել հարթակը:
Թեև OSGi-ն հայտնի է Java-ի ծրագրավորողների մեծամասնությանը, այն ձեր արտադրանքի մեջ ինտեգրելը կարող է դժվար գործ թվալ: OSGi-ի ճշգրիտ աշխատանքի վերաբերյալ հստակության բացակայությունն ավելի է խճճում առաջընթացի ճանապարհը:
Ի տարբերություն այն ամենի, ինչի հետ նրանք կցանկանային փորձարկել, OSGi-ն ավելի շատ նման է լայն ծովով նավարկելու փորձերին՝ Java-ի շատ մշակողների մոտ:
Այս հոդվածը ձեզ կներկայացնի OSGi Felix-ի գարնանային ուղեցույցը՝ օգտագործելով պարզ ծրագիր և ծանոթացեք դրա առավելություններին և այլ կարևոր մանրամասներին:
Այսպիսով, ինչ է OSGi-ն:
Մոդուլների և բաղադրիչների ստեղծումն ու բաշխումը հնարավոր է դարձել Java շրջանակի շնորհիվ, որը հայտնի է որպես OSGi (Open Service Gateway Initiative):
Այն ընդգծում է ֆունկցիայի ինկապսուլյացիան և ազատ միացումը, որն առաջարկում է մի շարք առավելություններ մշակողներին, ներառյալ մոդուլային ֆունկցիոնալությունը, որը հեշտությամբ փոխանցվում է աղբյուրի կոդերի և փորձարկման միջև, որը անվերջ կախվածության կարիք չունի:
Ինչպե՞ս է աշխատում OSGi-ն:
Java-ի համար դինամիկ բաղադրիչ համակարգը սահմանվում է մի շարք բնութագրերով, որոնք կոչվում են OSGi: Այս բնութագրերը հնարավորություն են տալիս զարգացման մոտեցում, որտեղ հավելվածը կառուցվում է մի շարք մասերից, այնուհետև փաթեթավորվում է փաթեթների մեջ:
Տեղական և ցանցի վրա հիմնված ծառայություններն օգտագործվում են այս բաղադրիչների կողմից հաղորդակցվելու համար: Ծրագրի հիմնական կոդը հնարավորինս կոմպակտ դարձնելը նպատակ է հետապնդում: Հնարավոր է բարձր զուգավորում այս կոդի և մի քանի բաղադրիչների միջև:
Հավելվածի բազմակի օգտագործման շինարարական տարրերը կոչվում են բաղադրիչներ: Մտածեք այնպիսի առանձնահատկությունների մասին, ինչպիսիք են գնումների զամբյուղը ձեր էլեկտրոնային առևտրի վեբ կայքի կամ աշխատավարձի հայտի մասին ձեր անձնակազմի կառավարման համակարգի համար:
Բաղադրիչները կարող են օգտագործել OSGi-ն՝ թաքցնելու իրենց իրականացումները այլ բաղադրիչներից և միայն անհրաժեշտ տվյալները տրամադրել նրանց ծառայությունների միջոցով:
Սա թույլ չի տալիս բաղադրիչներին չմտածված փոխել տվյալները, որոնց մուտքը չպետք է ունենա, և կառավարում է կախվածությունը:
OSGi հավելվածի բաղադրիչների միջև բոլոր կապերը կատարվում են իդեալական աշխարհում ծառայությունների միջոցով: Java փաթեթը պարունակում է API, որը նախատեսված է ծառայությունների համար:
Ծառայություններ մատուցողների և հաճախորդների միջև համագործակցությունը պահանջում է դասերի և/կամ միջերեսների օգտագործում, որոնք կազմում են API-ը:
OSGi-ի բոլոր բաղադրիչները փաթեթավորված են միասին փաթեթներով, որոնցից յուրաքանչյուրը ներառում է այն ռեսուրսները, որոնք անհրաժեշտ են գործելու համար: Փաթեթները միանգամայն պարզ են, թե ինչի կարիք ունեն շրջակա միջավայրը և ինչի են ընդունակ:
Առավելությունները
- OSGi հավելվածներին հասանելի են արտաքին փաթեթների պահեստները:
- Շրջանակը թույլ է տալիս սպասարկման վրա հիմնված ձևավորում մոդուլի մակարդակով:
- Այն հնարավորություն է տալիս կառավարել հավելվածների փաթեթների տարբերակներն ու կախվածությունները՝ ի լրումն ստանդարտացման և երրորդ կողմի գրադարանների ինտեգրման հեշտացման:
- Հավելվածներն ավելի հարմարվող են փոփոխվող պահանջներին, ավելի դյուրակիր և ավելի արագ վերաճարտարագիտության համար:
- A վեբ հավելված կարող է տեղակայվել որպես տարբերակված OSGi փաթեթների խումբ՝ դինամիկ կյանքով, Java EE ծրագրավորման մոդելի հետ շրջանակի ինտեգրման շնորհիվ:
- Որպես հավելվածի մաս՝ որպես երրորդ կողմի գրադարան տեղադրվելու փոխարեն, շրջանակն ապահովում է Spring Framework-ի դեկլարատիվ հավաքում և պարզեցված միավորի փորձարկում՝ ստանդարտացված ձևով, որը տրամադրվում է որպես հավելվածի սերվերի գործարկման ժամանակի մաս:
- Կորպորատիվ հավելվածների համար, որոնք կազմված են դինամիկ կյանքի ցիկլերով մի քանի տարբերակված փաթեթներից, շրջանակն առաջարկում է մեկուսացում:
- Այն պարունակում է փաթեթների ինտեգրված պահոց, որը կարող է պահել մի քանի հավելվածների կողմից օգտագործվող ընդհանուր և տարբերակված փաթեթները՝ թույլ չտալով յուրաքանչյուր հավելված տեղակայել յուրաքանչյուր ընդհանուր գրադարանի առանձին պատճեն:
Սկսում ենք OSGi Felix Spring-ի հետ
Ստանալով ռեսուրսներ
Ներբեռնելով Apache Karaf-ի ամենավերջին տարբերակը Այս կայքը, մենք կարող ենք սկսել մեր OSGi արկածը:
Հիմնվելով Apache Felix-ի՝ OSGi ճշգրտման Apache-ի ներդրման վրա, Apache Karaf-ը հարթակ է տրամադրում OSGi-ի վրա հիմնված հավելվածների համար:
Karaf-ը Felix-ի վերևում տրամադրում է տարբեր օգտակար գործառույթներ, որոնք կօգնեն մեզ ծանոթանալ OSGi-ին, օրինակ՝ հրամանի տողի միջերեսը, որը մեզ հնարավորություն կտա շփվել հարթակի հետ:
Մուտքի կետ փաթեթների համար
Հավելվածը պետք է փաթեթավորվի որպես OSGi փաթեթ, նախքան այն գործարկվի OSGi միջավայրում: Բացի այդ, դիմումի մուտքի կետը պետք է նշվի. դա ստանդարտ հանրային ստատիկ void main (String[] args) ֆունկցիան չէ:
Այսպիսով, եկեք սկսենք ստեղծելով «Ողջույն աշխարհOSGi-ի վրա հիմնված հավելված:
Մենք սկսում ենք հիմնելով OSGi API-ի հիմնական կախվածությունը.
OSGi-ի գործարկման ժամանակին հասանելի կլինի կախվածությունը, հետևաբար փաթեթը պետք չէ այն պարունակի: Հետեւաբար, այն նշվում է որպես մատակարարված:
Հիմա եկեք ստեղծենք պարզ HelloWorld դասը.
Դասերը, որոնք գործում են որպես փաթեթների մուտքի կետեր, պետք է իրականացնեն OSGi-ի կողմից տրամադրված BundleActivator ինտերֆեյսը:
Երբ այս դասը պարունակող փաթեթը գործարկվում է, OSGi հարթակը կանչում է start() ֆունկցիան։ Մյուս կողմից, փաթեթի դադարեցումից քիչ առաջ կանչվում է stop() ֆունկցիան:
Չմոռանանք, որ յուրաքանչյուր փաթեթ կարող է ունենալ միայն մեկ BundleActivator: Երկու ուղիներն էլ կարող են հաղորդակցվել OSGi-ի գործարկման ժամանակի հետ՝ օգտագործելով տրված BundleContext օբյեկտը:
Փաթեթի ստեղծում
Դարձրեք pom.xml-ը իսկական OSGi փաթեթ՝ կատարելով անհրաժեշտ փոփոխությունները:
Մենք նախ պետք է հստակ արտահայտենք, որ մեր նպատակը փաթեթ արտադրելն է։
Այնուհետև մենք օգտագործում ենք maven-bundle-պլագինը HelloWorld դասը որպես OSGi փաթեթ փաթեթավորելու համար՝ Apache Felix համայնքի կողմից:
OSGi վերնագրերի արժեքները, որոնք ցանկանում ենք ներառել փաթեթի MANIFEST ֆայլում, նշված են հրահանգների բաժնում:
Bundle-Activator-ն իսկապես BundleActivator լուծման պատշաճ որակավորված անվանումն է, որը կօգտագործվի փաթեթը սկսելու և դադարեցնելու համար: Այն համատեղելի է հենց նոր ստեղծված դասի հետ:
Թեև դա OSGi վերնագիր չէ, Private-Package վերնագիրը հրահանգում է հավելվածին ավելացնել փաթեթը փաթեթում, բայց պարզապես այն հասանելի չդարձնել այլ պլագինների համար: Mvn install հրամանը պետք է օգտագործվի փաթեթը ստեղծելու համար:
Փաթեթի տեղադրում և գործարկում
Եկեք սկսենք Karaf-ը գործարկելով այս հրամանը.
որտեղ «KARAF HOME»-ը վերաբերում է այն թղթապանակին, որտեղ տեղադրվել է Karaf-ը: Մենք կարող ենք օգտագործել հետևյալ հրամանը՝ փաթեթը տեղադրելու համար, երբ հայտնվի Karaf վահանակի հուշումը.
Օգտագործելով տեղական Maven պահեստը, Կարաֆին ասվում է բեռնել փաթեթը:
Կարաֆը, վերադարձնելով փաթեթի թվային ID-ն, դուրս է գրում այն: Այս ID-ն կարող է տարբերվել՝ կախված նրանից, թե քանի փաթեթ է նախկինում տեղադրվել: Փաթեթն այժմ հաջողությամբ տեղադրվել է, և այն գործարկելու հրամանը հետևյալն է.
Այն պահին, երբ դուք գործարկում եք փաթեթը, ցուցադրվում է «Hello World by Jay»: Այժմ մենք կարող ենք դադարեցնել և հեռացնել փաթեթը՝ օգտագործելով.
Վահանակում ցուցադրվում է «Goodbye World by Jay»:
Եզրափակում
Ծրագրավորողները կարող են հեշտությամբ ավելացնել նոր ֆունկցիոնալություն գոյություն ունեցող վեբ հավելվածին՝ միաժամանակ պահպանելով այն ապահով և մեկուսացված հիմնական ծրագրի այլ բաղադրիչներից՝ օգտագործելով OSGi:
Մենք իմացանք OSGi-ի մասին այս գրառման մեջ, ներառյալ, թե ինչպես է այն գործում, առավելությունները և պարզ ծրագիր: Դժվար չէ OSGi-ն ներառել ձեր սեփական հավելվածում:
Ուրախ կոդավորում:
Թողնել գրառում