თქვენ უკვე გაქვთ თქვენი პროგრამული უზრუნველყოფა, მაგრამ მაინც გჭირდებათ უფრო ეფექტური მეთოდი, რათა თქვენს ტექნიკურ მომხმარებლებს საშუალება მისცეთ გააფართოვონ პლატფორმა.
მიუხედავად იმისა, რომ 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 გთავაზობთ სხვადასხვა სასარგებლო ფუნქციებს ფელიქსის თავზე, რაც დაგვეხმარება OSGi-სთან გაცნობაში, როგორიცაა ბრძანების ხაზის ინტერფეისი, რომელიც საშუალებას მოგვცემს დაუკავშირდეს პლატფორმას.
შესვლის წერტილი პაკეტებისთვის
აპლიკაცია უნდა იყოს შეფუთული, როგორც OSGi პაკეტში, სანამ შესაძლებელი იქნება მისი გაშვება OSGi გარემოში. დამატებით უნდა იყოს მითითებული განაცხადის შესვლის წერტილი; ეს არ არის სტანდარტული საჯარო სტატიკური void main (String[] args) ფუნქცია.
ასე რომ, დავიწყოთ შექმნით "გამარჯობა მსოფლიო” აპლიკაცია OSGi-ზე დაფუძნებული.
ჩვენ ვიწყებთ ძირითადი OSGi API დამოკიდებულების ჩამოყალიბებით:
OSGi Runtime-ს ექნება წვდომა დამოკიდებულებაზე, ამიტომ ნაკრები არ საჭიროებს მას შეიცავდეს. ამიტომ, იგი მონიშნულია როგორც მიწოდებული.
ახლა მოდით შევქმნათ მარტივი HelloWorld კლასი:
კლასებმა, რომლებიც მოქმედებენ როგორც პაკეტების შესვლის წერტილები, უნდა განახორციელონ OSGi-ს მიერ მოწოდებული BundleActivator ინტერფეისი.
როდესაც ამ კლასის შემცველი პაკეტი გაშვებულია, OSGi პლატფორმა იძახებს start() ფუნქციას. მეორე მხარეს, პაკეტის გაჩერებამდე ცოტა ხნით ადრე, გამოიძახება ფუნქცია stop().
არ დაგვავიწყდეს, რომ თითოეულ პაკეტს შეიძლება ჰქონდეს მხოლოდ ერთი BundleActivator. ორივე გზას შეუძლია დაუკავშირდეს OSGi გაშვების დროს მოცემული BundleContext ობიექტის გამოყენებით.
Bundle-ის შექმნა
აქციეთ pom.xml ნამდვილ OSGi პაკეტად საჭირო ცვლილებების შეტანით.
ჯერ ნათლად უნდა გამოვხატოთ, რომ ჩვენი მიზანია შეკვრის წარმოება.
შემდეგ, ჩვენ ვიყენებთ maven-bundle-პლაგინს HelloWorld კლასის OSGi პაკეტად შესაფუთად, Apache Felix საზოგადოების თავაზიანობით:
OSGi სათაურების მნიშვნელობები, რომლებიც გვინდა შევიტანოთ ნაკრების MANIFEST ფაილში, მითითებულია ინსტრუქციების განყოფილებაში.
Bundle-Activator ნამდვილად არის BundleActivator გადაწყვეტის სათანადოდ კვალიფიციური სახელი, რომელიც გამოყენებული იქნება პაკეტის დასაწყებად და შესაჩერებლად. ის თავსებადია ახლად შექმნილ კლასთან.
მიუხედავად იმისა, რომ ეს არ არის OSGi სათაური, Private-Package სათაური ავალებს დანამატს დაამატოთ პაკეტი პაკეტში, მაგრამ უბრალოდ არ გახადოს იგი ხელმისაწვდომი სხვა დანამატებისთვის. პაკეტის შესაქმნელად გამოყენებული უნდა იყოს mvn install ბრძანება.
პაკეტის ინსტალაცია და გაშვება
დავიწყოთ კარაფი ამ ბრძანების გაშვებით:
სადაც „KARAF HOME“ მიუთითებს საქაღალდეზე, სადაც შეიქმნა Karaf. ჩვენ შეგვიძლია გამოვიყენოთ შემდეგი ბრძანება პაკეტის დასაყენებლად, როდესაც გამოჩნდება კარაფის კონსოლის მოთხოვნა:
ადგილობრივი Maven საცავის გამოყენებით კარაფს ეუბნებიან ჩატვირთოს პაკეტი.
აბრუნებს პაკეტის ციფრულ ID-ს, Karaf წერს მას. ეს ID შეიძლება განსხვავდებოდეს იმის მიხედვით, თუ რამდენი პაკეტი იყო ადრე დაინსტალირებული. პაკეტი ახლა წარმატებით დაინსტალირებულია და მისი გაშვების ბრძანება შემდეგია:
პაკეტის გაშვების მომენტში გამოჩნდება "Hello World by Jay". ახლა ჩვენ შეგვიძლია შევაჩეროთ და ამოიღოთ პაკეტი:
კონსოლზე ნაჩვენებია "Goodbye World by Jay".
დასკვნა
დეველოპერებს შეუძლიათ მარტივად დაამატონ ახალი ფუნქციონალობა არსებულ ვებ აპლიკაციაში, ხოლო შეინარჩუნონ იგი უსაფრთხო და იზოლირებული ძირითადი პროგრამის სხვა კომპონენტებისგან OSGi-ს გამოყენებით.
ჩვენ გავიგეთ OSGi-ს შესახებ ამ პოსტში, მათ შორის როგორ მუშაობს, მისი უპირატესობები და მარტივი პროგრამა. არ არის რთული OSGi-ს საკუთარ აპლიკაციაში ჩართვა.
ბედნიერი კოდირება!
დატოვე პასუხი