ืฉื—ืจื•ืจ ืฉืœ JPype 1.0, ืกืคืจื™ื•ืช ืœื’ื™ืฉื” ืœืฉื™ืขื•ืจื™ Java ืž-Python

ื–ืžื™ืŸ ืฉื—ืจื•ืจ ื‘ื™ืŸ ื”ืฉื›ื‘ื•ืช JPype 1.0, ื”ืžืืคืฉืจ ืœืš ืœืืจื’ืŸ ื’ื™ืฉื” ืžืœืื” ืฉืœ ื™ื™ืฉื•ืžื™ Python ืœืกืคืจื™ื•ืช ื›ื™ืชื•ืช Java. ืขื JPype ืž-Python, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืกืคืจื™ื•ืช ืกืคืฆื™ืคื™ื•ืช ืœ-Java ื›ื“ื™ ืœื™ืฆื•ืจ ื™ื™ืฉื•ืžื™ื ื”ื™ื‘ืจื™ื“ื™ื™ื ื”ืžืฉืœื‘ื™ื ืงื•ื“ Java ื•-Python. ืฉืœื ื›ืžื• Jython, ืื™ื ื˜ื’ืจืฆื™ื” ืขื Java ืžื•ืฉื’ืช ืœื ื‘ืืžืฆืขื•ืช ื™ืฆื™ืจืช ื•ืจื™ืื ื˜ ืฉืœ Python ืขื‘ื•ืจ ื”-JVM, ืืœื ื‘ืืžืฆืขื•ืช ืื™ื ื˜ืจืืงืฆื™ื” ื‘ืจืžืช ืฉืชื™ ื”ืžื›ื•ื ื•ืช ื”ื•ื™ืจื˜ื•ืืœื™ื•ืช ื”ืžืฉืชืžืฉื•ืช ื‘ื–ื™ื›ืจื•ืŸ ืžืฉื•ืชืฃ. ื”ื’ื™ืฉื” ื”ืžื•ืฆืขืช ืžืืคืฉืจืช ืœื ืจืง ืœื”ืฉื™ื’ ื‘ื™ืฆื•ืขื™ื ื˜ื•ื‘ื™ื, ืืœื ื’ื ืžืกืคืงืช ื’ื™ืฉื” ืœื›ืœ ืกืคืจื™ื•ืช CPython ื•-Java. ืงื•ื“ ืคืจื•ื™ืงื˜ ืžื•ืคืฅ ืขืœ ื™ื“ื™ ืžื•ืจืฉื” ืชื—ืช Apache 2.0.

ืฉื™ื ื•ื™ื™ื ืขื™ืงืจื™ื™ื:

  • JChar ื ืชืžืš ื›ืกื•ื’ ื”ื—ื–ืจื”. ืœืฆื•ืจืš ืชืื™ืžื•ืช, JChar ื ื’ื–ืจ ืž-"str" โ€‹โ€‹ื•ืžื™ื™ืฉื ื”ืžืจื” ืžืจื•ืžื–ืช ืœ-"int". ืœื›ืŸ, ื”ื•ื ืžืขื‘ื™ืจ ืฆ'ืงื™ื ื‘ื—ื•ื–ื™ื. ืื‘ืœ ื–ื” ืื•ืžืจ ืฉื”ื•ื ื›ื‘ืจ ืœื ื ื—ืฉื‘ ืœืกื•ื’ ืžืกืคืจื™ ื‘-Python, ื•ืœื›ืŸ isinstance(c, int) ืžื•ืขืจืš ืœ-False, ืžื” ืฉืขื•ืœื” ื‘ืงื ื” ืื—ื“ ืขื ื›ืœืœื™ ื”ืžืจืช ื”ื˜ื™ืคื•ืก ืฉืœ Java.
  • ื”ื•ื›ื ืก ืื•ืคืจื˜ื•ืจ ืฉื™ื˜ื™ืœ ืืช ืกื•ื’ Java Type@obj (@ - ื–ื” ืื•ืคืจื˜ื•ืจ Python ืœืžื•ืฆืจ ื”ืคื ื™ืžื™, ื”ื•ื ืœื ืงื™ื™ื ื‘-Java).
  • ืกื™ืžื•ืŸ ื ื•ืกืฃ ืœื™ืฆื™ืจืช ืžืขืจื›ื™ Java. ืกื•ื’[s1][s2][s3] ืขื‘ื•ืจ ืžืขืจื›ื™ื ื‘ื’ื“ืœื™ื ืงื‘ื•ืขื™ื, ืกื•ื’[:][:][:] ืขื‘ื•ืจ ืžืขืจื›ื™ื ืฉื™ื™ื•ื•ืฆืจื• ืžืื•ื—ืจ ื™ื•ืชืจ.
  • @FunctionalInterface ืžืืคืฉืจ ืœืš ืœื™ืฆื•ืจ ืคื•ื ืงืฆื™ื•ืช Java ืžืื•ื‘ื™ื™ืงื˜ื™ื ืฉืœ Python ืขื __call__.
  • ื”ื•ืกืจ JIterator ืฉื”ื•ืฆื ืžืฉื™ืžื•ืฉ, JException ืฉื™ืžื•ืฉ ื‘ืžืคืขืœ, get_default_jvm_path ื•-jpype.reflect.
  • ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืžื—ืจื•ื–ื•ืช Java ืื™ื ืŸ ืžื•ืžืจื•ืช ืœืžื—ืจื•ื–ื•ืช Python.
  • Python ื”ื•ืฆื™ื ืžืฉื™ืžื•ืฉ ืืช "__int__", ื›ืš ืฉื”ื˜ืœื•ืช ืžืจื•ืžื–ื•ืช ื‘ื™ืŸ ืกื•ื’ื™ ืžืกืคืจ ืฉืœื ื•-float ื™ื™ืฆืจื• TypeError.
  • ืฉื™ืžื•ืฉ ื”ื•ืฆื ืžืฉื™ืžื•ืฉ ื‘-JException. ื›ื“ื™ ืœืชืคื•ืก ืืช ื›ืœ ื”ื—ืจื™ื’ื™ื, ืื• ืœื‘ื“ื•ืง ืฉืื•ื‘ื™ื™ืงื˜ ื”ื•ื ืกื•ื’ ื—ืจื™ื’ ืฉืœ Java, java.lang.Throwable ื™ื•ืคื™ืข ื‘ื”ืžืฉืš.
  • ื”ืกื™ื‘ื•ืช ื”ื—ืจื™ื’ื•ืช ืฉืœ Java ืžืฉืชืงืคื•ืช ื›ืขืช ื‘ืžืกื’ืจื•ืช ืžื—ืกื ื™ืช ืฉืœ Python.
  • ืฉื™ืžื•ืฉ ืฉื”ื•ืฆื ืžืฉื™ืžื•ืฉ ื‘-JString. ื›ื“ื™ ืœื™ืฆื•ืจ ืžื—ืจื•ื–ืช Java, ืื• ืœื‘ื“ื•ืง ืฉืื•ื‘ื™ื™ืงื˜ ื”ื•ื ืžืกื•ื’ Java string, ื”ืฉืชืžืฉ ื‘-java.lang.String.
  • ืฉื™ื˜ื•ืช Repr ืขื•ื“ื›ื ื• ื‘ืฉื™ืขื•ืจื™ Java.
  • java.util.List ืžืงื™ื™ืžืช ืืช ื”ื—ื•ื–ื™ื ืขื‘ื•ืจ collections.abc.Sequence ื•-collects.abc.MutableSequence.
  • java.util.Collection ืžืงื™ื™ื ืืช ื”ื—ื•ื–ื” ืฉืœ for collections.abc.Collection.
  • ืฉื™ืขื•ืจื™ Java ื”ื ืคืจื˜ื™ื™ื ื•ื™ื–ืจืงื• TypeError ื›ืืฉืจ ื”ื ืžื•ืจื—ื‘ื™ื ืž-Python.
  • ืœื˜ืคืœ ื‘-Control-C ื‘ืฆื•ืจื” ืžืกื•ื“ืจืช. ื’ืจืกืื•ืช ืงื•ื“ืžื•ืช ืงื•ืจืกื•ืช ื›ืืฉืจ Java ืžืขื‘ื“ืช ืื•ืช Control-C, ืžื›ื™ื•ื•ืŸ ืฉื”ืŸ ื™ืคืกื™ืงื• ืืช Java ื‘ืžื”ืœืš ื”ืฉื™ื—ื”. JPype ื™ื–ืจื•ืง ื›ืขืช InterruptedException ื›ืืฉืจ ื”ื•ื ื™ื—ื–ื•ืจ ืžื’'ืื•ื•ื”. Control-C ืœื ื™ื•ืฆื™ื ืจื•ื˜ื™ื ื•ืช ื’'ืื•ื•ื” ื’ื“ื•ืœื•ืช ื›ืคื™ ืฉื”ื™ื ืขื•ืฉื” ื›ืจื’ืข, ืžื›ื™ื•ื•ืŸ ืฉืœื’'ืื•ื•ื” ืื™ืŸ ืžืชืงืŸ ืžื™ื•ื—ื“ ืœื›ืš.

ืœืื—ืจ ืžื›ืŸ ื ื•ืฆืจื” ืžื”ื“ื•ืจืช ืชื™ืงื•ืŸ ืฉืœ 1.0.1, ืฉื”ื•ืกื™ืคื” ืฉื™ื ื•ื™ื™ื ื›ื“ื™ ืœืขืงื•ืฃ ื‘ืขื™ื•ืช ืขื ืฉื—ืจื•ืจ Python 3.8.4. Python ืฉื™ื ืชื” ืืช ื”ื”ื™ื’ื™ื•ืŸ ืœื’ื‘ื™ ื”ืฉื™ืžื•ืฉ ื‘-"__setattr__" ืขื‘ื•ืจ "ืื•ื‘ื™ื™ืงื˜" ื•-"ืกื•ื’", ื•ืžื ืขื” ืžืžื ื• ืœื”ืฉืชืžืฉ ืœืฉื™ื ื•ื™ ืžื—ืœืงื•ืช ื ื’ื–ืจื•ืช. ื›ืžื• ื›ืŸ, ื‘ื“ื™ืงืช ืฉื’ื™ืื•ืช ื”ื•ืืฆืœื” ืžืฉื™ื˜ืช "__setattr__", ื›ืš ืฉื™ืฉ ืœืขื“ื›ืŸ ืืช ืกื•ื’ื™ ื”ื—ืจื™ื’ื™ื ื‘ื—ืœืง ืžื‘ื“ื™ืงื•ืช ื”ืฉืคื™ื•ืช ื‘ื”ืชืื.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”