ការចេញផ្សាយ JPype 1.0 ដែលជាបណ្ណាល័យសម្រាប់ចូលប្រើថ្នាក់ Java ពី Python

មាន ការចេញផ្សាយស្រទាប់ JPype 1.0ដែលអនុញ្ញាតឱ្យកម្មវិធី Python មានសិទ្ធិចូលដំណើរការពេញលេញទៅកាន់បណ្ណាល័យថ្នាក់ក្នុងភាសា Java ។ ជាមួយ JPype ពី Python អ្នកអាចប្រើបណ្ណាល័យ Java-specific ដើម្បីបង្កើតកម្មវិធីកូនកាត់ដែលរួមបញ្ចូលគ្នារវាងកូដ 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__», поэтому типы исключений в некоторых проверках на адекватность должны быть обновлены соответствующе.

ប្រភព: opennet.ru

បន្ថែមមតិយោបល់