Utjefte fan JPype 0.7.2, biblioteken foar tagong ta Java-klassen fan Python

Beskikber interlayer release JPype 0.7.2, wΓͺrtroch jo folsleine tagong kinne organisearje fan Python-applikaasjes nei Java-klassebiblioteken. Mei JPype fan Python kinne jo Java-spesifike bibleteken brΓ»ke om hybride applikaasjes te meitsjen dy't Java en Python-koade kombinearje. Oars as Jython, wurdt yntegraasje mei Java net berikt troch it oanmeitsjen fan in Python-fariant foar de JVM, mar troch ynteraksje op it nivo fan beide firtuele masines mei dielde Γ»nthΓ’ld. De foarstelde oanpak lit net allinich goede prestaasjes berikke, mar jout ek tagong ta alle CPython- en Java-biblioteken. Projekt Code ferspraat troch lisinsje Γ»nder Apache 2.0.

Grutte feroaringen:

  • Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½Π½Ρ‹Π΅ Π² 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.

Boarne: opennet.ru

Add a comment