ИздаванС Π½Π° JPype 0.7.2, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Java класовС ΠΎΡ‚ Python

На Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ мСТдуслойно освобоТдаванС JPype 0.7.2, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ пълСн Π΄ΠΎΡΡ‚ΡŠΠΏ Π½Π° прилоТСния Π½Π° Python Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с класовС Π½Π° Java. Π‘ JPype ΠΎΡ‚ Python ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ спСцифични Π·Π° Java Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π·Π° Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Ρ…ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΈ прилоТСния, ΠΊΠΎΠΈΡ‚ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚ ΠΊΠΎΠ΄ Π½Π° Java ΠΈ Python. Π—Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ Jython, интСграцията с Java сС постига Π½Π΅ Ρ‡Ρ€Π΅Π· ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° Python Π·Π° JVM, Π° Ρ‡Ρ€Π΅Π· взаимодСйствиС Π½Π° Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° Π΄Π²Π΅Ρ‚Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΈ сподСлСна ΠΏΠ°ΠΌΠ΅Ρ‚. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволява Π½Π΅ само Π΄Π° сС постигнС Π΄ΠΎΠ±Ρ€Π° производитСлност, Π½ΠΎ ΠΈ осигурява Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ всички CPython ΠΈ Java Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Код Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° разпространява сС ΠΎΡ‚ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€Π°Π½ ΠΏΠΎΠ΄ Apache 2.0.

Основни ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ:

  • Π˜Π·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ‚Π°, Ρ…Π²ΡŠΡ€Π»Π΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π° Π½Π° C++ ΠΈ Java, Π²Π΅Ρ‡Π΅ прСдоставят стСк Π·Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ възникнС ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ΄Π° Π½Π° Python. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, Π·Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ информация Π·Π° стСка с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚Π΅ stacktrace().
  • Бкоростта Π½Π° Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ Π΅ ΡƒΡ‚Ρ€ΠΎΠ΅Π½Π°.
  • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ (с ΠΏΠΎΡ€ΡΠ΄ΡŠΡ†ΠΈ) ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π° скорост Π½Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π²
    numpy Π±ΡƒΡ„Π΅Ρ€ΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΈ масиви. ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ копия само Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅, създадСни Π²ΡŠΡ‚Ρ€Π΅ Π² JVM с Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ C ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅.

  • Всички ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΈ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ са Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΈ с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° CPython ΠΈ символитС __javaclass__, __javavalue__ ΠΈ __javaproxy__
    ΠΈΠ·Ρ‚Ρ€ΠΈΡ‚ΠΈ. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»Π΅Π½ слот Π·Π° Java Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ към всички Ρ‚ΠΈΠΏΠΎΠ²Π΅ CPython, ΠΊΠΎΠΈΡ‚ΠΎ наслСдяват Ρ‚ΠΈΠΏΠΎΠ²Π΅ класовС jpype. Всички частни Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ са прСмСстСни Π² CPython. Java Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π²Π΅Ρ‡Π΅ трябва Π΄Π° наслСдяват ΠΎΡ‚ мСтакласа JClass, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° слотовС Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅. ΠœΠΈΠΊΡΠΈΠ½ΠΈΡ‚Π΅ Π·Π° Π±Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ класовС Π½Π° Python Π½Π΅ са Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ. Π’ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ са Object, Proxy, Exception, Number ΠΈ Array ΠΈ наслСдяват Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° CPython.

  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΎ прослСдяванС ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.
  • Π‘Ρ€Π΅Π·ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° масива Π²Π΅Ρ‡Π΅ сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ запис ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ към ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π°, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ масив numpy. Π—Π° нарязванС Π½Π° масив сС прСдоставя ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ ΠΈ ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° стойности Π² ΡΡ‚ΡŠΠΏΠΊΠΈ (slice(start, stop, step)).
  • ΠœΠ°ΡΠΈΠ²ΠΈΡ‚Π΅ Π²Π΅Ρ‡Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ "__reversed__".
  • Java масивитС Π²Π΅Ρ‡Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ API Π·Π° memoryview ΠΈ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Ρ‚ зависимостта ΠΎΡ‚ numpy Π·Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π±ΡƒΡ„Π΅Ρ€Π°.
  • Numpy Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ зависимост (Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ) ΠΈ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ към 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) Π½Π° Lists. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Java remove() Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ собствСното ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° Java, Π½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π΅ силно ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° ΠΏΡ€Π΅Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ.
  • java.lang.IndexOutOfBoundsException Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΡƒΠ»ΠΎΠ²Π΅Π½ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° класа Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ IndexError ΠΏΡ€ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° java.util.List.

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€