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

មាន ការចេញផ្សាយស្រទាប់ JPype 0.7.2ដែលអនុញ្ញាតឱ្យកម្មវិធី Python មានសិទ្ធិចូលដំណើរការពេញលេញទៅកាន់បណ្ណាល័យថ្នាក់ក្នុងភាសា Java ។ ជាមួយ JPype ពី Python អ្នកអាចប្រើបណ្ណាល័យ Java-specific ដើម្បីបង្កើតកម្មវិធីកូនកាត់ដែលរួមបញ្ចូលគ្នារវាងកូដ Java និង Python ។ មិនដូច Jython ការរួមបញ្ចូលជាមួយ Java ត្រូវបានសម្រេចមិនមែនតាមរយៈការបង្កើត Python វ៉ារ្យ៉ង់សម្រាប់ JVM នោះទេ ប៉ុន្តែតាមរយៈអន្តរកម្មនៅកម្រិតនៃម៉ាស៊ីននិម្មិតទាំងពីរដោយប្រើអង្គចងចាំរួម។ វិធីសាស្រ្តដែលបានស្នើឡើងអនុញ្ញាតឱ្យមិនត្រឹមតែសម្រេចបាននូវដំណើរការល្អប៉ុណ្ណោះទេ ប៉ុន្តែថែមទាំងផ្តល់នូវការចូលទៅកាន់បណ្ណាល័យ CPython និង Java ទាំងអស់។ កូដគម្រោង ចែកចាយ​ដោយ មានអាជ្ញាប័ណ្ណក្រោម Apache 2.0 ។

ការផ្លាស់ប្តូរសំខាន់ៗ៖

  • Исключения, выброшенные в C++ и Java коде, теперь предоставляют стек исключений при возникновении исключения в коде на Python. Таким образом, чтобы получить информацию о стеке исключений отныне не нужно больше вызывать stacktrace().
  • В три раза увеличена скорость возврата при вызовах.
  • Существенно (на порядки) увеличена скорость передачи в
    numpy буферов многомерных массивов. Многомерные примитивы передают доступные только для чтения копии, созданные внутри JVM с непрерывной раскладкой C.

  • Все выставляемые внутренние компоненты заменены на реализации из CPython, а символы __javaclass__, __javavalue__ и __javaproxy__
    удалены. Ко всем типам CPython, унаследованным от типов класса jpype, добавлен выделенный Java-слот. Все приватные таблицы перенесены в CPython. Java-типы теперь должны наследоваться от метакласса JClass, который использует слоты типов. Примеси для базовых классов Python не допускаются. Типы Object, Proxy, Exception, Number и Array и наследуются напрямую от внутренних реализаций CPython.

  • Улучшена трассировка и обработка исключений.
  • Срезы массивов (Array slices) теперь обрабатываются в виде представлений, поддерживающих обратную запись в оригинал, такой как массив numpy. Для срезов массивов обеспечена поддержка установки и получения значения с шагом (slice(start, stop, step)).
  • В массивах реализована поддержка «__reversed__».
  • В Java-массивах обеспечена поддержка API memoryview и убрана зависимость от numpy для передачи содержимого буфера.
  • Numpy теперь не является зависимостью (extra) и передача памяти в numpy доступна без компиляции с поддержкой numpy.
  • JInterface оформлен в виде мета-класса. Используйте isinstance(cls, JInterface) для проверки на интерфейсы.
  • В импорты по умолчанию добавлены пропущенные TLD «mil», «net» и «edu».
  • Во время запуска улучшены сообщения об ошибках для UnsupportedClassVersion.
  • java.util.Map теперь выдаёт KeyError, если элемент не найден. Значения, которые null, по-прежнему возвращают None как и ожидается. Используйте get(), если пустые ключи требуется обрабатывать как None.
  • Удалён java.util.Collection, так как он странно перегружается между remove(Object) и remove(int) на List-ах. Используйте Java-метод remove() для доступа к оригинальному Java-поведению, но приведение типа строго рекомендуется для управления перегрузкой.
  • java.lang.IndexOutOfBoundsException теперь может быть пойман с помощью класса для исключений IndexError при доступе к элементам java.util.List.

ប្រភព: opennet.ru

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