Uppdatering av JPype 1.0, ett bibliotek för Ätkomst till Java-klasser frÄn Python

TillgÀnglig utgÄvan av lagret JPype 1.0, 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 sprids À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

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster