ΡΠ΅Π»ΠΈΠ· Π½Π° ΡΠ»ΠΎΡ , ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° 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__
ΡΠ° ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠΈ. ΠΠ° Π²ΡΠΈΡΠΊΠΈ ΡΠΈΠΏΠΎΠ²Π΅ 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) Π½Π° ΡΠΏΠΈΡΡΡΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Java ΠΌΠ΅ΡΠΎΠ΄Π° remove() Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΡΠΎ Java ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π½ΠΎ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡΡΠ° Π΅ ΡΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠΈΡΠ΅Π»Π½Π° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠ΅ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ.
- java.lang.IndexOutOfBoundsException ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ»ΠΎΠ²Π΅Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠ»Π°ΡΠ° Π·Π° ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ IndexError ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° java.util.List.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
