среда, 26 января 2011 г.

Введение в OSGi: Среда исполнения (Execution Environment)


Среда исполнения (Execution Environment) в мире OSGi - это символьное представление версии JRE, т.е. указание платформе с какой версией JRE совместимы классы, составляющие бандл.

Понятие "среда исполнения" становится необходимо, когда бандл разрабатывается на одной JRE, но предполагается, что использоваться он будет на другой JRE или, что более характерно, нескольких JRE. Возникновение данного понятия имеет глубокие исторические причины, т.к. OSGi изначально создавалась для использования во встроенных решениях, для которых имеется довольно широкое многообразие различных версий Java-платформы.

В общих чертах идея использования среды исполнения заключается в следующем: при разработке бандла указывается в каких версиях JRE предполагается его использовать, в зависимости от этого становятся доступными те или иные API. Во время исполнения же, если среда исполнения бандла не совместима со средой, в которой запущена платформа OSGi, он не будет загружаться.

В данной статье мы подробно рассмотрим следующие вопросы:
- Стандартные среды исполнения.
- Конфигурирование среды исполнения в Eclipse SDK.
- Настройка Eclipse PDE для верификации API, доступных в той или иной среде исполнения.
- Создание бадла и использование информации о среде исполнения при его разработке.
- Запуск бандлов в различных средах исполнения.

понедельник, 24 января 2011 г.

Eclipse RCP: Понятие "возможности" (feature) в Eclipse RCP


Одним из важных понятий платформы Eclipse является понятие "возможности" (feature). Под возможностью понимается логическая группа бандлов, которые рассматриваются как единое целое. Важность понятия "возможность" проистекает из того факта, что механизм обновления и инсталяции программного обеспечения, применяемый в платформе Eclipse, - Eclipse Equinox p2 - позволяет выбирать для установки/обновления только возможности.


Строго говоря, общепринятого перевода данного термина на русский язык не существует, поэтому здесь и далее будет употребляться слово "возможность". Если у вас есть другое мнение по данному вопросу - добро пожаловать в комментарии.


Если бандл является элементом технической декомпозиции, т.к. любое приложение, построенное на платформе Eclipse, с технической точки зрения может рассматриваться как множество бандлов, то возможность - это элемент маркетинговой декомпозиции, позволяющий указать, что некоторая группа бандлов является отдельной функциональностью, созданной разработчиком X, имеющей название Y и решающей тот или иной набор задач. Оперирование при установке/обновлении приложений возможностями, а не бандлами облегчает работу пользователей, т.к. позволяет им оперировать меньшим количеством более крупных компонентов, нежели отдельные бандлы.

При этом необходимо четко понимать, что возможность - это лишь логическое объединение бандлов, она не содержит jar-архивов, а значит один бандл может быть включен в несколько возможностей.

вторник, 11 января 2011 г.

Знакомимся: Tycho - набор плагинов к Maven для сборки OSGi-бандлов и RCP-приложений


Сообщество разработчиков Eclipse не перестает радовать новыми проектами. Об одном из молодых проектов мне бы и хотелось сегодня рассказать. Встречайте - проект Eclipse Tycho - набор плагинов к системе сборки Maven 3, позволяющий собирать OSGi-бандлы и RCP-приложения.

Допустим вполне резонный вопрос: зачем нужна еще одна система сборки для бандлов, если уже есть Eclipse PDE и BND-Tools? Основной особенностью Tycho является то, что он помогает разрешать зависимости, основываясь на файлах манифестов и Eclipse-специфичной метаинформации (файлы plugin.xml и feature.xml), что отличает его от BND-Tools и в тоже время делать это из командной строки с помощью Maven, не требуя установленного и запущенного Eclipse'а, в отличие от PDE. Первая возможность - manifest-based разрешение зависимостей - избавляет от необходимости делать двойную работу: прописывать зависимости в манифесте, а затем еще и в POM-файле. Вторая особенность - интеграция c Maven - позволяет управлять сборкой бандлов/плагинов с помощью систем непрерывной интеграции, например Hudson, а также использовать для разработки другие IDE - не содержащие Eclipse PDE, например IntelliJ IDEA.

