Ou deja gen lojisyèl ou an plas, men ou toujou bezwen yon metòd ki pi efikas pou pèmèt itilizatè teknik ou yo elaji platfòm la.
Menm si OSGi se byen li te ye nan pifò devlopè Java, entegre li nan pwodwi ou a ka sanble tankou yon travay redoutable. Mank klè sou fonksyonman egzak OSGi a plis twouble wout la pi devan.
Kontrèman ak nenpòt bagay yo ta renmen fè eksperyans, OSGi santi l plis tankou eseye navige lanmè a lajè nan anpil devlopè Java.
Atik sa a pral prezante w nan leson patikilye prentan OSGi Felix lè l sèvi avèk yon pwogram senp epi ale nan, avantaj li yo, ak lòt detay enpòtan.
Se konsa, ki sa ki OSGi?
Kreye ak distribye modil ak konpozan se posib pa kad Java ke yo rekonèt kòm OSGi (Open Service Gateway Initiative).
Li mete aksan sou enkapsulasyon fonksyon ak kouple ki lach, ki ofri plizyè avantaj pou devlopè yo, ki gen ladan fonksyonalite modilè ki fasilman transfere ant kòd sous ak tès ki pa bezwen depandans infini.
Ki jan OSGi travay?
Yon sistèm eleman dinamik pou Java defini pa yon seri espesifikasyon yo rele OSGi. Espesifikasyon sa yo pèmèt yon apwòch devlopman kote yon aplikasyon bati soti nan yon kantite pati ak Lè sa a, pake nan pakèt.
Konpozan sa yo itilize sèvis lokal ak sèvis ki baze sou rezo pou kominike. Fè kòd debaz pwogram lan kòm kontra enfòmèl ant posib se objektif la. Segondè kouple ant kòd sa a ak plizyè konpozan posib.
Yo rele eleman bilding ki kapab itilize ankò aplikasyon an. Reflechi sou karakteristik tankou yon charyo pou sit entènèt e-commerce ou oswa yon aplikasyon pewòl pou sistèm jesyon anplwaye ou.
Konpozan yo ka itilize OSGi pou kache aplikasyon yo nan lòt konpozan epi sèlman bay done ki nesesè yo atravè sèvis yo.
Sa a anpeche konpozan chanje done yo pa ta dwe gen aksè ak jere depandans yo.
Tout koneksyon ant eleman nan yon aplikasyon OSGi fèt atravè sèvis nan yon mond ideyal. Yon pake Java gen API ki espesifye pou sèvis yo.
Kolaborasyon ant founisè sèvis yo ak kliyan yo mande pou itilize klas ak/oswa koòdone, ki fòme API a.
Tout eleman OSGi yo pake ansanm nan pakèt, chak ladan yo gen ladan resous yo bezwen pou fonksyone. Pakèt yo byen klè sou sa yo bezwen nan anviwònman an ak sa yo kapab.
Benefis
- Aplikasyon OSGi gen aksè a depo ekstèn pake.
- Fondasyon an pèmèt konsepsyon oryante sèvis nan nivo modil la.
- Li fè li posib pou jere vèsyon ak depandans pakèt aplikasyon an anplis estandadize ak fè li pi fasil pou entegre bibliyotèk twazyèm pati yo.
- Aplikasyon yo pi adaptab pou chanje demand yo, yo pi pòtab, epi yo pi vit pou re-enjenyè.
- A aplikasyon entènèt ka deplwaye kòm yon gwoup pakèt OSGi vèsyon ak yon lavi dinamik gras a entegrasyon fondasyon an ak modèl pwogramasyon Java EE.
- Olye pou yo enstale kòm yon bibliyotèk twazyèm pati kòm yon pati nan aplikasyon an, kad la bay asanble deklaratif la ak tès inite rasyonalize nan Spring Framework la nan yon fòm ofisyèl ki bay kòm yon pati nan ègzekutabl sèvè aplikasyon an.
- Pou aplikasyon antrepriz ki fòme ak plizyè pakèt vèsyon ak sik lavi dinamik, kad la ofri izolasyon.
- Li genyen yon depo pakèt entegre ki ka estoke pakèt komen ak vèsyon pataje plizyè aplikasyon yo itilize, sa ki anpeche chak aplikasyon deplwaye yon kopi separe chak bibliyotèk pataje.
Kòmanse ak OSGi Felix prentan
Jwenn Resous yo
Lè w telechaje vèsyon ki pi resan Apache Karaf nan sit sa a, nou ka kòmanse avanti OSGi nou an.
Baze sou Apache Felix, aplikasyon Apache spesifikasyon OSGi a, Apache Karaf bay yon platfòm pou aplikasyon ki baze sou OSGi.
Karaf bay plizyè karakteristik itil sou tèt Felix ki pral ede nou familyarize nou ak OSGi, tankou yon koòdone liy lòd ki pral pèmèt nou kominike ak platfòm la.
Pwen Antre Pou Bundles
Yon aplikasyon dwe pake kòm yon pake OSGi anvan li ka kouri nan yon anviwònman OSGi. Anplis de sa, yo dwe espesifye pwen antre aplikasyon an; se pa fonksyon estanda piblik static void main(String[] args).
Se konsa, ann kòmanse pa kreye yon "Bonjou Mondyal la” aplikasyon ki baze sou OSGi.
Nou kòmanse pa etabli yon depandans debaz OSGi API:
Ègzekutabl OSGi a pral gen aksè a depandans lan, kidonk pake a pa bezwen genyen li. Se poutèt sa, li make kòm apwovizyone.
Koulye a, ann kreye klas HelloWorld senp la:
Klas ki aji kòm pwen antre pou pakèt yo dwe aplike koòdone BundleActivator OSGi bay la.
Lè pake ki gen klas sa a lanse, platfòm OSGi a rele fonksyon start(). Nan lòt bò a, yon ti tan anvan pake a sispann, yo rele fonksyon stop().
Ann pa bliye ke chak pake ka gen sèlman yon BundleActivator. Tou de fason yo ka kominike avèk OSGi ègzekutabl lè l sèvi avèk objè BundleContext yo bay la.
Kreye yon pake
Fè pom.xml yon pake OSGi vre lè w fè chanjman ki nesesè yo.
Nou dwe premye eksprime klèman ke objektif nou se pwodwi yon pake.
Lè sa a, nou itilize maven-bundle-plugin pou pake klas HelloWorld la kòm yon pake OSGi, koutwazi kominote Apache Felix:
Valè Tèt OSGi nou vle mete nan fichye MANIFEST pake a yo espesifye nan seksyon enstriksyon yo.
Bundle-Activator se tout bon non solisyon BundleActivator ki byen kalifye ki pral itilize pou kòmanse epi sispann pake a. Li se konpatib ak klas la jis kreye.
Pandan ke li pa yon header OSGi, header Private-Package a enstwi Plugin a ajoute pake a nan pake a men jis pa fè li aksesib a lòt grefon. Yo ta dwe itilize lòd mvn enstale pou kreye pake a.
Enstale ak kouri pake a
Ann kòmanse Karaf nan kouri lòd sa a:
kote "KARAF HOME" refere a katab kote Karaf te etabli. Nou ka itilize lòd sa a pou enstale pake a lè konsole Karaf la parèt:
Sèvi ak depo Maven lokal la se fason yo di Karaf pou chaje pake a.
Karaf retounen ID nimerik pake a, li ekri li. ID sa a ka diferan selon konbyen pakèt yo te deja enstale. Pake a kounye a te enstale avèk siksè, ak lòd pou lanse li se jan sa a:
Moman ou lanse pake a, "Hello World by Jay" parèt. Nou ka kounye a kanpe epi retire pake a lè l sèvi avèk:
Konsole a montre "Goodbye World by Jay."
konklizyon
Devlopè yo ka fasilman ajoute nouvo fonksyonalite nan yon aplikasyon entènèt ki deja egziste pandan y ap kenbe li an sekirite ak izole nan lòt eleman nan pwogram prensipal la lè yo itilize OSGi.
Nou te aprann sou OSGi nan pòs sa a, ki gen ladann kijan li fonksyone, avantaj li yo ak yon pwogram ki senp. Li pa difisil pou enkòpore OSGi nan pwòp aplikasyon w.
Ala bon sa bon kodaj!
Kite yon Reply