Доступен новый выпуск прослойки JPype 1.0.2, позволяющей организовать полный доступ Python-приложений к библиотекам классов на языке Java. При помощи JPype из Python можно использовать специфичные для Java библиотеки, создавая гибридные приложения, сочетающие код на Java и Python. В отличие от Jython, интеграция с Java достигается не через создание варианта Python для JVM, а через взаимодействие на уровне обеих виртуальных машин, используя разделяемую память. Предложенный подход позволяет не только добиться хорошей производительности, но и предоставляет доступ ко всем библиотекам CPython и Java. Код проекта распространяется под лицензией Apache 2.0...Подробнее: https://www.opennet.me/opennews/art.shtml?num=53469
Чем это лучше py4j?
Тем, что в py4j требуется кооперация с разрабом либы дя внедрения в неё GatewayServer. Взаимодействие идёт по сети, что медленно.
Жава не нужен тк в тайлинге не применяется.
Как название библиотеки произносится по русски?
Хочешь форкнуть и внести в реестр "российского" ПО свой форк, но двойка по английскому не позволяет даже произнести название?
Джейпайп, нет?
> по русски?Жипипка
Можешь читать как "жепупе", если хочешь.
Согласно "Google переводчик", "JPype" произносится Дж пэ пи. По-английски "JPype" рифмуется с пи-пи, как компромат.
> доступа к Java-классам из PythonИ чего только не придумают, лишь бы на Си не писать.
В одном месте уже на си написали, такой говнокод получился ...struct pkginfo *pkg= (struct pkginfo*)argv[0]; // GPL-2.0+
Почему то почти везде, где чистый Си - там лютый говнокод. Видимо потому, что пишут его те, кого в к энтерпрайзу бы на милю не подпустили. Исключение - ядро Linux. Но IMHO и оттуда надо чистый си выпилить. Хотя бы из-за идиотского неявного приведения типов для указатели на функции, на которое я дохрена времени потратил, выискивая, где у меня memory safety проблемы. Оказалось - в прототипе в хедерах один тип, а в функциях, которые присваиваются в указатели - другой. И компилятор молчит.
В том же проекте: UB и утечки памяти.
Не говоря уже о проблемах, которые можно огрести абсолютно на ровном месте, используя вместо enumов препроцессор, и вместо inline-функций тоже препроцессор, как си-макаки любят. Видимо из совместимости с C89.
> где чистый Си - там лютый говнокодK&R C это чистый C? ANSI C чистый? C89 / 90 / 99 / 14 чистые? Про что вы говорите, это скорее всего какой-то старый код, потому он такой и есть.
> В том же проекте: UB и утечки памяти.
Кривые руки. Есть Valgrind, есть санитайзеры и есть статические анализаторы. C++ это тоже касается. Санитайзер с покрытием тестами находит все проблемы, если они и есть.
> и вместо inline-функций тоже препроцессор, как си-макаки любят
Макака которая это написала видимо даже Википедию не осилила, не говоря уже о стандарте. inline это РЕКОМЕНДАЦИЯ для компилятора, он может как ей последовать, так и забить болт. Плюс решаются проблемы линковки.
>Макака которая это написала видимо даже Википедию не осилила, не говоря уже о стандарте. inline это РЕКОМЕНДАЦИЯ для компилятора, он может как ей последовать, так и забить болт.Так и должно быть. Если имеет смысл заинлайнить - значит заинлайнит. Если не имеет - значит будет функция. Если ты не доверяшь компилятору, то пиши на ассемблере. В специфических случаях, когда надо гарантировать инлайн, используйте аттрибуты. Компилятор не поддерживает аттрибуты? На *** такой компилятор. Единственный компилятор для архитектуры имеет только C89? На *** такую архитектуру, переходите на ARM чипы.
>Плюс решаются проблемы линковки.
Нет никаких проблем линковки.
>Кривые руки. Есть Valgrind, есть санитайзеры и есть статические анализаторы. C++ это тоже касается. Санитайзер с покрытием тестами находит все проблемы, если они и есть.
Ими и нашёл.
Сказал бы сразу, что неосилятор. Вместо того позориться сходил бы книжку почитал умную.
и обратная библиотека Jep - запуск Python интерпретаторов в JVM:)
PyJava же
Интересно, jdbc через неё можно?
Т.е. можно запустить javascript в java и интерпретировать его из python? Мне очень надо исполнять жс в питоне, но биндинги к симанки что-то тухлые и это не в8, приходилось дёргать ноду. Это всё очень медленно работает.
Скорее всего вам лучше взять graalvm (node.js поверх truffle - в базовой комплектации) + graalpython, если graalpython имеет всё, что вам нужно.>биндинги к симанки что-то тухлые
вы наверное имели в виду spidermonkey?
как вариант - firefox + marionette + webdriver + selenium.
Да, наверное, оно. Спасибо, посмотрю. От браузера в этой схеме как раз и хотелось бы избавиться.
Давно пора объеденить яву с питоном, присыпать .Нетом полить электроном и отправить всю эту жижу в нежилую галактику. А кто вспомнит их в нашей - рубить голову и запрещать размножаться.