В зависимости от вашей конкретной цели существует способ достижения полезности родительского селектора без использования одного (даже если бы он существовал) ...
Скажем, у нас есть:
<div>
<ul>
<li><a>Pants</a></li>
<li><a>Socks</a></li>
<ul>
<li><a>White socks</a></li>
<li><a>Blue socks</a></li>
</ul>
</ul>
</div>
Что мы можем сделать, чтобы блок Socks (включая цвета носка) выделялся визуально с использованием интервала?
Что было бы неплохо, но не существует:
ul li ul:parent {
margin-top: 15px;
margin-bottom: 15px;
}
Что существует:
li > a {
margin-top: 15px;
display: block;
}
li > a:only-child {
margin-top: 0px;
}
Это устанавливает, что все привязные ссылки имеют верхний край 15px и сбрасывают его обратно на 0 для тех, у которых нет элементов UL (или других тегов) внутри LI.
Почему бы не использовать Jython ? Единственный недостаток, о котором я могу сразу подумать, это то, что ваша библиотека использует собственные расширения CPython.
РЕДАКТИРОВАТЬ: Если вы можете использовать Jython сейчас , но думаете, что у вас могут быть проблемы с более поздней версией библиотеки, я предлагаю вы пытаетесь изолировать библиотеку от своего приложения (например, какой-то интерфейс адаптера). Выбирайте самую простую вещь, которая работает на данный момент, а затем рассмотрите JNI / CPython / и т.д., если и когда вам когда-нибудь понадобится. Мало что можно получить от (болезненного) пути JNI, если только в этом нет необходимости.
Лучшие решения, должен использовать бросок программ Python REST API. Вы определяете свои сервисы и называете их. Возможно, необходимо изучить некоторые новые модули. Но Вы будете более гибкими для изменений фьючерсов.
Здесь маленький список использования полные модули с этой целью: модули Python
Java (для вызова API отдыха) Джерси или Apache CXF
, Вам будет нужна небольшая Кривая обучения, но позже Вы получите больше производительности и модульного принципа и даже эластичности...
Frankly most ways to somehow run Python directly from within JVM don't work. They are either not-quite-compatible (new release of your third party library can use python 2.6 features and will not work with Jython 2.5) or hacky (it will break with cryptic JVM stacktrace not really leading to solution).
My preferred way to integrate the two would use RPC. XML RPC is not a bad choice here, if you have moderate amounts of data. It is pretty well supported — Python has it in its standard library. Java libraries are also easy to find. Now depending on your setup either Java or Python part would be a server accepting connection from other language.
A less popular but worth considering alternative way to do RPCs is Google protobuffers, which have 2/3 of support for nice rpc. You just need to provide your transport layer. Not that much work and the convenience of writing is reasonable.
Another option is to write a C wrapper around that pieces of Python functionality that you need to expose to Java and use it via JVM native plugins. You can ease the pain by going with SWIG SWIG.
Essentially in your case it works like that:
This solution is fairly complex, a bit of an overkill in most cases. Still it is worth doing if you (for some reason) cannot afford RPCs. RPC still would be my preferred choice, though.
Я исследовал аналогичную установку с JNI. Может быть, это поможет, если еще не видел:
http://wiki.cacr.caltech.edu/danse/index.php/Communication_between_Java_and_Python
Другая моя мысль - использовать JNI для связи с привязками C для Python.
Мне очень нравится JNA :
JNA обеспечивает легкий доступ к программам Java в собственные общие библиотеки (библиотеки DLL в Windows) без написания чего-либо, кроме кода Java - JNI или собственный код не требуется. Эта функциональность сравнима с типами Windows Platform / Invoke и Python. Доступ динамический во время выполнения без генерации кода.
Мои 0,02 доллара:)
Если вы можете заставить свой код Python работать в Jython, вы сможете использовать его для вызова из Java:
You could use a messaging service like ActiveMQ. It has both Python and Java support. This way, you can leave the complicated JNI or C bindings as they are and deal solely with what I consider a simple interface. Moreover, when the library gets updated, you don't need to change much, if anything.
Рассматривали ли вы возможность запуска Jython на виртуальной машине Java?