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

I verfüshëm lëshimi i shtresës JPype 1.0, që mundëson një qasje të plotë të aplikacioneve Python në libraritë e klasave në gjuhën Java. Me ndihmën e JPype, nga Python mund të përdoren libraritë specifike për Java, duke krijuar aplikacione hibride që kombinojnë kodin në Java dhe Python. Ndryshe nga Jython, integrimi me Java arrihet jo përmes krijimit të një varianti Python për JVM, por përmes ndërveprimit në nivelin e të dyja makinave virtuale, duke përdorur memorie të përbashkët. Qasja e propozuar nuk vetëm që ofron një performancë të mirë, por gjithashtu siguron qasje në të gjitha libraritë CPython dhe Java. Kodi i projektit distribuohet nën licencën Apache 2.0.

Ndryshimet kryesore:

  • JChar mbështetet si lloj i kthimit. Për kompatibilitet, JChar është trashëguar nga "str" dhe realizon konvertimin implicit në "int". Prandaj, kalon kontrollat në kontrata. Por kjo do të thotë se tani nuk konsiderohet si lloj numerik në Python dhe prandaj isinstance(c, int) jep False, gjë që përputhet me rregullat e konvertimit të llojeve në Java.
  • U fut një operator për konvertimin e tipit Java Type@obj (@ është operatori Python për produktin e brendshëm, që në Java nuk ekziston).
  • U shtua nota për krijimin e array-ve Java. Type[s1][s2][s3] për array të dimensioneve fikse, Type[:][:][:] për array që do të krijohen më vonë.
  • @FunctionalInterface lejon krijimin e funksioneve Java nga objektet Python me __call__.
  • U hoqën JIterator të demode, përdorimi i JException si fabrikë, get_default_jvm_path dhe jpype.reflect.
  • Për default, nuk ndodhin konvertime të vargjeve Java në vargje Python.
  • Python shpalli të papërdorshëm "__int__", prandaj konvertimet implicite mes llojeve integer dhe floating-point do të sjellin një TypeError.
  • U shpall të papërdorshëm përdorimi i JException. Për të kapur të gjitha përjashtimet, ose për të kontrolluar nëse një objekt është tip i përjashtimit Java, përdorni java.lang.Throwable.
  • Shkaqet kaskadore të përjashtimeve Java tani pasqyrohen në kuadrot e grumbullimit të Python.
  • U shpall të papërdorshëm përdorimi i JString. Për të krijuar një varg Java, ose për të kontrolluar nëse një objekt ka tipin e vargut Java, përdorni java.lang.String.
  • Në klasat Java janë azhurnuar 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 nëse përpiqen të zgjaten nga Python.
  • Trajtimi i Control-C është bërë me kujdes. Versionet e mëparshme prisnin kur Java trajtonte sinjalin Control-C, sepse ato do të përfundonin Java gjatë thirrjes. Tani JPype do të krijojë një InterruptedException kur kthehet nga Java. Control-C nuk do të hedhin nga procedurat e mëdha Java, siç është aktualisht implementuar, pasi Java nuk ka një mjet të veçantë për këtë.

Më pas është formuar një version korrigjues 1.0.1, në të cilin janë shtuar ndryshime për të evituar 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 parandaluar atë të përdoret për të ndryshuar klasat e trashëguara. Gjithashtu, kontrolli për gabime është deleguar nga metodi "__setattr__", prandaj llojet e përjashtimeve në disa kontrollime të arsyeshmërisë duhet të azhurnohen përkatësisht.

Burimi: opennet.ru

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster