Udgivelse af JPype 1.0, biblioteker til adgang til Java-klasser fra Python

Ledig lag frigivelse JPype 1.0, som giver dig mulighed for at organisere fuld adgang til Python-applikationer til Java-klassebiblioteker. Med JPype fra Python kan du bruge Java-specifikke biblioteker til at skabe hybride applikationer, der kombinerer Java og Python-kode. I modsætning til Jython opnås integration med Java ikke gennem oprettelsen af ​​en Python-variant til JVM, men gennem interaktion på niveau med begge virtuelle maskiner, der bruger delt hukommelse. Den foreslåede tilgang giver ikke kun mulighed for at opnå god ydeevne, men giver også adgang til alle CPython- og Java-biblioteker. Projektkode distribueret af licenseret under Apache 2.0.

Vigtigste ændringer:

  • JChar understøttes som en returtype. For kompatibilitet arver JChar fra "str" ​​og implementerer en implicit konvertering til "int". Derfor passerer den kontrol i kontrakter. Men det betyder, at det ikke længere betragtes som en numerisk type i Python, og at isinstance(c, int) derfor evalueres til False, hvilket er i overensstemmelse med Java-typekonverteringsregler.
  • En operator er blevet introduceret til at caste en Java-type, Type@obj (@ er en Python-operator for indre produkt; Java har ikke en).
  • Tilføjet notation til oprettelse af Java-arrays. Type[s1][s2][s3] for arrays med fast størrelse, Type[:][:][:] for arrays, der vil blive oprettet senere.
  • @FunctionalInterface giver dig mulighed for at oprette Java-funktioner fra Python-objekter med __call__.
  • Fjernede forældet JIterator, brug af JException som fabrik, get_default_jvm_path og jpype.reflect.
  • Som standard konverteres Java-strenge ikke til Python-strenge.
  • Python har forældet "__int__", så implicitte casts mellem heltals- og flydende kommatyper vil producere en TypeError.
  • Brugen af ​​JException er blevet forældet. For at fange alle undtagelser eller kontrollere, at et objekt er en Java-undtagelsestype, skal du bruge java.lang.Throwable.
  • Kaskadende årsager til Java-undtagelser afspejles nu i Python-stackrammer.
  • JString er blevet udfaset. For at oprette en Java-streng, eller for at kontrollere, at et objekt er af typen Java-streng, skal du bruge java.lang.String.
  • Repr-metoder er blevet opdateret i Java-klasser.
  • java.util.List udfører kontrakter for collections.abc.Sequence og collections.abc.MutableSequence.
  • java.util.Collection udfører kontrakten for collections.abc.Collection.
  • Java-klasser er private og vil kaste TypeError, når de udvides fra Python.
  • Håndter Control-C forsigtigt. Tidligere versioner går ned, når Java behandler et Control-C-signal, fordi de vil afslutte Java under opkaldet. JPype vil nu kaste en InterruptedException, når han vender tilbage fra Java. Control-C vil ikke smide store Java-procedurer ud som i øjeblikket implementeret, da Java ikke har et specielt værktøj til dette.

Dernæst blev der oprettet en korrigerende udgivelse 1.0.1, som tilføjede ændringer for at løse problemer med Python 3.8.4-udgivelsen. Python har ændret logikken vedrørende brugen af ​​"__setattr__" for "objekt" og "type", hvilket forhindrer det i at blive brugt til at ændre afledte klasser. Fejlkontrol er også blevet delegeret fra "__setattr__" metoden, så undtagelsestyperne i nogle tilstrækkelighedskontroller bør opdateres i overensstemmelse hermed.

Kilde: opennet.ru

Tilføj en kommentar