Lëshimi i JPype 1.0, një bibliotekë për të hyrë në klasat Java nga Python

Në dispozicion lirimi i shtresës JPype 1.0, i cili lejon aplikacionet Python të kenë akses të plotë në bibliotekat e klasave në gjuhën Java. Me JPype nga Python, ju mund të përdorni biblioteka specifike të Java për të krijuar aplikacione hibride që kombinojnë kodin Java dhe Python. Ndryshe nga Jython, integrimi me Java nuk arrihet duke krijuar një variant Python për JVM, por përmes ndërveprimit në nivelin e të dy makinave virtuale që përdorin memorie të përbashkët. Qasja e propozuar lejon jo vetëm arritjen e performancës së mirë, por gjithashtu siguron akses në të gjitha bibliotekat CPython dhe Java. Kodi i projektit shperndare nga licencuar sipas Apache 2.0.

Ndryshimet kryesore:

  • JChar mbështetet si një lloj kthimi. Për pajtueshmërinë, JChar trashëgon nga "str" ​​dhe zbaton një konvertim të nënkuptuar në "int". Prandaj, ai kalon kontrolle në kontrata. Por kjo do të thotë që ai nuk konsiderohet më një lloj numerik në Python dhe për këtë arsye isinstance(c, int) vlerësohet në False, që është në përputhje me rregullat e konvertimit të tipit Java.
  • Një operator është prezantuar për të hedhur një lloj Java, Type@obj (@ është një operator Python për produktin e brendshëm; Java nuk ka një të tillë).
  • Shënim i shtuar për krijimin e vargjeve Java. Lloji[s1][s2][s3] për vargje me madhësi fikse, Lloji[:][:][:] për vargje që do të krijohen më vonë.
  • @FunctionalInterface ju lejon të krijoni funksionues Java nga objektet Python me __call__.
  • U hoq JIterator i vjetëruar, përdorimi i JException si një fabrikë, get_default_jvm_path dhe jpype.reflect.
  • Si parazgjedhje, vargjet Java nuk konvertohen në vargjet Python.
  • Python e ka zhvlerësuar "__int__", kështu që hedhjet e nënkuptuara midis llojeve të numrave të plotë dhe me pikë lundruese do të prodhojnë një gabim të tipit.
  • Përdorimi i JException është zhvlerësuar. Për të kapur të gjitha përjashtimet ose për të kontrolluar që një objekt është një lloj përjashtimi Java, përdorni java.lang.Throwable.
  • Shkaqet kaskaduese të përjashtimeve nga Java tani pasqyrohen në kornizat e pirgut të Python.
  • JString është zhvlerësuar. Për të krijuar një varg Java ose për të kontrolluar që një objekt është i tipit Java string, përdorni java.lang.String.
  • Metodat repr janë përditësuar në klasat Java.
  • java.util.List ekzekuton kontratat për koleksionet.abc.Sequence dhe collections.abc.MutableSequence.
  • java.util.Collection ekzekuton kontratën për koleksionet.abc.Collection.
  • Klasat Java janë private dhe do të hedhin TypeError kur zgjerohen nga Python.
  • Trajtoni me kujdes Control-C. Versionet e mëparshme prishen kur Java përpunon një sinjal Control-C sepse ato do të mbyllin Java gjatë telefonatës. JPype tani do të hedhë një InterruptedException kur të kthehet nga Java. Control-C nuk do të hedhë procedura të mëdha Java siç zbatohen aktualisht, pasi Java nuk ka një mjet të veçantë për këtë.

Më pas, u krijua një version korrigjues 1.0.1, i cili shtoi ndryshime për të zgjidhur problemet me versionin Python 3.8.4. Python ka ndryshuar logjikën në lidhje me përdorimin e "__setattr__" për "objekt" dhe "lloj", duke e penguar atë që të përdoret për të modifikuar klasat e derivuara. Kontrolli i gabimeve është deleguar gjithashtu nga metoda "__setattr__", kështu që llojet e përjashtimeve në disa kontrolle të përshtatshmërisë duhet të përditësohen në përputhje me rrethanat.

Burimi: opennet.ru

Shto një koment