Вече разполагате със своя софтуер, но все още се нуждаете от по-ефективен метод, за да позволите на вашите технически потребители да разширят платформата.
Въпреки че OSGi е добре познат на повечето Java разработчици, интегрирането му във вашия продукт може да изглежда като трудна задача. Липсата на яснота относно точното функциониране на OSGi допълнително обърква пътя напред.
За разлика от всичко, с което биха искали да експериментират, OSGi се чувства по-скоро като опит за плаване в широкото море за много Java разработчици.
Тази статия ще ви запознае с пролетния урок за OSGi Felix с помощта на проста програма и ще разгледа нейните предимства и други важни подробности.
И така, какво е OSGi?
Създаването и разпространението на модули и компоненти става възможно благодарение на рамката на Java, известна като OSGi (Open Service Gateway Initiative).
Той набляга на капсулирането на функциите и хлабавото свързване, което предлага няколко предимства за разработчиците, включително модулна функционалност, която лесно се прехвърля между изходните кодове и тестване, което не се нуждае от безкрайни зависимости.
Как работи OSGi?
Система с динамични компоненти за Java се дефинира от набор от спецификации, наречени OSGi. Тези спецификации позволяват подход за разработка, при който едно приложение е изградено от няколко части и след това пакетирано в пакети.
Локални и мрежови услуги се използват от тези компоненти за комуникация. Целта е да се направи основният код на програмата възможно най-компактен. Възможно е силно свързване между този код и няколко компонента.
Изграждащите елементи на приложението за многократна употреба се наричат компоненти. Помислете за функции като пазарска количка за вашия уебсайт за електронна търговия или приложение за заплати за вашата система за управление на персонала.
Компонентите могат да използват OSGi, за да скрият своите реализации от други компоненти и да им предоставят само необходимите данни чрез услуги.
Това предпазва компонентите от неволно променяне на данните, до които не трябва да имат достъп, и управлява зависимостите.
Всички връзки между компонентите в OSGi приложение се осъществяват чрез услуги в идеален свят. Java пакет съдържа API, който е определен за услуги.
Сътрудничеството между доставчиците на услуги и клиентите изисква използването на класове и/или интерфейси, които съставят API.
Всички компоненти на OSGi са опаковани заедно в пакети, всеки от които включва ресурсите, от които се нуждаят, за да функционират. Bundles са доста ясни за това какво им трябва от околната среда и на какво са способни.
Ползи
- OSGi приложенията имат достъп до външни хранилища на пакети.
- Рамката позволява ориентиран към услугата дизайн на ниво модул.
- Това прави възможно управлението на версиите и зависимостите на пакетите приложения в допълнение към стандартизирането и улесняването на интегрирането на библиотеки на трети страни.
- Приложенията са по-адаптивни към променящите се изисквания, по-преносими и по-бързи за реинженеринг.
- A уеб приложение може да се разгърне като група от версионни пакети OSGi с динамичен живот благодарение на интеграцията на рамката с модела за програмиране Java EE.
- Вместо да бъде инсталирана като библиотека на трета страна като част от приложението, рамката осигурява декларативното сглобяване и опростено тестване на единици на Spring Framework в стандартизирана форма, която се предоставя като част от времето за изпълнение на сървъра на приложения.
- За корпоративни приложения, съставени от няколко версионни пакета с динамични жизнени цикли, рамката предлага изолация.
- Той съдържа интегрирано хранилище на пакети, което може да съхранява споделени общи и версионни пакети, използвани от няколко приложения, предотвратявайки всяко приложение да внедри отделно копие на всяка споделена библиотека.
Първи стъпки с OSGi Felix spring
Получаване на ресурсите
Като изтеглите най-новата версия на Apache Karaf от този сайт, можем да започнем нашето OSGi приключение.
Базиран на Apache Felix, реализацията на Apache на спецификацията OSGi, Apache Karaf предоставя платформа за приложения, базирани на OSGi.
Karaf предоставя различни полезни функции върху Felix, които ще ни помогнат да се запознаем с OSGi, като например интерфейс на командния ред, който ще ни позволи да комуникираме с платформата.
Входна точка за пакети
Едно приложение трябва да бъде пакетирано като OSGi пакет, преди да може да се изпълнява в OSGi среда. Освен това трябва да се посочи входната точка на приложението; това не е стандартната функция public static void main(String[] args).
Така че нека започнем със създаването на „Здравей, свят” приложение, базирано на OSGi.
Започваме с установяване на основна зависимост от OSGi API:
Средата за изпълнение на OSGi ще има достъп до зависимостта, следователно не е необходимо пакетът да я съдържа. Следователно той е маркиран като доставен.
Сега нека създадем простия клас HelloWorld:
Класовете, които действат като входни точки за пакети, трябва да имплементират осигурения от OSGi интерфейс BundleActivator.
Когато пакетът, съдържащ този клас, се стартира, платформата OSGi извиква функцията start(). От друга страна, малко преди пакетът да бъде спрян, се извиква функцията stop().
Нека не забравяме, че всеки пакет може да има само един BundleActivator. И двата начина могат да комуникират с OSGi runtime, като използват дадения обект BundleContext.
Създаване на пакет
Направете pom.xml истински OSGi пакет, като направите необходимите промени.
Първо трябва ясно да изразим, че нашата цел е да произведем пакет.
След това използваме приставката maven-bundle-plugin, за да пакетираме класа HelloWorld като OSGi пакет, с любезното съдействие на общността на Apache Felix:
Стойностите на OSGi заглавките, които искаме да включим в MANIFEST файла на пакета, са посочени в секцията с инструкции.
Bundle-Activator наистина е правилно квалифицираното име на решението BundleActivator, което ще бъде използвано за стартиране и спиране на пакета. Той е съвместим с току-що създадения клас.
Въпреки че не е OSGi хедър, хедърът Private-Package инструктира плъгина да добави пакета към пакета, но просто не го прави достъпен за други плъгини. Командата mvn install трябва да се използва за създаване на пакета.
Инсталиране и стартиране на пакета
Нека започнем Karaf, като изпълним тази команда:
където „KARAF HOME“ се отнася до папката, в която е бил настроен Karaf. Можем да използваме следната команда, за да инсталираме пакета, когато се появи подканата на конзолата на Karaf:
Използването на локалното хранилище на Maven е начинът, по който Караф се казва да зареди пакета.
Връщайки цифровия идентификатор на пакета, Караф го изписва. Този идентификатор може да се различава в зависимост от това колко пакета са били инсталирани преди това. Пакетът вече е инсталиран успешно и командата за стартирането му е следната:
В момента, в който стартирате пакета, се показва „Hello World от Jay“. Вече можем да спрем и премахнем пакета, като използваме:
Конзолата показва „Сбогом, свят от Джей“.
Заключение
Разработчиците могат лесно да добавят нова функционалност към съществуващо уеб приложение, като същевременно го поддържат защитено и изолирано от другите компоненти на основната програма, като използват OSGi.
В тази публикация научихме за OSGi, включително как функционира, предимствата му и простата програма. Не е трудно да включите OSGi във вашето собствено приложение.
Приятно кодиране!
Оставете коментар