Другой приятной возможностью Tycho является управление модульным и интеграционным тестированием в OSGi-среде. Можно создавать бандлы, которые будут содержать JUnit-тесты для плагинов, а Tycho возьмет на себя работу по запуску данных тестов, причем все это будет производиться в стандартном цикле сборки Maven'а. Данная функция аналогична возможности Run as JUnit Plug-in Test, предоставляемой PDE.

И, наконец, Tycho позволяет гибко управлять целевыми платформами, используемыми при сборке и тестировании бандлов/приложений, что облегчает пользователям подключение новых разработчиков к команде, т.к. позволяет не тратить время на решение вопросов вида "где взять тот или иной бандл, требуемый для приложения".

суббота, 8 января 2011 г.

Нет, я не забросил свой дневник


Во-первых, хочется поздравить всех читателей с прошедшим Новым годом.

Во-вторых, тех, кто празднует - с Рождеством.

В-третьих, хочется отметить, что в жизни моей произошли серьезные изменения: Я переехал в город-герой Москву - стал "понаехом".



Меня больше ничего не связывает с компанией Наумен, теперь я работаю в Москве. По личным причинам не буду разглашать текущее место работы, могу лишь написать про ряд особенностей: компания занимается как оутсорсингом, так и оутстаффингом. В клиентах компании ходит практически вся деловая Москва: от банков до промышленных предприятий. Проекты самые разные: от разработки учетных систем на базе JavaEE, до проектирования интеграционных решений (в основном на базе продуктов Oracle и IBM, но есть специалисты так же и по технологиям Microsoft). Думаю, что в компании, имеющей такой широкий портфель заказов, мне будет чему научиться.

Т.к. зачастую заказчики требуют присутствия программистов в их офисе, а заказчиков много, то приходится активно перемещаться по самому красивому городу России. Впрочем, есть и минусы: иногда дорога от дома до работы занимает около двух часов.

Немного жалею, что мало уделял внимания изучению систем промышленного уровня (например, WebLogic, SOA Suite, Oracle BPM и т.д.), нужно было меньше внимания уделять легковесным open source фреймворкам. Понятно, что у каждого фреймворка и технологии своя область использования, но умение управлять большими системами ценится выше. С другой стороны спрос на системы действительно промышленного уровня есть далеко не везде, например, в Челябинске я такой работы не видел.

В целом, несмотря на небольшие недостатки (в частности - время, которое приходится тратить на дорогу), я доволен.

Возможно кому-то будет интересно: пригласил меня непосредственно работодатель, сам я работу в Москве не искал. Все общение происходило на МоемКруге и в Скайпе. Там же - в Скайпе - было проведено собеседование. Что мне понравилось: не было мудацких вопросов типа "напишите запрос", разговор был больше "за жизнь". Так как Челябинск для меня так же неродной город, то особо ничего не удерживало. Работодатель же предоставил жилье в Москве, т.е. избавил от необходимости его искать и снимать. Мне кажется, это - идеальные условия для переезда. Если у вас есть вопросы, касающиеся работы в Москве и переезда в Москву, - задавайте их в комментариях.



UPD: Наконец-то решил вопрос с армией - получил честный военник. Взяток никому не давал, все делал по закону. Что могу сказать: не так страшен военкоматовский черт, как его малюют.

UPD2: Часто задают вопрос по поводу блога: почему я пишу мало статей для начинающих. Я понимаю, что это очень характерно для западной блогосферы - кто более Капитан Очевидность - тот и более заслуженный звездун, но это не характерно для русского менталитета. Я писал "статьи" в стиле Капитана, теперь мне за них стыдно, хотя такие статьи и приносят определенный трафик. Решил писать или о результатах каких-то миниисследований (что-то вроде "перелопатил литературу/источники и нашел, что..."), конкретно o своей практике или, в крайнем случае, теорию, но о том, о чем на русском языке писать не принято. Прошу не удивляться, если писать буду существенно меньше. Призываю приводить в комментариях темы, мнение Сурового о которых вам будет интересно.

Еще один момент: я выпилил свои аккаунты в Twitter'e, ВКонтакте (таки да!) и на Хабрахабре (ресурс для людей, озабоченных кармой, и прочих русофобов) ибо нефиг - работать надо.

Понравилось сообщение - подпишитесь на блог