ОбновлСниС JPype 1.0.2, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для доступа ΠΊ Java-классам ΠΈΠ· Python

ДоступСн Π½ΠΎΠ²Ρ‹ΠΉ выпуск прослойки JPype 1.0.2, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ доступ Python-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ классов Π½Π° языкС Java. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ JPype ΠΈΠ· Python ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ спСцифичныС для Java Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, создавая Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹Π΅ прилоТСния, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ΄ Π½Π° Java ΠΈ Python. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Jython, интСграция с Java достигаСтся Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· созданиС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Python для JVM, Π° Ρ‡Π΅Ρ€Π΅Π· взаимодСйствиС Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠ±Π΅ΠΈΡ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ ΠΈ прСдоставляСт доступ ΠΊΠΎ всСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ CPython ΠΈ Java. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ измСнСния:

  • Π’ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ кэш, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΎΠΊ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ влияниС Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², особСнно Ссли ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° вызываСтся ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·, ΠΊΠ°ΠΊ Π²ΠΎ врСмя выполнСния Ρ†ΠΈΠΊΠ»ΠΎΠ².
  • ΠžΡ‚ 4 Π΄ΠΎ 100 Ρ€Π°Π·, Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ускорСна ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° списков, ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ ΠΈ Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² Π² массивы Java-ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ². ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² Π² памяти, вмСсто Sequence API. Когда Python-Π±ΡƒΡ„Π΅Ρ€ встрСчаСтся, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт провСряСтся для прСобразования, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΡ„Π΅Ρ€Ρ‹ ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹.
  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ shutdown (Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π΅Ρ‰Ρ‘ Π² JPype 1.0.0, Π½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ списка ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ). JPype Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ shutdown-ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ JVM, которая пытаСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ «gracefully». Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСскольким измСнСниям Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ. НС Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π½ΠΈΡ‚ΠΈ (proxy call) Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ JVM ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹. Π’Ρ‹Π·ΠΎΠ²Ρ‹ Proxy Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ shutdown Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π²Ρ‹Π·ΠΎΠ² Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½, Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ сообщСниС ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΈ. Π€Π°ΠΉΠ»Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ ΠΈ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° диск (flush), Ссли Π½ΠΈΡ‚ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Ρ…ΡƒΠΊΠΈ очистки рСсурсов ΠΈ Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹. ΠŸΡ€ΠΈ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ Π½ΠΈΡ‚Π΅ΠΉ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ AtExit-Ρ…ΡƒΠΊΠΈ. Π§Π΅Ρ€Π΅Π· Π΄Π΅ΠΌΠΎΠ½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ автоматичСскоС присоСдинСниС Π½ΠΈΡ‚Π΅ΠΉ ΠΏΡ€ΠΈ использовании JVM ΠΈΠ· Python. ΠžΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ очистку Π½ΠΈΡ‚ΠΈ, вСроятно зависнСт ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ shutdown. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ докумСнтация находится Π² руководствС ΠΏΠΎ использованию.
  • ΠžΠ±Ρ‘Ρ€Ρ‚ΠΊΠ° для Throwable ΠΏΠΎΠ»ΡƒΡ‡Π°Π»Π° ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΡƒ для Object вмСсто ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ странным прСобразованиям ΠΈΠ· Python-классов.
  • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ Π² систСмС ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, приводящиС ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ ошибки ‘»jname» not found’.
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ «^C» Π² KeyboardInterrupt.
  • УстранСна ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с символами с Python 3.5.3. PySlice_Unpack Π±Ρ‹Π» Π²Π²Π΅Π΄Ρ‘Π½ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΠ°Ρ‚Ρ‡-Ρ€Π΅Π»ΠΈΠ·Π΅ (3.5.4) ΠΈ Π΅Π³ΠΎ Π½Π΅ слСдовало ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.
  • Π Π°Π·ΠΎΠ±Ρ€Π°Π½Π° ошибка с numpy.linalg.inv, приводящая ΠΊ падСнию. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° отслСТСна Π΄ΠΎ взаимодСйствия ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ JVM ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ numpy. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ — Π²Ρ‹Π·ΠΎΠ² numpy.linalg.inv Π΄ΠΎ запуска JVM.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