utgÄvan av lagret , som möjliggör full Ätkomst för Python-applikationer till Java-bibliotek. Med JPype kan Python anvÀnda specifika Java-bibliotek, vilket skapar hybridapplikationer som kombinerar kod i Java och Python. Till skillnad frÄn Jython uppnÄs integrationen med Java inte genom att skapa en variant av Python för JVM, utan genom interaktion pÄ nivÄn av bÄda virtuella maskiner, med anvÀndning av delad minne. Den föreslagna metoden gör det möjligt att uppnÄ hög prestanda samt ger tillgÄng till alla bibliotek i CPython och Java. Projektkoden Àr licensierad under Apache 2.0.
Huvudsakliga förÀndringar:
- JChar stöds som en returtyp. För kompatibilitet Àr JCharvs baserat pÄ "str" och implementerar implicit konvertering till "int". DÀrför passerar det testerna i kontrakten. Men det betyder att det inte lÀngre anses vara en numerisk typ i Python och dÀrför returnerar isinstance(c, int) False, vilket överensstÀmmer med reglerna för typkonvertering i Java.
- En operator har införts för att konvertera Java-typen Type@obj (@ Àr operatorsymbolen i Python för inre produkt, den finns inte i Java).
- Notation för att skapa Java-arrayer har lagts till. Type[s1][s2][s3] för arrayer av fast storlek, Type[:][:][:] för arrayer som kommer att skapas senare.
- @FunctionalInterface gör det möjligt att skapa Java-funktorer frÄn Python-objekt med __call__.
- FörÄldrade JIterator har tagits bort, anvÀndning av JException som fabrik, get_default_jvm_path och jpype.reflect.
- Som standard sker ingen konvertering av Java-strÀngar till Python-strÀngar.
- Python har avrÄtt frÄn att anvÀnda "__int__", sÄ implicit konvertering mellan heltal och flyttal kommer att generera TypeError.
- AnvÀndningen av JException har förklarats som förÄldrad. För att fÄnga alla undantag eller kontrollera om ett objekt Àr av Java-undantagstyp ska java.lang.Throwable anvÀndas.
- KaskadskÀl till Java-undantag Äterspeglas nu i Python-stackramar.
- AnvÀndningen av JString har förklarats som förÄldrad. För att skapa en Java-strÀng eller kontrollera om ett objekt Àr av Java-strÀngtyp, anvÀnd java.lang.String.
- repr-metoderna i Java-klasserna har uppdaterats.
- java.util.List uppfyller kontrakten för collections.abc.Sequence och collections.abc.MutableSequence.
- java.util.Collection uppfyller kontraktet för collections.abc.Collection.
- Java-klasser Àr stÀngda och kommer att kasta TypeError vid utvidgning frÄn Python.
- Hantera Control-C pÄ ett försiktigt sÀtt. Tidigare versioner kraschade nÀr Java hanterade Control-C-signalen, eftersom de avslutade Java under anropet. Nu kommer JPype att skapa InterruptedException nÀr den Äterkallas frÄn Java. Control-C kommer inte att kastas ut frÄn stora Java-procedurer som det Àr implementerat nu, eftersom Java inte har nÄgot speciellt medel för det.
En efterföljande korrigerande utgÄva 1.0.1 har skapats, dÀr Àndringar har lagts till för att kringgÄ problemen med versionen Python 3.8.4. Python har Àndrat logiken för hur "__setattr__" anvÀnds för "object" och "type", vilket förhindrar anvÀndning för att Àndra Àrvda klasser. Dessutom delades felkontrollen ut frÄn metoden "__setattr__", sÄ typerna av undantag i vissa verifieringar av korrekthet mÄste uppdateras ÄtfÀrdigt.
KĂ€lla: opennet.ru
