The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Релиз JPype 1.0, библиотеки для доступа к Java-классам из Python

17.07.2020 02:12

Доступен релиз прослойки JPype 1.0, позволяющей организовать полный доступ Python-приложений к библиотекам классов на языке Java. При помощи JPype из Python можно использовать специфичные для Java библиотеки, создавая гибридные приложения, сочетающие код на Java и Python. В отличие от Jython, интеграция с Java достигается не через создание варианта Python для JVM, а через взаимодействие на уровне обеих виртуальных машин, используя разделяемую память. Предложенный подход позволяет не только добиться хорошей производительности, но и предоставляет доступ ко всем библиотекам CPython и Java. Код проекта распространяется под лицензией Apache 2.0.

Основные изменения:

  • JChar поддерживается как возвращаемый тип. Для совместимости JChar унаследован от "str" и реализует неявное преобразование в "int". Поэтому он проходит проверки в контрактах. Но это значит, что он больше не считается числовым типом в Python и поэтому isinstance(c, int) принимает значение False, что согласуется с правилами преобразования типов Java.
  • Введён оператор для приведения Java-типа Type@obj (@ - это оператор Python для внутреннего произведения, в Java его нет).
  • Добавлена нотация для создания массивов Java. Type[s1][s2][s3] для массивов фиксированных размеров, Type[:][:][:] для массивов, которые будут созданы позже.
  • @FunctionalInterface позволяет создавать Java-функторы из Python-объектов с __call__.
  • Удалены устаревшие JIterator, использование JException как фабрики, get_default_jvm_path и jpype.reflect.
  • По-умолчанию не происходит конвертация Java-строк в строки Python.
  • Python объявил нерекомендуемым "__int__", поэтому неявные приведения между целочисленными и с плавающей точкой типами будут производить TypeError.
  • Объявлено устаревшим использование JException. Чтобы поймать все исключения, или проверить, что объект является типом исключения Java, следует java.lang.Throwable.
  • Каскадные причины Java-исключений теперь отражаются в кадрах стека Python.
  • Объявлено устаревшим использование JString. Чтобы создать Java-строку, или проверить, что объект имеет тип Java-строки, используйте java.lang.String.
  • В Java-классах обновлены repr-методы.
  • java.util.List выполняет контракты для collections.abc.Sequence и collections.abc.MutableSequence.
  • java.util.Collection выполняет контракт for collections.abc.Collection.
  • Java-классы закрыты и будут бросать TypeError при расширении из Python.
  • Обработка Control-C аккуратно. Предыдущие версии падают когда Java обрабатывает Control-C сигнал, так как они завершат Java во время вызова. Теперь JPype создаст InterruptedException, когда будет возвращаться из Java. Control-C не выкинет из больших Java-процедур, как сейчас реализовано, так как Java не имеет специального средства для этого.

Следом сформирован корректирующий выпуск 1.0.1, в котором добавлены изменения для обхода проблем с релизом Python 3.8.4. Python изменил логику относительно использования "__setattr__" для "object" и "type", предотвращая её использование для изменения порождённых классов. Ещё проверка на ошибки была делегирована из метода "__setattr__", поэтому типы исключений в некоторых проверках на адекватность должны быть обновлены соответствующе.

  1. Главная ссылка к новости (https://github.com/jpype-proje...)
  2. OpenNews: Релиз JPype 0.7.2, библиотеки для доступа к Java-классам из Python
  3. OpenNews: Релиз JPype 0.7, библиотеки для доступа к Java-классам из Python
  4. OpenNews: Inlinec - новый способ использования Си-кода в Python-скриптах
  5. OpenNews: Проект Python намерен перевести отслеживание ошибок на GitHub
  6. OpenNews: Гвидо ван Россум предложил включить в Python операторы для сопоставления с образцом
Автор новости: Аноним
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/53382-jpype
Ключевые слова: jpype, python, java
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (22) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 09:31, 17/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Осталось теперь это запустить из Kivy и получим питон , с питоном и с Явой. Почти нативные приложения для Андроид.
     
     
  • 2.14, mid (??), 14:54, 17/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Из вашего киви даже камера не работает. Зачем он?
     
     
  • 3.30, Аноним (30), 03:41, 19/07/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Из вашего киви даже камера не работает. Зачем он?

    Чтобы ощутить себя в полной JPype!

     

  • 1.2, A.Stahl (ok), 09:31, 17/07/2020 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +5 +/
     

  • 1.3, Lex (??), 09:32, 17/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Гибридные приложения на питон + джава...
    И эти люди еще критикуют реакт-натив и электрон
     
  • 1.4, Аноним (4), 09:36, 17/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > Использование JException порицается.

    Ещё про товарищеский суд забыли написать

     
     
  • 2.5, Аноним (5), 09:45, 17/07/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это я так перевел deprecated.
     

  • 1.8, YetAnotherOnanym (ok), 13:01, 17/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > взаимодействие на уровне обеих виртуальных машин, используя разделяемую память

    Такой подход будет требовать аккуратности, к которой любители безопасных языков не приучены.

     
  • 1.10, Аноним (10), 13:57, 17/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ещё есть Jep
     
  • 1.13, Аноним (13), 14:41, 17/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Миф про тормозящую Java мертв уже давно, что касается тормозящего питона - если учесть что под капотом у него вполне себе шустрые бинарные либы на сях - может проблема в руках?
     
  • 1.17, Аноним (17), 17:59, 17/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Так я не понял, кто кого имел то? Жаба гадюку? Или все-таки наоборот?
     
     
  • 2.29, анонимуслинус (?), 03:06, 19/07/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    в природе обычно жабу по полной, а наоборот трудновато им будет))) ну а тут гибрид несовместимого прям как все эти лгбт))
     

  • 1.19, Аноним (19), 18:10, 17/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Чтобы тормозило и жрало память одновременно.
     
     
  • 2.24, Аноним (24), 21:10, 17/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    лучший комментарий))
     

  • 1.20, Аноним (19), 18:11, 17/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    https://static10.tgstat.ru/channels/_0/71/716a4e62c3bd01e73c4ff8efde1b373a.jpg
     
  • 1.21, ann (??), 19:09, 17/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нужно больше гибридности, больше зависимостей, ещё больше языков, больше новых технологий. Чтобы потом это можно было завернуть только в какойнибудь live iso и только так запускалось. Чтобы ни в коем случае нельзя было повторить сборку.

    Вот тогда заживём.

     
     
  • 2.32, Аноним (5), 08:24, 21/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Жду от вас полностью переписынные на python ANTLR4 и pdfbox.
     

  • 1.22, ann (??), 19:11, 17/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Даешь приложение для просмотра картинок на 28-ми языках по 4 версии каждого?
     
  • 1.27, Дядя Витя (?), 14:20, 18/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ИМХО как интеграционный бридж это окей
     
  • 1.28, Аноним (28), 21:35, 18/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что такого хорошего есть в старой джаве, чего нет в питоне?
     
     
  • 2.31, Аноним (-), 03:45, 19/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Что такого хорошего есть в старой джаве, чего нет в питоне?

    Ну вот же, он их раскусил! https://www.opennet.ru/openforum/vsluhforumID3/121302.html#19

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру