Udgivelsen af JPype 1.0, et bibliotek til adgang til Java-klasser fra Python

Tilgængelig udgivelsen af lag JPype 1.0, som muliggør fuld adgang for Python-applikationer til klassebiblioteker skrevet i Java. Med JPype kan man fra Python bruge Java-specifikke biblioteker og skabe hybride applikationer, der kombinerer kode skrevet i Java og Python. I modsætning til Jython opnås integration med Java ikke ved at skabe en variant af Python til JVM, men gennem interaktion på niveauet for begge virtuelle maskiner ved hjælp af delt hukommelse. Den foreslåede tilgang muliggør ikke kun god ydeevne, men giver også adgang til alle CPython- og Java-biblioteker. Projektkoden distribueres er under Apache 2.0-licensen.

Vigtige ændringer:

  • JChar understøttes som en returneret type. For kompatibilitet er JChar arvet fra "str" og implementerer implicit konvertering til "int". Derfor går det igennem tjek i kontrakterne. Det betyder dog, at det ikke længere betragtes som en numerisk type i Python, og derfor returnerer isinstance(c, int) False, hvilket overensstemmer med konverteringsreglerne i Java.
  • En operator til at konvertere Java-typen Type@obj er indført (@ er Python-operatoren for indre produkt, som ikke findes i Java).
  • Notation til oprettelse af Java-arrays er tilføjet. Type[s1][s2][s3] til arrays med fast størrelse, Type[:][:][:] til arrays, der vil blive oprettet senere.
  • @FunctionalInterface muliggør oprettelse af Java-funktorer fra Python-objekter med __call__.
  • Forældede JIterator, brug af JException som fabrik, get_default_jvm_path og jpype.reflect er fjernet.
  • Som standard sker der ikke konvertering af Java-strenge til Python-strenge.
  • Python har erklæret "__int__" som deprecated, så implicitte konverteringer mellem heltals- og flydende punkt-typer vil producere TypeError.
  • Brugen af JException er erklæret forældet. For at fange alle undtagelser eller kontrollere, at et objekt er af Java-undtagelsestype, skal man bruge java.lang.Throwable.
  • Kaskadende årsager til Java-undtagelser afspejles nu i Python-stakrammerne.
  • Brugen af JString er erklæret forældet. For at skabe en Java-streng eller kontrollere, at et objekt er af Java-strengstype, brug java.lang.String.
  • repr-metoderne i Java-klasser er opdateret.
  • java.util.List opfylder kontrakterne for collections.abc.Sequence og collections.abc.MutableSequence.
  • java.util.Collection opfylder kontrakten for collections.abc.Collection.
  • Java-klasser er lukket og vil kaste TypeError ved udvidelse fra Python.
  • Behandling af Control-C sker nu forsigtigt. Tidligere versioner fejlede, når Java håndterede Control-C signalet, da de ville afslutte Java under kaldet. Nu vil JPype skabe en InterruptedException, når den returnerer fra Java. Control-C vil ikke bryde ud af store Java-procedurer, som det er implementeret nu, da Java ikke har et specielt middel til dette.

En korrekturudgave 1.0.1 er blevet dannet, som tilføjer ændringer for at omgå problemerne med udgivelsen af Python 3.8.4. Python ændrede logikken vedrørende brugen af ‘__setattr__’ til ‘object’ og ‘type’, hvilket forhindrer dens brug til at ændre afledte klasser. Desuden blev fejlkontrol delegeret fra metoden ‘__setattr__’, så typefejlene i visse overensstemmelseskontroller skal opdateres tilsvarende.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster