ИзданиС Π½Π° 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().
  • Π‘Ρ€Π·ΠΈΠ½Π°Ρ‚Π° Π½Π° Π²Ρ€Π°ΡœΠ°ΡšΠ΅ Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠΎΡ‚ Π΅ Ρ‚Ρ€ΠΎΡ˜Π½ΠΎ Π·Π³ΠΎΠ»Π΅ΠΌΠ΅Π½Π°.
  • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ (ΠΏΠΎ Ρ€Π΅Π΄ΠΎΠ²ΠΈ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°) Π·Π³ΠΎΠ»Π΅ΠΌΠ΅Π½Π° Π±Ρ€Π·ΠΈΠ½Π° Π½Π° прСнос Π²ΠΎ
    Π½ΡƒΠΌΠΏΠΈΡ‡Π½ΠΈ Π±Π°Ρ„Π΅Ρ€ΠΈ Π½Π° повСќСдимСнзионални Π½ΠΈΠ·ΠΈ. ΠŸΠΎΠ²Π΅ΡœΠ΅Π΄ΠΈΠΌΠ΅Π½Π·ΠΈΠΎΠ½Π°Π»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΈ прСнСсуваат ΠΊΠΎΠΏΠΈΠΈ само Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅ создадСни Π²ΠΎ JVM со сосСдСн распорСд C.

  • Π‘ΠΈΡ‚Π΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ сС Π·Π°ΠΌΠ΅Π½Π΅Ρ‚ΠΈ со ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° CPython, Π° симболитС __javaclass__, __javavalue__ ΠΈ __javaproxy__
    ΠΈΠ·Π±Ρ€ΠΈΡˆΠ°Π½ΠΈ. НамСнски слот Π·Π° Java Π΅ Π΄ΠΎΠ΄Π°Π΄Π΅Π½ Π½Π° ситС Ρ‚ΠΈΠΏΠΎΠ²ΠΈ CPython ΠΊΠΎΠΈ наслСдуваат ΠΎΠ΄ Ρ‚ΠΈΠΏΠΎΠ²ΠΈΡ‚Π΅ Π½Π° класата jpype. Π‘ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΈ Ρ‚Π°Π±Π΅Π»ΠΈ сС прСмСстСни Π²ΠΎ CPython. Јава Ρ‚ΠΈΠΏΠΎΠ²ΠΈΡ‚Π΅ сСга ΠΌΠΎΡ€Π° Π΄Π° наслСдат ΠΎΠ΄ мСтакласата JClass, која користи слотови Π·Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ. НС сС Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΈ мСшавини Π·Π° основни класи Π½Π° Python. Π’ΠΈΠΏΠΎΠ²ΠΈΡ‚Π΅ сС ΠžΠ±Ρ˜Π΅ΠΊΡ‚, ΠŸΡ€ΠΎΠΊΡΠΈ, Π˜ΡΠΊΠ»ΡƒΡ‡ΠΎΠΊ, Π‘Ρ€ΠΎΡ˜ ΠΈ Низа ΠΈ наслСдуваат Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ΄ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΈΡ‚Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° CPython.

  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΎ слСдСњС ΠΈ Ρ€Π°ΠΊΡƒΠ²Π°ΡšΠ΅ со исклучоци.
  • ΠŸΠ°Ρ€Ρ‡ΠΈΡšΠ°Ρ‚Π° Π½ΠΈΠ·Π° сСга сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΡƒΠ²Π°Π°Ρ‚ ΠΊΠ°ΠΊΠΎ ΠΏΡ€ΠΈΠΊΠ°Π·ΠΈ ΡˆΡ‚ΠΎ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π°Π°Ρ‚ ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π°Π·Π°Π΄ Π²ΠΎ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΠΎΡ‚, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ Π½ΡƒΠ»Π° Π½ΠΈΠ·Π°. Π—Π° ΡΠ΅Ρ‡Π΅ΡšΠ΅ Π½ΠΈΠ·ΠΈ, ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ ΠΈ ΠΏΡ€Π΅Π·Π΅ΠΌΠ°ΡšΠ΅ врСдности Π²ΠΎ Ρ‡Π΅ΠΊΠΎΡ€ΠΈ (ΠΏΠ°Ρ€Ρ‡Π΅ (ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊ, стоп, Ρ‡Π΅ΠΊΠΎΡ€)).
  • НизитС сСга ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π°Π°Ρ‚ β€ž__reversed__β€œ.
  • Јава Π½ΠΈΠ·ΠΈΡ‚Π΅ сСга Π³ΠΎ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π°Π°Ρ‚ API-Ρ‚ΠΎ Π½Π° memoryview ΠΈ ја отстрануваат зависноста ΠΎΠ΄ numpy Π·Π° ΠΏΡ€Π΅Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅ Π½Π° содрТината Π½Π° Π±Π°Ρ„Π΅Ρ€ΠΎΡ‚.
  • Numpy повСќС Π½Π΅ Π΅ зависност (Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½) ΠΈ прСносот Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° Π²ΠΎ numpy Π΅ достапСн Π±Π΅Π· ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°ΡšΠ΅ со ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° numpy.
  • JInterface Π΅ Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½ ΠΊΠ°ΠΊΠΎ ΠΌΠ΅Ρ‚Π° класа. ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ‚Π΅ ininstance (cls, JInterface) Π·Π° Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π΄Π°Π»ΠΈ ΠΈΠΌΠ° ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΈ.
  • Π”ΠΎΠ΄Π°Π΄Π΅Π½ΠΈ нСдостасуваат TLD β€žmilβ€œ, β€žnetβ€œ ΠΈ β€žeduβ€œ Π½Π° стандарднитС ΡƒΠ²ΠΎΠ·ΠΈ.
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈ ΠΏΠΎΡ€Π°ΠΊΠΈ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π·Π° UnsupportedClassVersion ΠΏΡ€ΠΈ ΡΡ‚Π°Ρ€Ρ‚ΡƒΠ²Π°ΡšΠ΅.
  • java.util.Map сСга Π΄Π°Π²Π° ΠšΠ»ΡƒΡ‡Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π°ΠΊΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΡ‚ Π½Π΅ Π΅ ΠΏΡ€ΠΎΠ½Π°Ρ˜Π΄Π΅Π½. ВрСдноститС ΠΊΠΎΠΈ сС Π½ΡƒΠ»Π° сè ΡƒΡˆΡ‚Π΅ сС Π²Ρ€Π°ΡœΠ°Π°Ρ‚ Ниту Π΅Π΄Π½Π° ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС ΠΎΡ‡Π΅ΠΊΡƒΠ²Π°ΡˆΠ΅. ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ‚Π΅ get() Π°ΠΊΠΎ сакатС Π΄Π° Π³ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π°Ρ‚Π΅ ΠΏΡ€Π°Π·Π½ΠΈΡ‚Π΅ ΠΊΠ»ΡƒΡ‡Π΅Π²ΠΈ ΠΊΠ°ΠΊΠΎ None.
  • ΠžΡ‚ΡΡ‚Ρ€Π°Π½Π΅Ρ‚ java.util.Collection бидСјќи Ρ‡ΡƒΠ΄Π½ΠΎ сС ΠΏΡ€Π΅ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ remove(Object) ΠΈ remove(int) Π½Π° листитС. ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ‚Π΅ Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΡ‚ Java remove() Π·Π° пристап Π΄ΠΎ ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΌΠ°Ρ˜Ρ‡ΠΈΠ½ Java, Π½ΠΎ строго сС ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π° Ρ‚ΠΈΠΏ casting Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° ΠΏΡ€Π΅ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅.
  • java.lang.IndexOutOfBoundsException сСга ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ„Π°Ρ‚ΠΈ со помош Π½Π° класата Π·Π° исклучок IndexError ΠΏΡ€ΠΈ пристап Π΄ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° java.util.List.

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€