Liberazione di JPype 1.0, librerie per accede à e classi Java da Python

Dispunibule liberazione di strati JPype 1.0, chì vi permette di urganizà l'accessu cumpletu di l'applicazioni Python à e librerie di classi Java. Cù JPype da Python, pudete aduprà biblioteche specifiche di Java per creà applicazioni hibride chì combina Java è codice Python. A cuntrariu di Jython, l'integrazione cù Java hè ottenuta micca per via di a creazione di una variante di Python per a JVM, ma per l'interazzione à u livellu di e duie macchine virtuali chì utilizanu memoria spartuta. L'approcciu prupostu permette micca solu di ottene un bonu rendimentu, ma ancu furnisce l'accessu à tutte e librerie CPython è Java. Codice di prughjettu distribuitu da licenziatu sottu Apache 2.0.

I cambiamenti principali:

  • JChar hè supportatu cum'è un tipu di ritornu. Per a cumpatibilità, JChar eredita da "str" ​​​​è implementa una cunversione implicita à "int". Per quessa, passa cuntrolli in cuntratti. Ma questu significa chì ùn hè più cunsideratu un tipu numericu in Python è dunque isinstance (c, int) valuta à False, chì hè coherente cù e regule di cunversione di tipu Java.
  • Un operatore hè statu introduttu per cast un tipu Java, Type@obj (@ hè un operatore Python per u pruduttu internu; Java ùn hà micca unu).
  • Notazione aghjuntu per creà arrays Java. Type [s1][s2][s3] per arrays di dimensione fissa, Type [:][:][:] per arrays chì seranu creati dopu.
  • @FunctionalInterface permette di creà funtori Java da oggetti Python cù __call__.
  • Eliminatu JIterator deprecated, usu di JException cum'è una fabbrica, get_default_jvm_path è jpype.reflect.
  • Per automaticamente, i strings Java ùn sò micca cunvertiti in strings Python.
  • Python hà deprecatu "__int__", cusì i casts impliciti trà i tipi integer è in virgola flottante pruduceranu un TypeError.
  • L'usu di JException hè statu deprecated. Per catturà tutte l'eccezzioni, o verificate chì un ughjettu hè un tipu d'eccezzioni Java, utilizate java.lang.Throwable.
  • Cause in cascata di l'eccezzioni Java sò avà riflesse in i frames di stack Python.
  • JString hè statu deprecated. Per creà una stringa Java, o per verificà chì un ughjettu hè di tipu string Java, utilizate java.lang.String.
  • I metudi Repr sò stati aghjurnati in classi Java.
  • java.util.List esegue i cuntratti per collections.abc.Sequence è collections.abc.MutableSequence.
  • java.util.Collection esegue u cuntrattu per collections.abc.Collection.
  • E classi Java sò privati ​​​​è ghjittaranu TypeError quandu stendu da Python.
  • Mantene Control-C cun cura. E versioni precedenti crash quandu Java processa un signalu Control-C perchè terminanu Java durante a chjama. JPype ora lancerà una InterruptedException quandu torna da Java. Control-C ùn scaccià micca e grandi prucedure Java cum'è attualmente implementate, postu chì Java ùn hà micca un strumentu speciale per questu.

In seguitu, hè stata creata una liberazione currettiva 1.0.1, chì hà aghjustatu cambiamenti per trattà i prublemi cù a versione Python 3.8.4. Python hà cambiatu a logica in quantu à l'usu di "__setattr__" per "ughjettu" è "tipu", impediscendu di esse usatu per mudificà e classi derivate. A verificazione di l'errore hè stata ancu delegata da u metudu "__setattr__", cusì i tipi d'eccezzioni in certi cuntrolli di adeguatezza devenu esse aghjurnati in cunseguenza.

Source: opennet.ru

Add a comment