На Хабре уже писалось о том, что такое Akonadi и с чем его едят, здесь я хочу написать о том, как же писать приложения, его использующие.
В качестве примера я рассмотрю простое консольное приложение, которое позволяет добавлять задачи в календарь. Почему именно консольное приложение? Чтобы не отвлекаться на аспекты, не имеющие прямого отношения к Akonadi.
Сегодня я хочу рассказать о JGroups. Это Java-библиотека для организации группового взаимодействия между различными процессами Java. Приложения, использующие JGroups могут:
Создавать и уничтожать группы
Присоединяться к группам и покидать их
Получать оповещения о новых членах групп
Отправлять сообщения конкретному процессу или всем процессам группы
Библиотека достаточно широко используется, в частности в сервере приложений JBoss, в кэше OSCache и в Grid-платформе Infinispan.
Здесь я ограничусь начальной информацией и опишу создание простого группового чата на Java.
Я обнаружил то, что для такой, казалось бы, стандартной задачи как добавлени Wiki-функциональности в Rails нет полноценного готового плагина, которое бы легко интегрировалось с существующим приложением. В связи с этим был написан свой.
Основными критериями при разработке были:
Возможность быстрой интеграции в приложение.
Хорошая расширяемость.
Отсутствие чужого кода (в смысле кода плагина) в приложении, к чему часто приводит использование генераторов. В этом смысле я пытался равняться на Authlogic.
То, что получилось представляет из себя что-то среднее между генератором (что обеспечивает хорошую расширяемость и модифицируемость) и engine'ом (чтобы можно было легко обновлять его).