เบเบฒเบ™เบ›เปˆเบญเบ JPype 1.0, เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบซเป‰เบญเบ‡เบฎเบฝเบ™ Java เบˆเบฒเบ Python

เบกเบตเปƒเบซเป‰ เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบง interlayer JPype 1.0, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Python เบเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบซเป‰เบญเบ‡เบฎเบฝเบ™ Java. เบ”เป‰เบงเบ JPype เบˆเบฒเบ Python, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบชเบฐเป€เบžเบฒเบฐ Java เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ›เบฐเบชเบปเบกเบ—เบตเปˆเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบฅเบฐเบซเบฑเบ” Java เปเบฅเบฐ Python. เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบš Jython, เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบš Java เปเบกเปˆเบ™เบšเบฑเบ™เบฅเบธเบšเปเปˆเป„เบ”เป‰เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบปเบงเปเบ› Python เบชเปเบฒเบฅเบฑเบš JVM, เปเบ•เปˆเป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเปƒเบ™เบฅเบฐเบ”เบฑเบšเบ‚เบญเบ‡เบ—เบฑเบ‡เบชเบญเบ‡เป€เบ„เบทเปˆเบญเบ‡ virtual เป‚เบ”เบเปƒเบŠเป‰เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบฎเปˆเบงเบกเบเบฑเบ™. เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบšเบฑเบ™เบฅเบธเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบต, เปเบ•เปˆเบเบฑเบ‡เปƒเบซเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” CPython เปเบฅเบฐ Java เบ—เบฑเบ‡เบซเบกเบปเบ”. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™ เปเบˆเบเบขเบฒเบเป‚เบ”เบ เบญเบฐเบ™เบธเบเบฒเบ”เบžเบฒเบเปƒเบ•เป‰ Apache 2.0.

เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ•เบปเป‰เบ™เบ•เป:

  • JChar เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เบเบฑเบšเบ„เบทเบ™. เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰, JChar เบชเบทเบšเบ—เบญเบ”เบˆเบฒเบ "str" โ€‹โ€‹โ€‹โ€‹เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปเบ›เบ‡ implicit เบเบฑเบš "int". เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เบœเปˆเบฒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปƒเบ™เบชเบฑเบ™เบเบฒ. เปเบ•เปˆเบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เบ•เบปเบงเป€เบฅเบเปƒเบ™ Python เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ isinstance(c, int) เบ›เบฐเป€เบกเบตเบ™เป€เบ›เบฑเบ™ False, เป€เบŠเบดเปˆเบ‡เบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบšเบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เปเบ›เบ‡เบ›เบฐเป€เบžเบ” Java.
  • เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเป€เบžเบทเปˆเบญเป‚เบเบ™เบ›เบฐเป€เบžเบ” Java, Type@obj (@ เปเบกเปˆเบ™เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ Python เบชเปเบฒเบฅเบฑเบšเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบžเบฒเบเปƒเบ™; Java เบšเปเปˆเบกเบตเบซเบ™เบถเปˆเบ‡).
  • เป€เบžเบตเปˆเบกเบซเบกเบฒเบเป€เบซเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡ Java arrays. เบžเบดเบก[s1][s2][s3] เบชเปเบฒเบฅเบฑเบš arrays เบ‚เบฐเบซเบ™เบฒเบ”เบ„เบปเบ‡เบ—เบตเปˆ, Type[:][:][:] เบชเปเบฒเบฅเบฑเบš arrays เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เบžเบฒเบเบซเบผเบฑเบ‡.
  • @FunctionalInterface เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡ Java function เบˆเบฒเบเบงเบฑเบ”เบ–เบธ Python เบ”เป‰เบงเบ __call__.
  • เบฅเบถเบš JIterator เบ—เบตเปˆเบšเปเปˆเบฎเบญเบ‡เบฎเบฑเบš, เปƒเบŠเป‰ JException เป€เบ›เบฑเบ™เป‚เบฎเบ‡เบ‡เบฒเบ™, get_default_jvm_path เปเบฅเบฐ jpype.reflect.
  • เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบชเบฐเบ•เบฃเบดเบ‡ Java เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบชเบฐเบ•เบฃเบดเบ‡ Python.
  • Python เป„เบ”เป‰เบ›เบฐเบ•เบดเป€เบชเบ” "__int__", เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เป‚เบเบ™ implicit เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ›เบฐเป€เบžเบ” integer เปเบฅเบฐ Floating-point เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ” TypeError.
  • เบเบฒเบ™เบ™เบณเปƒเบŠเป‰ JException เป„เบ”เป‰เบ–เบทเบเบเบปเบเป€เบฅเบตเบ. เป€เบžเบทเปˆเบญเบˆเบฑเบšเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ—เบฑเบ‡เปเบปเบ”, เบซเบผเบทเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบงเบฑเบ”เบ–เบธเปƒเบ”เปœเบถเปˆเบ‡เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ‚เบญเบ‡ Java, เปƒเบŠเป‰ java.lang.Throwable.
  • เบชเบฒเป€เบซเบ”เบ‚เบญเบ‡เบเบฒเบ™เบเบปเบเป€เบงเบฑเป‰เบ™ Java เป„เบ”เป‰เบ–เบทเบเบชเบฐเบ—เป‰เบญเบ™เปƒเบซเป‰เป€เบซเบฑเบ™เปƒเบ™เบเบญเบš Python stack.
  • JString เป„เบ”เป‰เบ–เบทเบเบเบปเบเป€เบฅเบตเบ. เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡ Java string, เบซเบผเบทเป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบงเบฑเบ”เบ–เบธเป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ” Java string, เปƒเบŠเป‰ java.lang.String.
  • เบงเบดเบ—เบตเบเบฒเบ™ Repr เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบ™เบซเป‰เบญเบ‡เบฎเบฝเบ™ Java.
  • java.util.List เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฑเบ™เบเบฒเบชเปเบฒเบฅเบฑเบš collections.abc.Sequence เปเบฅเบฐ collections.abc.MutableSequence.
  • java.util.Collection เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฑเบ™เบเบฒเบชเปเบฒเบฅเบฑเบš collections.abc.Collection.
  • เบซเป‰เบญเบ‡เบฎเบฝเบ™ Java เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบ•เบปเบงเปเบฅเบฐเบˆเบฐเบ–เบดเป‰เบก TypeError เป€เบกเบทเปˆเบญเบ‚เบฐเบซเบเบฒเบเบˆเบฒเบ Python.
  • เบˆเบฑเบ”เบเบฒเบ™ Control-C เบขเปˆเบฒเบ‡เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡. เบฅเบธเป‰เบ™เบเปˆเบญเบ™เปœเป‰เบฒเบ™เบตเป‰เบ‚เบฑเบ”เบ‚เป‰เบญเบ‡เป€เบกเบทเปˆเบญ Java เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบชเบฑเบ™เบเบฒเบ™ Control-C เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบˆเบฐเบ›เบดเบ” Java เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป‚เบ—. เบ”เบฝเบงเบ™เบตเป‰ JPype เบˆเบฐเบ–เบดเป‰เบก InterruptedException เป€เบกเบทเปˆเบญเบเบฑเบšเบ„เบทเบ™เบˆเบฒเบ Java. Control-C เบˆเบฐเบšเปเปˆเบ–เบดเป‰เบกเบ‚เบฐเบšเบงเบ™เบเบฒเบ™ Java เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ•เบฒเบกเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ Java เบšเปเปˆเบกเบตเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบžเบดเป€เบชเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰.

เบ•เปเปˆเป„เบ›, เบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เปเบเป‰เป„เบ‚ 1.0.1 เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เป€เบžเบตเปˆเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเบšเบฑเบ™เบซเบฒเบเบฑเบšเบเบฒเบ™เบ›เปˆเบญเบ Python 3.8.4. Python เป„เบ”เป‰เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบซเบ”เบœเบปเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ "__setattr__" เบชเปเบฒเบฅเบฑเบš "object" เปเบฅเบฐ "type", เบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ”เบฑเบ”เปเบ›เบ‡เบŠเบฑเป‰เบ™เบฎเบฝเบ™เบ—เบตเปˆเบกเบฒเบˆเบฒเบ. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบเบฑเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเบˆเบฒเบเบงเบดเบ—เบตเบเบฒเบ™ "__setattr__", เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เปƒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบžเบฝเบ‡เบžเปเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ„เบงเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบซเบกเบฒเบฐเบชเบปเบก.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™