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

I disponueshëm lëshimi i shtresës JPype 1.0, e cila mundëson qasje të plotë të aplikacioneve Python në bibliotekat e klasave në gjuhën Java. Me ndihmën e JPype, nga Python mund të përdoren biblioteka specifike për Java, duke krijuar aplikacione hibride që kombinojnë kodin në Java dhe Python. Ndryshe nga Jython, integimi me Java arrihet jo përmes krijimit të një varianti Python për JVM, por përmes ndërveprimit në nivelin e të dyja makinerive virtuale, duke përdorur memorie të ndarë. Qasja e propozuar lejon jo vetëm arritjen e performancës së lartë, por gjithashtu ofron qasje në të gjitha bibliotekat CPython dhe Java. Kodi i projektit shpërndahet nën licencën Apache 2.0.

Ndryshimet kryesore:

  • JChar mbsupportohet si njĂ« tip i rikthyer. PĂ«r qĂ«llime tĂ« pajtueshmĂ«risĂ«, JChar Ă«shtĂ« trashĂ«guar nga "str" dhe implementon njĂ« konvertim implicit nĂ« "int". Prandaj kalon provimet nĂ« kontrata. Por kjo do tĂ« thotĂ« se nuk konsiderohet mĂ« si tip numerik nĂ« Python dhe prandaj isinstance(c, int) jep False, e cila Ă«shtĂ« nĂ« pĂ«rputhje me rregullat e konvertimit tĂ« tipave tĂ« Java.
  • U prezantua operatori pĂ«r konvertimin nĂ« tipin Java Type@obj (@ Ă«shtĂ« operatori Python pĂ«r produktin e brendshĂ«m, nĂ« Java nuk ekziston.)
  • U shtua nota pĂ«r krijimin e Arrays Java. Type[s1][s2][s3] pĂ«r arrays me madhĂ«si fikse, Type[:][:][:] pĂ«r arrays qĂ« do tĂ« krijohen mĂ« vonĂ«.
  • @FunctionalInterface lejon krijimin e funktorĂ«ve Java nga objektet Python me __call__.
  • U hoqĂ«n JIterator tĂ« vjetruar, pĂ«rdorimi i JException si fabrikĂ«, get_default_jvm_path dhe jpype.reflect.
  • PĂ«r default nuk ndodh konvertimi i vargjeve Java nĂ« vargje Python.
  • Python shpalli tĂ« papĂ«rshtatshĂ«m "__int__", prandaj konvertimet implicite mes tipeve tĂ« integer dhe atyre me pikĂ« tĂ« lĂ«ngshme do tĂ« pĂ«rfshijnĂ« TypeError.
  • U shpall tĂ« papĂ«rshtatshĂ«m pĂ«rdorimi i JException. PĂ«r tĂ« kapur tĂ« gjitha pĂ«rjashtimet, ose pĂ«r tĂ« verifikuar qĂ« objekti Ă«shtĂ« njĂ« tip pĂ«rjashtimi Java, duhet tĂ« pĂ«rdorni java.lang.Throwable.
  • Shkaqet kaskadore tĂ« pĂ«rjashtimeve Java tani reflektohen nĂ« paketat e stack Python.
  • U shpall tĂ« papĂ«rshtatshĂ«m pĂ«rdorimi i JString. PĂ«r tĂ« krijuar njĂ« varg Java, ose pĂ«r tĂ« verifikuar qĂ« objekti ka tipin e vargut Java, pĂ«rdorni java.lang.String.
  • NĂ« klasat Java janĂ« pĂ«rmirĂ«suar metodat repr.
  • java.util.List pĂ«rmbush kontratat pĂ«r collections.abc.Sequence dhe collections.abc.MutableSequence.
  • java.util.Collection pĂ«rmbush kontratĂ«n pĂ«r collections.abc.Collection.
  • Klasat Java janĂ« tĂ« mbyllura dhe do tĂ« hedhin TypeError kur zgjaten nga Python.
  • PĂ«rpunimi i Control-C bĂ«het me kujdes. Versionet e mĂ«parshme bien kur Java pĂ«rpunon sinjalin Control-C, sepse ato do ta pĂ«rfundojnĂ« Java gjatĂ« thirrjes. Tani JPype do tĂ« krijojĂ« njĂ« InterruptedException kur tĂ« kthehet nga Java. Control-C nuk do tĂ« dalĂ« nga procedurat e mĂ«dha tĂ« Java, siç Ă«shtĂ« implementuar tani, pasi Java nuk ka njĂ« mjet tĂ« veçantĂ« pĂ«r kĂ«tĂ«.

Pas kësaj, u formua një version korrektiv 1.0.1, në të cilin u shtuan ndryshime për të anashkaluar problemet me lëshimin Python 3.8.4. Python ndryshoi logjikën në lidhje me përdorimin e "__setattr__" për "object" dhe "type", duke e parandalosur atë të përdoret për të ndryshuar klasat e trashëguara. Një kontroll tjetër për gabime u delegua nga metoda "__setattr__", prandaj llojet e përjashtimeve në disa kontrollime të përshtatshmërisë duhet të përditësohen përkatësisht.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster