ืžืขืœื“ื•ื ื’ ืคื•ืŸ JPype 0.7.2, ืึท ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืคึฟืึทืจ ืึทืงืกืขืก Java ืงืœืืกืŸ ืคึฟื•ืŸ Python

ื‘ื ื™ืžืฆื ืฉื™ื›ื˜ืข ืžืขืœื“ื•ื ื’ JPype 0.7.2, ื•ื•ืึธืก ืึทืœืึทื•ื– Python ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืฆื• ื”ืึธื‘ืŸ ืคื•ืœ ืึทืงืกืขืก ืฆื• ืงืœืึทืก ืœื™ื™ื‘ืจืขืจื™ื– ืื™ืŸ ื“ื™ Java ืฉืคึผืจืึทืš. ืžื™ื˜ JPype ืคึฟื•ืŸ Python, ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ Java-ืกืคึผืขืฆื™ืคื™ืฉ ืœื™ื™ื‘ืจืขืจื™ื– ืฆื• ืฉืึทืคึฟืŸ ื›ื™ื™ื‘ืจื™ื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ื•ื•ืึธืก ืคืึทืจื‘ื™ื ื“ืŸ Java ืื•ืŸ Python ืงืึธื“. ื ื™ื˜ ืขื ืœืขืš Jython, ื™ื ืึทื’ืจื™ื™ืฉืึทืŸ ืžื™ื˜ Java ืื™ื– ืึทื˜ืฉื™ื•ื•ื“ ื ื™ื˜ ื“ื•ืจืš ืงืจื™ื™ื™ื˜ื™ื ื’ ืึท ืคึผื™ื˜ื”ืึธืŸ ื•ื•ืึทืจื™ืึทื ื˜ ืคึฟืึทืจ ื“ื™ JVM, ืึธื‘ืขืจ ื“ื•ืจืš ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืื•ื™ืฃ ื“ื™ ืžื“ืจื’ื” ืคื•ืŸ ื‘ื™ื™ื“ืข ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ ื ื™ืฆืŸ ืฉืขืจื“ ื–ื›ึผืจื•ืŸ. ื“ืขืจ ืคืืจื’ืขืœื™ื™ื’ื˜ ืฆื•ื’ืึทื ื’ ืึทืœืึทื•ื– ื ื™ื˜ ื‘ืœื•ื™ื– ืฆื• ื“ืขืจื’ืจื™ื™ื›ืŸ ื’ื•ื˜ ืคืึธืจืฉื˜ืขืœื•ื ื’, ืึธื‘ืขืจ ืื•ื™ืš ื’ื™ื˜ ืึทืงืกืขืก ืฆื• ืึทืœืข CPython ืื•ืŸ Java ืœื™ื™ื‘ืจืขืจื™ื–. ืคึผืจืึธื™ืขืงื˜ ืงืึธื“ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื“ื•ืจืš ืœื™ื™ืกืึทื ืกื˜ ืื•ื ื˜ืขืจ ืึทืคึผืึทื˜ืฉื™ 2.0.

ื”ื•ื™ืคึผื˜ ืขื ื“ืขืจื•ื ื’ืขืŸ:

  • ืขืงืกืขืคึผืฉืึทื ื– ืืจืœื ื’ืขื•ื•ืืจืคืŸ ืื™ืŸ C ++ ืื•ืŸ Java ืงืึธื“ ืื™ืฆื˜ ืฆื•ืฉื˜ืขืœืŸ ืึท ื•ื™ืกื ืขื ืึธื ืœื™ื™ื’ืŸ ื•ื•ืขืŸ ืึท ื•ื™ืกื ืขื ืึทืงืขืจื– ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ ืงืึธื“. ืึทื–ื•ื™, ืฆื• ื‘ืึทืงื•ืžืขืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื“ื™ ื•ื™ืกื ืขื ืึธื ืœื™ื™ื’ืŸ, ืื™ืจ ื ื™ื˜ ืžืขืจ ื“ืึทืจืคึฟืŸ ืฆื• ืจื•ืคืŸ ืกื˜ืึทืงืงื˜ืจืึทืกืข ().
  • ื“ื™ ืจื•ืคืŸ ืฆื•ืจื™ืงืงื•ืžืขืŸ ื’ื™ื›ืงื™ื™ึทื˜ ืื™ื– ื˜ืจื™ืคึผืึทืœื“.
  • ื‘ืื˜ื™ื™ื˜ื™ืง (ื“ื•ืจืš ืึธืจื“ืขืจืก ืคื•ืŸ ืžืึทื’ื ืึทื˜ื•ื“) ื’ืขื•ื•ืืงืกืŸ ื˜ืจืึทื ืกืžื™ืกื™ืข ื’ื™ื›ืงื™ื™ึทื˜ ืื™ืŸ
    ื ืึทืžืคึผื™ ื‘ืึทืคืขืจื– ืคื•ืŸ ืžื•ืœื˜ื™ื“ื™ืžืขื ืกื™ืึธื ืึทืœ ืขืจื™ื™ื–. ืžื•ืœื˜ื™ื“ื™ืžืขื ืกื™ืึธื ืึทืœ ืคึผืจื™ืžื™ื˜ื™ื•ื•ื– ืคืึธืจืŸ ื‘ืœื•ื™ื– ืœื™ื™ืขื ืขืŸ ืงืึธืคึผื™ืขืก ื‘ืืฉืืคืŸ ืื™ืŸ ื“ื™ JVM ืžื™ื˜ ืึท ืงืึทื ื˜ื™ื’ื™ื•ืึทืก C ืื•ื™ืกืœื™ื™ื’.

  • ืึทืœืข ื™ืงืกืคึผืึธื•ื–ื“ ื™ื ื˜ืขืจื ืึทืœืก ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ืจื™ืคึผืœื™ื™ืกื˜ ืžื™ื˜ CPython ื™ืžืคึผืœืึทืžืึทื ืฅ, ืื•ืŸ ื“ื™ ืกื™ืžื‘ืึธืœืก __javaclass__, __javavalue__ ืื•ืŸ __javaproxy__
    ืื•ื™ืกื’ืขืžืขืงื˜. ื ื“ืขื“ืึทืงื™ื™ื˜ืึทื“ ื–'ืื‘ื ืฉืคึผืขืœื˜ืœ ืื™ื– ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฆื• ืึทืœืข CPython ื˜ื™ื™ืคึผืก ื•ื•ืึธืก ื™ืจืฉืขื ืขืŸ ืคึฟื•ืŸ jpype ืงืœืึทืก ื˜ื™ื™ืคึผืก. ืึทืœืข ืคึผืจื™ื•ื•ืึทื˜ ื˜ื™ืฉืŸ ื–ืขื ืขืŸ ืืจื™ื‘ืขืจื’ืขืคืืจืŸ ืฆื• CPython. Java ื˜ื™ื™ืคึผืก ืžื•ื–ืŸ ืื™ืฆื˜ ื™ืจืฉืขื ืขืŸ ืคื•ืŸ ื“ื™ JClass ืžืขื˜ืึทืงืœืึทืกืก, ื•ื•ืึธืก ื ื™ืฆื˜ ื˜ื™ืคึผ ืกืœืึธืฅ. ืžื™ืงืกื™ื ืก ืคึฟืึทืจ ืคึผื™ื˜ื”ืึธืŸ ื‘ืึทื–ืข ืงืœืืกืŸ ื–ืขื ืขืŸ ื ื™ืฉื˜ ืขืจืœื•ื™ื‘ื˜. ื“ื™ ื˜ื™ื™ืคึผืก ื–ืขื ืขืŸ ืึธื‘ื“ื–ืฉืขืงื˜, ืคึผืจืึธืงืกื™, ื•ื™ืกื ืขื, ื ื•ืžืขืจ ืื•ืŸ ืžืขื ื’ืข ืื•ืŸ ื™ืจืฉืขื ืขืŸ ื’ืœื™ื™ึทืš ืคึฟื•ืŸ CPython ืก ื™ื ืขืจืœืขืš ื™ืžืคึผืœืึทืžืึทื ืฅ.

  • ื™ืžืคึผืจื•ื•ื•ื“ ื˜ืจื™ื™ืกื™ื ื’ ืื•ืŸ ื•ื™ืกื ืขื ื”ืึทื ื“ืœื™ื ื’.
  • ืžืขื ื’ืข ืกืœื™ื™ืกื™ื– ื–ืขื ืขืŸ ืื™ืฆื˜ ืคึผืจืึทืกืขืกื˜ ื•ื•ื™ ืงื•ืงืŸ ื•ื•ืึธืก ืฉื˜ื™ืฆืŸ ืฉืจื™ื™ื‘ืŸ ืฆื•ืจื™ืง ืฆื• ื“ืขืจ ืึธืจื™ื’ื™ื ืขืœ, ืึทื–ืึท ื•ื•ื™ ืึท ื ืึทืžืคึผื™ ืžืขื ื’ืข. ืคึฟืึทืจ ืžืขื ื’ืข ืกืœื™ื™ืกื™ื ื’, ืฉื˜ื™ืฆืŸ ืื™ื– ืฆื•ื’ืขืฉื˜ืขืœื˜ ืคึฟืึทืจ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืื•ืŸ ืจื™ื˜ืจื™ื•ื•ื™ื ื’ ื•ื•ืึทืœื•ืขืก ืื™ืŸ ืกื˜ืขืคึผืก (ืจืขืคื˜ืœ (ืึธื ื”ื™ื™ื‘, ื”ืึทืœื˜ืŸ, ืฉืจื™ื˜)).
  • ืขืจื™ื™ื– ืื™ืฆื˜ ืฉื˜ื™ืฆืŸ "__ืจื™ื•ื•ืขืจืกืขื“__".
  • Java arrays ืื™ืฆื˜ ืฉื˜ื™ืฆืŸ ื“ื™ Memoryview API ืื•ืŸ ื‘ืึทื–ื™ื™ึทื˜ื™ืงืŸ ื“ื™ ืึธืคืขื ื’ื™ืงื™ื™ึทื˜ ืื•ื™ืฃ ื ืึทืžืคึผื™ ืฆื• ืคืึธืจืŸ ื“ื™ ื‘ืึทืคืขืจ ืื™ื ื”ืึทืœื˜.
  • ื ืึทืžืคึผื™ ืื™ื– ื ื™ื˜ ืžืขืจ ืึท ื“ืขืคึผืขื ื“ืขื ืกื™ (ืขืงืกื˜ืจืข) ืื•ืŸ ื–ื™ืงืึธืจืŸ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืฆื• ื ืึทืžืคึผื™ ืื™ื– ื‘ื ื™ืžืฆื ืึธืŸ ืงืึทืžืคึผื™ื™ืœื™ื ื’ ืžื™ื˜ ื ืึทืžืคึผื™ ืฉื˜ื™ืฆืŸ.
  • JInterface ืื™ื– ื“ื™ื–ื™ื™ื ื“ ื•ื•ื™ ืึท ืžืขื˜ืึท ืงืœืึทืก. ื ื™ืฆืŸ isinstance (cls, JInterface) ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืคึฟืึทืจ ื™ื ื˜ืขืจืคื™ื™ืกื™ื–.
  • ืฆื•ื’ืขืœื™ื™ื’ื˜ ืคืขืœื ื“ื™ืง ื˜ืœื“ืก "ืžื™ืœ", "ื ืขืฅ" ืื•ืŸ "ืขื“ื•" ืฆื• ืคืขืœื™ืงื™ื™ึทื˜ ื™ืžืคึผืึธืจืฅ.
  • ื™ืžืคึผืจื•ื•ื•ื“ ื˜ืขื•ืช ืึทืจื˜ื™ืงืœืขืŸ ืคึฟืึทืจ UnsupportedClassVersion ื‘ืขืฉืึทืก ืกื˜ืึทืจื˜ืึทืคึผ.
  • java.util.Map ืื™ืฆื˜ ื•ื•ืืจืคื˜ ืขืจ ืึท KeyError ืื•ื™ื‘ ื“ืขืจ ืขืœืขืžืขื ื˜ ืื™ื– ื ื™ื˜ ื’ืขืคึฟื•ื ืขืŸ. ื•ื•ืึทืœื•ืขืก ื•ื•ืึธืก ื–ืขื ืขืŸ ื ืึทืœ ื ืึธืš ืฆื•ืจื™ืงืงื•ืžืขืŸ ืงื™ื™ืŸ ื•ื•ื™ ื“ืขืจื•ื•ืึทืจื˜. ื ื™ืฆืŸ ื‘ืึทืงื•ืžืขืŸ () ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ืžื™ื™ึทื›ืœ ืœื™ื™ื“ื™ืง ืฉืœื™ืกืœืขืŸ ื•ื•ื™ ืงื™ื™ืŸ.
  • ืึทื•ื•ืขืงื’ืขื ื•ืžืขืŸ java.util.Collection ื•ื•ื™ ืขืก ืกื˜ืจื™ื™ื ื“ื–ืฉืœื™ ืึธื•ื•ืขืจืœืึธืึทื“ืก ืฆื•ื•ื™ืฉืŸ ืึทืจืึธืคึผื ืขืžืขืŸ (ืึธื‘ื“ื–ืฉืขืงื˜) ืื•ืŸ ืึทืจืึธืคึผื ืขืžืขืŸ (ื™ื ื˜) ืื•ื™ืฃ ืจืฉื™ืžื•ืช. ื ื™ืฆืŸ ื“ื™ Java remove () ืื•ืคึฟืŸ ืฆื• ืึทืงืกืขืก ื’ืขื‘ื•ื™ืจืŸ Java ื ืึทื˜ื•ืจ, ืึธื‘ืขืจ ื˜ื™ืคึผ ืงืึทืกื˜ื™ื ื’ ืื™ื– ืฉื˜ืืจืง ืจืขืงืึทืžืขื ื“ื™ื“ ืคึฟืึทืจ ืึธื•ื•ืขืจืœืึธืึทื“ ืงืึธื ื˜ืจืึธืœ.
  • java.lang.IndexOutOfBoundsException ืงืขื ืขืŸ ืื™ืฆื˜ ื–ื™ื™ืŸ ื’ืขื›ืืคื˜ ื ื™ืฆืŸ ื“ื™ ื™ื ื“ืขืงืกืขืจืจืึธืจ ื•ื™ืกื ืขื ืงืœืึทืก ื•ื•ืขืŸ ืึทืงืกืขืก Java.util.List ืขืœืขืžืขื ื˜ืŸ.

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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’