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

Na voljo sprostitev plasti JPype 0.7.2, 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:

  • Izjeme, vržene v kodi C++ in Java, zdaj zagotavljajo sklad izjem, ko pride do izjeme v kodi Python. Tako vam za pridobitev informacij o skladu izjem ni treba več klicati stacktrace().
  • Hitrost povratnega klica se je potrojila.
  • Znatno (za velikostne rede) povečana hitrost prenosa v
    numpy medpomnilniki večdimenzionalnih nizov. Večdimenzionalni primitivi prepuščajo kopije samo za branje, ustvarjene znotraj JVM s sosednjo postavitvijo C.

  • Vsi izpostavljeni notranji elementi so bili nadomeščeni z implementacijami CPython in simboli __javaclass__, __javavalue__ in __javaproxy__
    izbrisano. Vsem tipom CPython, ki podedujejo tipe razredov jpype, je bila dodana namenska reža za Java. Vse zasebne tabele so bile premaknjene v CPython. Tipi Java morajo zdaj dedovati od metarazreda JClass, ki uporablja reže za tipe. Miksini za osnovne razrede Python niso dovoljeni. Tipi so Object, Proxy, Exception, Number in Array in podedujejo neposredno iz notranjih izvedb CPython.

  • Izboljšano sledenje in obravnavanje izjem.
  • Rezine matrike se zdaj obdelujejo kot pogledi, ki podpirajo pisanje nazaj v izvirnik, kot je matrika numpy. Za rezanje matrike je na voljo podpora za nastavitev in pridobivanje vrednosti v korakih (slice(start, stop, step)).
  • Nizi zdaj podpirajo "__reversed__".
  • Matrike Java zdaj podpirajo API memoryview in odstranijo odvisnost od numpy za posredovanje vsebine medpomnilnika.
  • Numpy ni več odvisnost (dodatno) in prenos pomnilnika v numpy je na voljo brez prevajanja s podporo za numpy.
  • JInterface je zasnovan kot meta razred. Za preverjanje vmesnikov uporabite isinstance(cls, JInterface).
  • Dodani manjkajoči TLD-ji »mil«, »net« in »edu« privzetim uvozom.
  • Izboljšana sporočila o napakah za UnsupportedClassVersion med zagonom.
  • java.util.Map zdaj vrže KeyError, če element ni najden. Vrednosti, ki so ničelne, po pričakovanjih še vedno vrnejo None. Če želite prazne ključe obravnavati kot None, uporabite get().
  • Odstranjena zbirka java.util.Collection, ker se nenavadno preobremeni med remove(Object) in remove(int) na seznamih. Uporabite metodo Java remove() za dostop do izvornega vedenja Jave, vendar je pretvorba tipa močno priporočljiva za nadzor preobremenitve.
  • java.lang.IndexOutOfBoundsException je zdaj mogoče ujeti z uporabo razreda izjeme IndexError pri dostopu do elementov java.util.List.

Vir: opennet.ru

Dodaj komentar