Verëffentlechung vun JPype 1.0, Bibliothéike fir Zougang zu Java Klassen aus Python

Verfügbar interlayer Fräisetzung JPype 1.0, wat Iech erlaabt de vollen Zougang vu Python Uwendungen op Java Klassebibliothéiken z'organiséieren. Mat JPype vu Python kënnt Dir Java-spezifesch Bibliothéike benotze fir Hybridapplikatiounen ze kreéieren déi Java a Python Code kombinéieren. Am Géigesaz zu Jython gëtt d'Integratioun mat Java net erreecht duerch d'Schafung vun enger Python Variant fir den JVM, mee duerch Interaktioun um Niveau vu béide virtuelle Maschinnen mat gemeinsame Gedächtnis. Déi proposéiert Approche erlaabt net nëmmen eng gutt Leeschtung ze erreechen, awer och Zougang zu all CPython an Java Bibliothéiken. Projet Code verdeelt duerch lizenzéiert ënner Apache 2.0.

Main Ännerungen:

  • 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__», поэтому типы исключений в некоторых проверках на адекватность должны быть обновлены соответствующе.

Source: opennet.ru

Setzt e Commentaire