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 hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster