Когда я должен использовать Пакет Импорта и когда я должен использовать Требовать-пакет?

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

Кроме того общего принципа я собрал [приблизительно 110] общие ошибки сценария оболочки .

51
задан Lii 29 June 2017 в 05:29
поделиться

2 ответа

Я считаю, что Require-Bundle является частью Eclipse (которая теперь включена в спецификацию OSGi для поддержки Eclipse). «Чистый» способ OSGi - использовать Import-Package , поскольку он специально отделяет пакет от пакета, который его предоставляет. Вы должны объявлять зависимости от функциональности, которая вам нужна (API Java, предоставляемого определенной версией определенного пакета), а не от того, откуда эта функциональность поступает (что не должно иметь для вас значения). Это позволяет сохранять состав пакетов более гибким.

Аналогия с JavaScript: это похоже на определение того, поддерживает ли веб-браузер определенный API, а не на вывод из того, что строка пользовательского агента сообщает, что это за браузер.

Питер Кринс из OSGi Alliance может больше сказать об этом в блоге OSGi .

Вероятно, единственный случай, когда вам нужно использовать Require-Bundle , - это если у вас есть разделенные пакеты, то есть пакет, который распределен по нескольким пакетам. Разумеется, разделение пакетов не рекомендуется.

50
ответ дан 7 November 2019 в 10:18
поделиться

Я считаю, что Import-Package дает более слабую связь и должен быть предпочтительнее. Я использую его при объявлении зависимостей от пакетов, которыми я не владею, таких как slf4j, и могу менять реализации по своему желанию. Я использую Require-Bundle, когда зависимость - это то, что я контролирую, например, мои собственные пакеты, потому что любое важное изменение все равно прошло бы через меня.

5
ответ дан 7 November 2019 в 10:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: