Lansarea JPype 1.0, biblioteci pentru accesarea claselor Java din Python

Disponibil eliberarea stratului JPype 1.0, care permite aplicațiilor Python să aibă acces deplin la bibliotecile de clasă în limbajul Java. Cu JPype de la Python, puteți utiliza biblioteci specifice Java pentru a crea aplicații hibride care combină codul Java și Python. Spre deosebire de Jython, integrarea cu Java se realizează nu prin crearea unei variante Python pentru JVM, ci prin interacțiune la nivelul ambelor mașini virtuale care utilizează memoria partajată. Abordarea propusă permite nu numai obținerea unor performanțe bune, dar oferă și acces la toate bibliotecile CPython și Java. Cod proiect distribuit de licențiat sub Apache 2.0.

Principalele modificări:

  • JChar este acceptat ca tip de returnare. Pentru compatibilitate, JChar moștenește de la „str” ​​și implementează o conversie implicită în „int”. Prin urmare, trece verificări în contracte. Dar asta înseamnă că nu mai este considerat un tip numeric în Python și, prin urmare, isinstance(c, int) se evaluează la False, ceea ce este în concordanță cu regulile de conversie a tipului Java.
  • A fost introdus un operator pentru a turna un tip Java, Type@obj (@ este un operator Python pentru produsul intern; Java nu are unul).
  • S-a adăugat notație pentru crearea matricelor Java. Tastați[s1][s2][s3] pentru matrice de dimensiune fixă, Tip[:][:][:] pentru matricele care vor fi create ulterior.
  • @FunctionalInterface vă permite să creați functori Java din obiecte Python cu __call__.
  • Eliminat JIterator depreciat, utilizarea JException ca fabrică, get_default_jvm_path și jpype.reflect.
  • În mod implicit, șirurile Java nu sunt convertite în șiruri Python.
  • Python a renunțat la „__int__”, astfel încât transformările implicite între tipurile întregi și în virgulă mobilă vor produce o eroare de tip.
  • Utilizarea JException a fost depreciată. Pentru a detecta toate excepțiile sau pentru a verifica dacă un obiect este un tip de excepție Java, utilizați java.lang.Throwable.
  • Cauzele în cascadă ale excepțiilor Java sunt acum reflectate în cadrele stivei Python.
  • JString a fost depreciat. Pentru a crea un șir Java sau pentru a verifica dacă un obiect este de tip șir Java, utilizați java.lang.String.
  • Metodele Repr au fost actualizate în clasele Java.
  • java.util.List execută contracte pentru collections.abc.Sequence și collections.abc.MutableSequence.
  • java.util.Collection execută contractul pentru collections.abc.Collection.
  • Clasele Java sunt private și vor genera TypeError atunci când sunt extinse din Python.
  • Manipulați Control-C cu grijă. Versiunile anterioare se blochează atunci când Java procesează un semnal Control-C, deoarece vor termina Java în timpul apelului. JPype va lansa acum o excepție InterruptedException la întoarcerea din Java. Control-C nu va elimina procedurile Java mari așa cum sunt implementate în prezent, deoarece Java nu are un instrument special pentru aceasta.

Apoi, a fost creată o versiune corectivă 1.0.1, care a adăugat modificări pentru a rezolva problemele cu versiunea Python 3.8.4. Python a schimbat logica cu privire la utilizarea „__setattr__” pentru „obiect” și „tip”, împiedicând utilizarea acestuia pentru a modifica clasele derivate. Verificarea erorilor a fost, de asemenea, delegată din metoda „__setattr__”, astfel încât tipurile de excepții din unele verificări de adecvare ar trebui actualizate în consecință.

Sursa: opennet.ru

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster