Sizin proqram təminatınız artıq hazırdır, lakin siz hələ də texniki istifadəçilərinizə platformanı genişləndirməyə imkan verən daha effektiv üsula ehtiyacınız var.
OSGi əksər Java tərtibatçılarına yaxşı məlum olsa da, onu məhsulunuza inteqrasiya etmək çətin bir iş kimi görünə bilər. OSGi-nin dəqiq işləməsi ilə bağlı aydınlığın olmaması irəliyə doğru yolu daha da qarışdırır.
Təcrübə etmək istədikləri hər şeydən fərqli olaraq, OSGi daha çox Java tərtibatçılarına geniş dənizdə üzmək cəhdinə bənzəyir.
Bu məqalə sizi sadə proqramdan istifadə edərək OSGi Felix yaz dərsliyi ilə tanış edəcək və onun üstünlükləri və digər vacib detalları nəzərdən keçirəcək.
Beləliklə, OSGi nədir?
Modulların və komponentlərin yaradılması və paylanması OSGi (Open Service Gateway Initiative) kimi tanınan Java çərçivəsi ilə mümkün olur.
O, funksional inkapsulyasiyanı və boş birləşməni vurğulayır ki, bu da tərtibatçılara bir sıra üstünlüklər, o cümlədən mənbə kodları arasında asanlıqla ötürülə bilən modul funksionallıq və sonsuz asılılıqlara ehtiyac duymayan testlər təklif edir.
OSGi necə işləyir?
Java üçün dinamik komponent sistemi OSGi adlanan spesifikasiyalar dəsti ilə müəyyən edilir. Bu xüsusiyyətlər proqramın bir neçə hissədən qurulduğu və sonra paketlərə yığıldığı inkişaf yanaşmasına imkan verir.
Bu komponentlər ünsiyyət üçün yerli və şəbəkə əsaslı xidmətlərdən istifadə edirlər. Məqsəd proqramın əsas kodunu mümkün qədər kompakt etməkdir. Bu kod və bir neçə komponent arasında yüksək əlaqə mümkündür.
Tətbiqin təkrar istifadə edilə bilən tikinti elementləri komponentlər adlanır. Elektron ticarət veb saytınız üçün alış-veriş səbəti və ya işçilərin idarəetmə sisteminiz üçün əmək haqqı proqramı kimi xüsusiyyətləri düşünün.
Komponentlər tətbiqetmələrini digər komponentlərdən gizlətmək üçün OSGi-dən istifadə edə və yalnız xidmətlər vasitəsilə onlara lazımi məlumatları təqdim edə bilər.
Bu, komponentlərin daxil olmamalı olduqları məlumatları istəmədən dəyişməsinin qarşısını alır və asılılıqları idarə edir.
OSGi proqramında komponentlər arasında bütün əlaqələr ideal dünyada xidmətlər vasitəsilə həyata keçirilir. Java paketi xidmətlər üçün müəyyən edilmiş API ehtiva edir.
Xidmət təminatçıları və müştərilər arasında əməkdaşlıq API-ni təşkil edən siniflərin və/yaxud interfeyslərin istifadəsini tələb edir.
Bütün OSGi komponentləri hər biri işləmək üçün tələb olunan resursları özündə cəmləşdirən paketlərdə yığılmışdır. Paketlər ətraf mühitdən nəyə ehtiyac duyduqları və nəyə qadir olduqları haqqında olduqca aydındır.
Faydaları
- OSGi proqramlarının xarici paket anbarlarına çıxışı var.
- Çərçivə modul səviyyəsində xidmət yönümlü dizayna imkan verir.
- Bu, üçüncü tərəf kitabxanalarının standartlaşdırılması və inteqrasiyasını asanlaşdırmaqla yanaşı, proqram paketlərinin versiyalarını və asılılıqlarını idarə etməyə imkan verir.
- Tətbiqlər dəyişən tələblərə daha uyğunlaşır, daha portativdir və yenidən mühəndislik etmək üçün daha tezdir.
- A veb tətbiqi Çərçivənin Java EE proqramlaşdırma modeli ilə inteqrasiyası sayəsində dinamik ömrü olan versiyalı OSGi paketləri qrupu kimi yerləşdirilə bilər.
- Tətbiqin bir hissəsi kimi üçüncü tərəf kitabxanası kimi quraşdırılmaq əvəzinə, çərçivə proqram serverinin işləmə müddətinin bir hissəsi kimi təqdim olunan standart formada Spring Framework-ün bəyanedici montajını və sadələşdirilmiş vahid testini təmin edir.
- Dinamik həyat dövrləri olan bir neçə versiyalı paketlərdən ibarət korporativ proqramlar üçün çərçivə izolyasiyanı təklif edir.
- O, bir neçə proqram tərəfindən istifadə edilən paylaşılan ümumi və versiyalı paketləri saxlaya bilən inteqrasiya olunmuş paket anbarını ehtiva edir və hər bir tətbiqin hər bir paylaşılan kitabxananın ayrıca nüsxəsini yerləşdirməsinin qarşısını alır.
OSGi Felix baharı ilə işə başlayın
Resursların əldə edilməsi
Apache Karaf-ın ən son versiyasını yükləməklə Bu saytdan, biz OSGi macəramıza başlaya bilərik.
OSGi spesifikasiyasının Apache tətbiqi olan Apache Felix-ə əsaslanaraq, Apache Karaf OSGi əsaslı proqramlar üçün platforma təqdim edir.
Karaf Felix-in üstündə bizə OSGi ilə tanış olmaqda kömək edəcək müxtəlif faydalı funksiyalar təqdim edir, məsələn, platforma ilə əlaqə saxlamağa imkan verəcək komanda xətti interfeysi.
Paketlər üçün giriş nöqtəsi
Tətbiq OSGi mühitində işə salınmazdan əvvəl OSGi paketi kimi paketlənməlidir. Bundan əlavə, ərizənin giriş nöqtəsi göstərilməlidir; standart ictimai statik boşluq əsas (String[] args) funksiyası deyil.
Beləliklə, " yaratmaqla başlayaqSalam Dünya” OSGi əsasında proqram.
Biz əsas OSGi API asılılığını qurmaqla başlayırıq:
OSGi işləmə müddətinin asılılığa girişi olacaq, ona görə də paketin onu ehtiva etməsinə ehtiyac yoxdur. Buna görə də təchiz edilmiş kimi qeyd olunur.
İndi gəlin sadə HelloWorld sinifini yaradaq:
Paketlər üçün giriş nöqtəsi kimi çıxış edən siniflər OSGi tərəfindən təmin edilən BundleActivator interfeysini həyata keçirməlidir.
Bu sinfi ehtiva edən paket işə salındıqda OSGi platforması start() funksiyasını çağırır. Digər tərəfdən, paket dayandırılmadan qısa müddət əvvəl stop() funksiyası çağırılır.
Unutmayaq ki, hər paketdə yalnız bir BundleActivator ola bilər. Hər iki yol verilmiş BundleContext obyektindən istifadə edərək OSGi iş vaxtı ilə əlaqə saxlaya bilər.
Bundle yaradılması
Lazımi dəyişiklikləri etməklə pom.xml-ni əsl OSGi paketinə çevirin.
Əvvəlcə açıq şəkildə ifadə etməliyik ki, məqsədimiz paket istehsal etməkdir.
Sonra, Apache Felix icmasının izni ilə HelloWorld sinfini OSGi paketi kimi paketləmək üçün maven-bundle-plugindən istifadə edirik:
Paketin MANIFEST faylına daxil etmək istədiyimiz OSGi başlıqlarının dəyərləri təlimatlar bölməsində göstərilmişdir.
Bundle-Activator həqiqətən də paketi işə salmaq və dayandırmaq üçün istifadə ediləcək BundleActivator həllinin düzgün seçilmiş adıdır. Yeni yaradılmış siniflə uyğun gəlir.
Bu OSGi başlığı olmasa da, Şəxsi Paket başlığı plaqinə paketi paketə əlavə etməyi tapşırır, lakin onu digər plaginlər üçün əlçatan etmir. Paketi yaratmaq üçün mvn quraşdırma əmrindən istifadə edilməlidir.
Paketin quraşdırılması və işə salınması
Bu əmri yerinə yetirməklə Karaf-a başlayaq:
burada “KARAF HOME” Karafin qurulduğu qovluğa aiddir. Karaf konsolu sorğusu görünəndə paketi quraşdırmaq üçün aşağıdakı əmrdən istifadə edə bilərik:
Yerli Maven repozitoriyasından istifadə edərək, Karaf paketi yükləməyi əmr edir.
Paketin rəqəmsal identifikatorunu qaytaran Karaf onu yazır. Bu ID əvvəllər neçə paketin quraşdırıldığından asılı olaraq fərqlənə bilər. Paket indi uğurla quraşdırılıb və onu işə salmaq əmri aşağıdakı kimidir:
Paketi işə saldığınız anda “Hello World by Jay” göstərilir. İndi paketi dayandırıb silə bilərik:
Konsolda “Goodbye World by Jay” göstərilir.
Nəticə
Tərtibatçılar OSGi-dən istifadə etməklə onu təhlükəsiz və əsas proqramın digər komponentlərindən təcrid etməklə mövcud veb proqrama asanlıqla yeni funksionallıq əlavə edə bilərlər.
Bu yazıda OSGi haqqında onun necə işlədiyi, üstünlükləri və sadə proqramı da daxil olmaqla öyrəndik. OSGi-ni öz tətbiqinizə daxil etmək çətin deyil.
Xoşbəxt kodlaşdırma!
Cavab yaz