Lansare JPype 0.7.2, bibliotecă pentru accesul la clase Java din Python

Disponibil lansarea interfeței JPype 0.7.2, permițând acces complet pentru aplicațiile Python la bibliotecile de clase în limbajul Java. Cu ajutorul JPype, din Python se pot utiliza biblioteci specifice Java, creând aplicații hibride ce combină codul Java cu cel Python. Spre deosebire de Jython, integrarea cu Java nu se realizează prin crearea unei variante de Python pentru JVM, ci prin interacțiunea la nivelul ambelor mașini virtuale, utilizând memorie partajată. Aproach-ul propus nu doar că asigură o performanță bună, ci oferă și acces la toate bibliotecile CPython și Java. Codul proiectului se răspândește sub licența Apache 2.0.

Modificări principale:

  • Excepțiile aruncate în codul C++ și Java oferă acum un stack trace atunci când apare o excepție în codul Python. Astfel, pentru a obține informații despre stack trace, nu mai este necesar să apelați stacktrace().
  • Viteza de returnare a crescut de trei ori la apeluri.
  • Viteza de transfer a fost semnificativ crescută (cu ordine întregi) în
    buferele multidimensionale numpy. Primitivii multidimensionali transmit copii de citire doar create în interiorul JVM cu aranjament C continuu.
  • Toate componentele interne expuse au fost înlocuite cu implementări din CPython, iar simbolurile __javaclass__, __javavalue__ și __javaproxy__
    au fost eliminate. Un slot Java dedicat a fost adăugat tuturor tipurilor CPython moștenite din tipurile clasei jpype. Toate tabelurile private au fost transferate în CPython. Tipurile Java trebuie acum să moștenească de la metaclasa JClass, care folosește sloturi de tip. Mixin-urile pentru clasele de bază Python nu sunt permise. Tipurile Object, Proxy, Exception, Number și Array sunt moștenite direct din implementările interne CPython.
  • A fost îmbunătățită trasarea și gestionarea excepțiilor.
  • Slicele de array (Array slices) sunt acum gestionate sub formă de vizualizări, care susțin scrierea inversă în original, cum ar fi array numpy. Suportul pentru setarea și obținerea valorilor cu pas (slice(start, stop, step)) este asigurat pentru slicele de array.
  • S-au implementat suport pentru „__reversed__” în array-uri.
  • În array-urile Java, a fost asigurat suportul pentru API memoryview și a fost eliminată dependența de numpy pentru transferul conținutului buffer-ului.
  • Numpy nu mai este o dependență (extra) iar transferul de memorie în numpy este disponibil fără compilare cu suport pentru numpy.
  • JInterface este acum implementat ca un metaclass. Utilizați isinstance(cls, JInterface) pentru a verifica interfețele.
  • În importurile default au fost adăugate TLD-urile lipsă „mil”, „net” și „edu”.
  • Mesajele de eroare pentru UnsupportedClassVersion au fost îmbunătățite la pornire.
  • java.util.Map acum returnează KeyError dacă elementul nu este găsit. Valorile care sunt null continuă să returneze None, așa cum era de așteptat. Utilizați get() dacă cheile goale trebuie să fie tratate ca None.
  • java.util.Collection a fost eliminat, deoarece este ciudat suprasolicitat între remove(Object) și remove(int) pe liste. Utilizați metoda Java remove() pentru a accesa comportamentul original Java, dar castul de tip este strict recomandat pentru gestionarea suprasarcinilor.
  • java.lang.IndexOutOfBoundsException poate fi acum prins cu ajutorul clasei pentru excepții IndexError atunci când accesați elementele java.util.List.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster