#python #osgi #apache-felix
#python #osgi #apache-felix
Вопрос:
Мне нужно интегрировать часть кода Python в существующее развертывание OSGi (Apache Felix). Я предполагаю или, по крайней мере, надеюсь, что существуют пакеты, помогающие в этом усилии.
Если это поможет, код Python все еще относительно новый и небольшой, поэтому, вероятно, может быть изменен заново, чтобы соответствовать любым необходимым ограничениям. Однако он должен оставаться в Python из-за зависимостей от сторонних библиотек.
Каковы рекомендуемые рекомендации?
Ответ №1:
Хитрость заключается в том, чтобы сделать это расширителем, см. 1 и 2. Вы хотите, чтобы ваш код Python был отделен от кода, который обрабатывает взаимодействие с интерпретатором. Итак, что вы делаете, это оборачиваете код Python и любые собственные библиотеки в пакет. Это тривиально, поскольку это всего лишь zip-файл.
Затем вы разрабатываете пакет, который прослушивает начальный пакет (см. BundleTracker), содержащий код python. Часто используется манифест, но вы также можете заглянуть в каталог в JAR. Если вы обнаружите этот код, вы извлекаете любые собственные библиотеки и запускаете код в выбранном вами интерфейсе.
Если вы можете использовать JYthon, это было бы настоятельно рекомендуется. Затем вы можете перенести интерпретатор в виде пакета OSGi, который выполняется на виртуальной машине. Если вам нужно использовать собственный компилятор, ваша жизнь менее радужна. Вы можете положиться на среду, которая предоставит вам интерпретатор, но тогда зачем вообще использовать OSGi. Вы в основном теряете преимущество записи после запуска в любом месте. Вы могли бы пойти полным ходом, создав пакеты, содержащие установщики Python для всех поддерживаемых вами платформ. Может быть сделано, даже не так сложно, но кошмар обслуживания. Поверьте мне, машинный код отстой, он делает это только немного быстрее, чем Java.