Izdaja JPype 1.0, knjižnice za dostop do razredov Java iz Pythona

Na voljo sprostitev plasti JPype 1.0, ki aplikacijam Python omogoča popoln dostop do knjižnic razredov v jeziku Java. Z JPype iz Pythona lahko uporabite knjižnice, specifične za Javo, za ustvarjanje hibridnih aplikacij, ki združujejo kodo Jave in Python. Za razliko od Jythona integracija z Javo ni dosežena z ustvarjanjem različice Python za JVM, temveč z interakcijo na ravni obeh virtualnih strojev, ki uporabljata skupni pomnilnik. Predlagani pristop omogoča ne le doseganje dobre zmogljivosti, temveč tudi dostop do vseh knjižnic CPython in Java. Koda projekta distributer licenciran pod Apache 2.0.

Večje spremembe:

  • JChar je podprt kot povratni tip. Zaradi združljivosti JChar podeduje "str" ​​​​in izvaja implicitno pretvorbo v "int". Zato prestane preverjanja v pogodbah. Toda to pomeni, da se v Pythonu ne šteje več za številski tip in zato isinstance(c, int) ovrednoti vrednost False, kar je skladno s pravili pretvorbe tipa Java.
  • Uveden je bil operator za pretvorbo vrste Java, Type@obj (@ je operator Python za notranji izdelek; Java ga nima).
  • Dodan zapis za ustvarjanje nizov Java. Vnesite [s1][s2][s3] za polja s fiksno velikostjo, vnesite [:][:][:] za polja, ki bodo ustvarjena pozneje.
  • @FunctionalInterface vam omogoča ustvarjanje funkcij Java iz predmetov Python z __call__.
  • Odstranjeni zastareli JIterator, uporaba JException kot tovarne, get_default_jvm_path in jpype.reflect.
  • Privzeto se nizi Java ne pretvorijo v nize Python.
  • Python je opustil "__int__", zato bodo implicitne pretvorbe med tipi celih števil in tipi s plavajočo vejico povzročile TypeError.
  • Uporaba JException je bila opuščena. Če želite ujeti vse izjeme ali preveriti, ali je objekt vrsta izjeme Java, uporabite java.lang.Throwable.
  • Kaskadni vzroki za izjeme Java se zdaj odražajo v okvirih sklada Python.
  • JString je opuščen. Če želite ustvariti niz Java ali preveriti, ali je objekt vrste niz Java, uporabite java.lang.String.
  • Metode repr so bile posodobljene v razredih Java.
  • java.util.List izvaja pogodbe za collections.abc.Sequence in collections.abc.MutableSequence.
  • java.util.Collection izvaja pogodbo za collections.abc.Collection.
  • Razredi Java so zasebni in sprožijo TypeError, ko se razširijo iz Pythona.
  • S Control-C ravnajte previdno. Prejšnje različice se zrušijo, ko Java obdela signal Control-C, ker prekinejo Javo med klicem. JPype bo zdaj vrgel InterruptedException, ko se vrne iz Jave. Control-C ne bo izločil velikih postopkov Java, kot so trenutno implementirani, saj Java za to nima posebnega orodja.

Nato je bila ustvarjena popravljalna izdaja 1.0.1, ki je dodala spremembe za rešitev težav z izdajo Python 3.8.4. Python je spremenil logiko v zvezi z uporabo "__setattr__" za "object" in "type" ter preprečil njegovo uporabo za spreminjanje izpeljanih razredov. Preverjanje napak je bilo preneseno tudi iz metode "__setattr__", zato je treba vrste izjem pri nekaterih preverjanjih ustreznosti ustrezno posodobiti.

Vir: opennet.ru

Dodaj komentar