Lansare JPype 1.0, bibliotecă pentru accesarea claselor Java din Python

Disponibil lansarea interfeței JPype 1.0, 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:

  • JChar este acceptat ca tip de returnare. Pentru compatibilitate, JChar este moștenit din „str” și implementează conversia implicită în „int”. Prin urmare, trece testele în contracte. Dar asta înseamnă că nu mai este considerat un tip numeric în Python și, prin urmare, isinstance(c, int) returnează False, conform regulilor de conversie a tipurilor Java.
  • A fost introdus un operator pentru a converti tipul Java Type@obj (@ este operatorul Python pentru produsul intern, care nu există în Java).
  • A fost adăugată o notație pentru crearea array-urilor Java. Type[s1][s2][s3] pentru array-uri de dimensiuni fixe, Type[:][:][:] pentru array-uri ce vor fi create ulterior.
  • @FunctionalInterface permite crearea de functori Java din obiecte Python cu __call__.
  • Au fost eliminate JIterator-ul învechit, utilizarea JException ca fabrică, get_default_jvm_path și jpype.reflect.
  • Prin default, nu are loc conversia string-urilor Java în string-uri Python.
  • Python a declarat „__int__” ca fiind descurajat, astfel încât conversiile implicite între tipurile întregi și cele cu virgulă mobilă vor produce TypeError.
  • Utilizarea JException a fost declarată învechită. Pentru a captura toate excepțiile sau a verifica dacă un obiect este un tip de excepție Java, se recomandă java.lang.Throwable.
  • Cauzele în cascadă ale excepțiilor Java sunt acum reflectate în cadrele stivei Python.
  • Utilizarea JString a fost declarată învechită. Pentru a crea un string Java sau a verifica dacă un obiect are tipul de string Java, utilizați java.lang.String.
  • Metodele repr au fost actualizate în clasele Java.
  • java.util.List îndeplinește contractele pentru collections.abc.Sequence și collections.abc.MutableSequence.
  • java.util.Collection îndeplinește contractul pentru collections.abc.Collection.
  • Clasele Java sunt închise și vor arunca TypeError dacă sunt extinse din Python.
  • Tratamentul Control-C este acum mai sigur. Versiunile anterioare se blocau când Java trata semnalul Control-C, deoarece acestea încheiau Java în timpul apelului. Acum, JPype va genera InterruptedException când se întoarce din Java. Control-C nu va ieși din procesele mari Java, așa cum este implementat acum, deoarece Java nu are un mecanism special pentru asta.

A fost elaborată o versiune corectivă 1.0.1, care include modificări pentru a evita problemele cu lansarea Python 3.8.4. Python a schimbat logica privind utilizarea „__setattr__” pentru „object” și „type”, prevenind utilizarea sa pentru modificarea claselor derivate. De asemenea, verificările de eroare au fost delegate din metoda „__setattr__”, așa că tipurile excepțiilor din unele verificări de validitate trebuie actualizate corespunzător.

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