Pagpagawas sa JPype 1.0, mga librarya alang sa pag-access sa mga klase sa Java gikan sa Python

Magamit pagpagawas sa layer JPype 1.0, nga nagtugot sa mga aplikasyon sa Python nga adunay hingpit nga pag-access sa mga librarya sa klase sa pinulongang Java. Uban sa JPype gikan sa Python, mahimo nimong gamiton ang mga librarya nga espesipiko sa Java aron makahimo og hybrid nga mga aplikasyon nga naghiusa sa Java ug Python code. Dili sama sa Jython, ang integrasyon sa Java makab-ot dili pinaagi sa paghimo ug Python nga variant para sa JVM, kondili pinaagi sa interaksyon sa lebel sa duha ka virtual machine gamit ang shared memory. Ang gisugyot nga pamaagi nagtugot dili lamang sa pagkab-ot sa maayo nga performance, apan naghatag usab og access sa tanang CPython ug Java nga mga librarya. Kodigo sa proyekto giapod-apod sa lisensyado ubos sa Apache 2.0.

Panguna nga mga pagbag-o:

  • Gisuportahan ang JChar ingon usa ka tipo sa pagbalik. Alang sa pagkaangay, ang JChar nakapanunod gikan sa "str" ​​​​ug nagpatuman sa usa ka implicit nga pagkakabig sa "int". Busa, gipasa niini ang mga tseke sa mga kontrata. Apan kini nagpasabot nga wala na kini isipa nga numeric type sa Python ug busa ang isinstance(c, int) nag-evaluate sa False, nga nahiuyon sa Java type conversion rules.
  • Ang usa ka operator gipaila-ila sa pag-cast ug Java type, Type@obj (@ usa ka Python operator para sa sulod nga produkto; Java walay usa).
  • Gidugang nga notasyon alang sa paghimo sa Java arrays. Type[s1][s2][s3] para sa fixed size arrays, Type[:][:][:] para sa arrays nga pagabuhaton unya.
  • Gitugotan ka sa @FunctionalInterface nga maghimo mga function sa Java gikan sa mga butang nga Python nga adunay __call__.
  • Gitangtang ang wala na gigamit nga JIterator, paggamit sa JException isip pabrika, get_default_jvm_path ug jpype.reflect.
  • Sa kasagaran, ang Java strings wala makabig ngadto sa Python strings.
  • Giwagtang sa Python ang "__int__", mao nga ang mga implicit nga mga cast tali sa integer ug floating-point nga mga tipo makahimo og TypeError.
  • Ang paggamit sa JException wala na gigamit. Aron makuha ang tanang eksepsiyon, o susiha nga ang usa ka butang kay Java exception type, gamita ang java.lang.Throwable.
  • Ang mga cascading nga hinungdan sa mga eksepsiyon sa Java makita na karon sa Python stack frames.
  • Ang JString wala na magamit. Aron makahimo og Java string, o aron masusi nga ang usa ka butang kay type Java string, gamita ang java.lang.String.
  • Ang mga pamaagi sa Repr gi-update sa mga klase sa Java.
  • Ang java.util.List nagpatuman sa mga kontrata para sa collections.abc.Sequence ug collections.abc.MutableSequence.
  • Ang java.util.Collection nagpatuman sa kontrata para sa collections.abc.Collection.
  • Ang mga klase sa Java pribado ug ilabay ang TypeError kung gipalapdan gikan sa Python.
  • Pagdumala sa Control-C pag-ayo. Ang nangaging mga bersyon nahagsa kung ang Java nagproseso sa usa ka Control-C nga signal tungod kay ilang tapuson ang Java sa panahon sa tawag. Ang JPype karon maglabay sa usa ka InterruptedException sa pagbalik gikan sa Java. Ang Control-C dili molabay sa dagkong mga pamaagi sa Java sama sa gipatuman karon, tungod kay ang Java walay espesyal nga himan alang niini.

Sunod, usa ka corrective release 1.0.1 ang gibuhat, nga midugang sa mga kausaban sa pagsulbad sa mga problema sa Python 3.8.4 release. Giusab sa Python ang lohika bahin sa paggamit sa "__setattr__" para sa "object" ug "type", nga nagpugong niini nga gamiton sa pag-usab sa mga nakuhang klase. Ang pagsusi sa sayop gitugyan usab gikan sa "__setattr__" nga pamaagi, mao nga ang mga tipo sa eksepsiyon sa pipila ka mga pagsusi sa kaangayan kinahanglang i-update sumala niana.

Source: opennet.ru

Idugang sa usa ka comment