Izdaja JPype 1.0, knjižnica za dostop do Java razredov iz Python-a

Na voljo izdanje sloja JPype 1.0, ki omogoča popoln dostop Python aplikacij do knjižnic razredov v jeziku Java. Z uporabo JPype lahko iz Pythona uporabljate specifične knjižnice Java in ustvarjate hibridne aplikacije, ki združujejo kodo v Java in Python. V nasprotju z Jythonom se integracija z Javo ne doseže s kreiranjem različice Pythona za JVM, temveč z interakcijo na ravni obeh virtualnih strojev, pri čemer se uporablja deljena pomnilniška prostorska. Predlagan pristop omogoča dosego dobre zmogljivosti ter dostop do vseh knjižnic CPython in Java. Koda projekta se distribuira pod licenco Apache 2.0.

Glavne spremembe:

  • JChar se podržava kao povratni tip. Za kompatibilnost, JChar nasleđuje od 'str' i implementira implicitnu konverziju u 'int'. Stoga prolazi provere u ugovorima. Međutim, to znači da više nije smatran numeričkim tipom u Python-u i zato isinstance(c, int) vraća False, što je u skladu sa pravilima konverzije tipova u Javi.
  • Uvedena je operator za pretvaranje Java-tipa Type@obj (@ je Python operator za unutrašnji proizvod, u Javi ga nema).
  • Dodata je notacija za kreiranje Java nizova. Type[s1][s2][s3] za nizove fiksne veličine, Type[:][:][:] za nizove koji će biti kreirani kasnije.
  • @FunctionalInterface omogućava kreiranje Java funkcija iz Python objekata sa __call__.
  • Uklonjeni su zastareli JIterator, korišćenje JException kao fabrike, get_default_jvm_path i jpype.reflect.
  • Podrazumevano ne dolazi do konverzije Java stringova u Python stringove.
  • Python je označio '.__int__' kao nepreporučljiv, tako da implicitne konverzije između celobrojnih i decimalnih tipova će izazvati TypeError.
  • Korišćenje JException je označeno kao zastarelo. Da bi se uhvatili svi izuzeci, ili da se proveri da li je objekat tip Java izuzetka, treba koristiti java.lang.Throwable.
  • Kaskadne uzroke Java izuzetaka sada odražava stek poziva Python-a.
  • Korišćenje JString je označeno kao zastarelo. Da biste kreirali Java string, ili da biste proverili da li objekat ima tip Java stringa, koristite java.lang.String.
  • U Java klasama su ažurirani repr-metodi.
  • java.util.List ispunjava ugovore za collections.abc.Sequence i collections.abc.MutableSequence.
  • java.util.Collection ispunjava ugovor za collections.abc.Collection.
  • Java klase su zatvorene i izazvaće TypeError prilikom proširivanja iz Pythona.
  • Obrada Control-C je uredna. Prethodne verzije su se rušile kada Java obrađuje Control-C signal, jer će završiti Java tokom poziva. Sada će JPype stvoriti InterruptedException kada se vrati iz Jave. Control-C neće prekinuti velike Java procedure, kao što je sada realizovano, jer Java nema poseban mehanizam za to.

Следом сформирован корректирующий выпуск 1.0.1, в котором добавлены изменения для обхода проблем с релизом Python 3.8.4. Python изменил логику относительно использования «__setattr__» для «object» и «type», предотвращая её использование для изменения порождённых классов. Ещё проверка на ошибки была делегирована из метода «__setattr__», поэтому типы исключений в некоторых проверках на адекватность должны быть обновлены соответствующе.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster