Спустя более четырёх лет с момента формирования прошлой значительной ветки доступен (https://github.com/jpype-project/jpype/releases/tag/v0.7) релиз прослойки JPype 0.7 (https://github.com/jpype-project/jpype/), позволяющей организовать полный доступ Python-приложений к библиотекам классов на языке Java. При помощи JPype из Python можно использовать специфичные для Java библиотеки, создавая гибридные приложения, сочетающие код на Java и Python. Код проекта распространяется под лицензией Apache 2.0.
В отличие от Jython, интеграция с Java достигается не через создание варианта Python для JVM, а через взаимодействие на уровне обеих виртуальных машин, используя разделяемую память. Предложенный подход позволяет не только добиться хорошей производительности, но и предоставляет доступ ко всем библиотекам CPython и Java. В новом выпуска полностью переписан код основного модуля, добавлена поддержка
unattached-потоков, улучшена защищённость, обеспечена трансляция Java-исключений в Python-исключения, изменено поведение при преобразовании строк.
URL: https://github.com/jpype-project/jpype/releases/tag/v0.7
Новость: https://www.opennet.me/opennews/art.shtml?num=50964
Не только Java. Я класс на Scala дёргаю.
> Не только Java. Я класс на Scala дёргаю.О надо же он и с Kotlin работает...
С котлином намного проще - разработчики котлина не стали вы******ся и методы неплохо соодветствуют методам с явы. Со скалой всё труднее: же большая часть времени была потрачена на то, чтобы найти нормальный декомпилятор, разобраться с инициализацией объектов, и написать некоторое количество кода, конвертящего иммутабельные типы в словари питона и обратно.
Мне даже страшно представить, зачем нужно приложение на джаве и питоне одновременно. Кто-нибудь знает примеры таких проектов? Сами они на гитхабе референсов не дали, либо я не нашёл.
Я знаю. Есть инструмент. Написан на Скале. Инструмент с интерфейсом командной строки. API отсвтствует. Надо его дёргать из питона. Баш-портянки можете себе ... не предлагать.Парсинг вывода командной строки - извращенство, подача аргументов через командную строку - уязвимость, каждый запуск Java-машины - тормоза, а ещё не все желаемые функции доступны через интерфейс командной строки.
А нам вообще плевать, что автор не планировал такого использования. Главнное что архитектура приложения нормальная, с разбивкой по классам и что классы существуют реально, как first-class citizens в виртуальной машине, а не как куча хардкорно оптимизированных инструкций общего назначения в x86.
Поэтому просто берём, импортируем нужные классы и делаем то, что нам надо.
То есть, потратить вечер на изучение синтаксиса скалы, чтобы дёргать апи этого "инструмента с нормальной архитектурой" внутри той же жвм - это почему-то сочли нецелесообразным?
А вот и хейтеры подехали. Принципиально дёргать именно из питона, а не из скалы. Конечно хейтеры могут сказать "чем скорее пистон сдохнет - тем лучше, поэтому развивать экосистему питона - это вредительство". Но нас рать на мнение этих хейтеров (и особенно - троллей). Haters gonna hate.
> Мне даже страшно представить, зачем нужно приложение на джаве и питоне одновременно. Кто-нибудь знает примеры таких проектов? Сами они на гитхабе референсов не дали, либо я не нашёл.
выставка поделок из дурдома? Питон и бигдата?......Такие вещи только студентам годятся для курсовиков. Но не более.
>бигдатаВ школе, где вы учились,и6глиш не учат? Или вы не осилили школьную программу? Data произносится как [deɪtə]. Bigdata произносится как [bɪgdeɪtə]. dataset произносится как [deɪtəsɛt]. Bitcoin произносится как [bɪtkɔɪn]. Android произносится как [ændrɔɪd].
Прежде чем кого-то отсылать к школьной программе английского языка вспомните основы русского, чем слово "пишется" отличается от слова "произносится".
> Bigdata произносится как [bɪgdeɪtə].Недостаточно бигдато звучит.
install_requires=['py4j==0.10.8.1'],
> install_requires=['py4j==0.10.8.1'],Удивительно: в проекте действительно связываются код на python и на java.
Для строительства костылей к Легаси коду?
Зачем оно, если есть groovy?
Чтобы дёргать Groovy-код из питона.
Боже мой... Куда мир катится!!! Сколько гемoра на пустом месте! Откройте для себя С++ и Ассемблер! Ну сколько можно городить огородные огороды!
вот не надо, хватило секаса с памятью, и головняка с дебагом таких случаев. Когда надо чтобы запустить прототип - питон великолепен, а дальше тюнингуешь нужные места. Если проект не взлетел - удаляешь, трудов затрачено минимум, взлетел - можешь уже переписать на чем-то компилируемом.
>> можешь уже переписать на чем-то компилируемом.ха-ха-ха, много напереписывали?
Вот C++ понятно, но Ассемблер нефейхуа, не кроссархитектурно же?
Вы охренели? Я на ассемблере вебскрапперы пишу, причем тут не архитектурно, зато быстро.
пруф давай на гитхабе.
он по заказу на каждую платформу. он же сказал быстро))
сделайте уже компилятор для питона в бинари. нефиг огород городить.да понимаю питон проще чем тот же с++, но блин вместо того , что бы сделать компилятор, делают смесь пантеры с носорогом)) хотя честно питон создавался именно для легкости написания и переносимости. тогда именно эта идея стояла. или создайте язык с синтаксисом аля питон и компилятором. здравых людей все меньше)))
Есть туча Ява кода в энтерпрайзе, ценою в десятилетия зарплаты. Отчего бы не поиметь профит с прошлых капитало-вложений.Переиспользуемость кода - правильный ход.
правильный? держать в работе 2 интерпритатора (все равно не получится полностью реализовать эту идею. не все пойдет)? и обои жрут производительность и память? он правильный только с точки зрения использования старого кода, но в остальном .... как говорится хотели заправить в дырявый бак бензин)))
Только гвидо может (мог) судить для чего создан питон. Даже в правилах питона такой пункт есть. А ты еретик и не нужен.
это они отслоились от "ВЕРЫ"))) в самом начале же кричали- "мы создадим идеально переносимую платформу". разве нет? его создавали примерно по тем же принципам , что и яву. вот только пути у них немного отличились. да и честно сказать код на питон и писать и читать проще явы. и уж если дергать из питона яй*, хм хвосты других яп то уж лучше чем из явы питона или других.)) а вообще идеальных яп не бывает. все с косяками, когда выходят за пределы того для чего создавались. а они все сейчас выходят. абсолютно. си/с++ всегда был языком системного программирования, а сейчас где попало используется( ну ладно хоть он лучше других подходит для этого), но блин наплодили всяких электронов и пихают их в системные. вот это из грязи в князи.
Больше питона лучше чем больше джавы.
у них у обоих есть свои ниши где они хороши. проблема в том , что их пропихивают туда куда не положено и для чего они не создавались. зато аля прогресс.
У питона, в отличии от Жавы, ниши нет. Он везде плох.
Надо чтоб в виртуалке из systemd путём активации legacy bash init-скриптов запускался докер-контейнер с питон-скриптами, запускающим JVM-код, зависящий от API.NET/mono, подгружающий perl-скрипты, дёргающие плагины на Go и общающийся с субпроцессами на node.js через XML.
Есть ещё предложения как это осовременить?
есть. собрать в один пакет это все и предложить как самый современный дергатель скриптов. назовем всежрущий комбаин. всежрущий относится ко всему - память, система и производительность. производители железа будут в шоке, но очень рады. начнем продвижение в основные компоненты систем.))))