Декларативные сервисы (DS) не являются устаревшими, они на самом деле являются самым чистым способом обработки привязки / отмены привязки служб в OSGi. Вы можете сделать это вручную, и это может быть лучше в зависимости от ваших сценариев использования, но в целом DS хороши. SpringDM использует Equinox, но они обернули его, чтобы вы могли сделать некоторые вещи более Springy. Я никогда не пробовал SpringDM, поэтому не могу много комментировать.
Если вы планируете использовать / интегрировать Spring в будущем, начните с SpringDM. В противном случае начните с DS. Если вам когда-нибудь понадобится что-то, что DS не может обработать, вы можете сделать это вручную с помощью сервис-трекеров. Допустимо смешивать DS и ручное обслуживание.
Я думаю, у вас есть четвертый вариант, называемый «Blueprint», который был предложен как альтернатива DS где-то в последние 2 года. Я не знаю, куда они попали, но я думаю, что SpringDM может использовать это внутренне.