JPype 1.0, bibliotēkas piekļuvei Java klasēm no Python, izlaidums

Pieejams slāņa atbrīvošana JPype 1.0, kas ļauj Python lietojumprogrammām pilnībā piekļūt klašu bibliotēkām Java valodā. Izmantojot Python JPype, varat izmantot Java specifiskas bibliotēkas, lai izveidotu hibrīda lietojumprogrammas, kas apvieno Java un Python kodu. Atšķirībā no Jython, integrācija ar Java tiek panākta, nevis izveidojot Python variantu JVM, bet gan mijiedarbojoties abu virtuālo mašīnu līmenī, izmantojot koplietojamo atmiņu. Piedāvātā pieeja ļauj ne tikai sasniegt labu veiktspēju, bet arī nodrošina piekļuvi visām CPython un Java bibliotēkām. Projekta kods izplata licencēts saskaņā ar Apache 2.0.

Galvenās izmaiņas:

  • JChar tiek atbalstīts kā atgriešanas veids. Saderības labad JChar manto no "str" ​​un ievieš netiešu pārveidošanu par "int". Tāpēc tas iziet pārbaudes līgumos. Bet tas nozīmē, ka Python tas vairs netiek uzskatīts par skaitlisko veidu, un tāpēc isinstance(c, int) tiek novērtēts kā False, kas atbilst Java tipa konvertēšanas noteikumiem.
  • Ir ieviests operators, lai izdalītu Java tipu Type@obj (@ ir Python operators iekšējam produktam; Java tāda nav).
  • Pievienots apzīmējums Java masīvu izveidei. Ierakstiet [s1][s2][s3] fiksēta izmēra masīviem, ierakstiet [:][:][:] masīviem, kas tiks izveidoti vēlāk.
  • @FunctionalInterface ļauj izveidot Java funktorus no Python objektiem ar __call__.
  • Noņemts novecojušais JIterator, JException kā rūpnīcas izmantošana, get_default_jvm_path un jpype.reflect.
  • Pēc noklusējuma Java virknes netiek pārveidotas par Python virknēm.
  • Python ir novecojis "__int__", tāpēc netieša apraide starp veseliem skaitļiem un peldošā komata veidiem radīs tipa kļūdu.
  • JException izmantošana ir novecojusi. Lai uztvertu visus izņēmumus vai pārbaudītu, vai objektam ir Java izņēmuma veids, izmantojiet java.lang.Throwable.
  • Java izņēmumu kaskādes cēloņi tagad ir atspoguļoti Python steku rāmjos.
  • JString ir novecojis. Lai izveidotu Java virkni vai pārbaudītu, vai objektam ir Java virkne, izmantojiet java.lang.String.
  • Java klasēs ir atjauninātas repr metodes.
  • java.util.List izpilda līgumus par collections.abc.Sequence un collections.abc.MutableSequence.
  • java.util.Collection izpilda līgumu par collections.abc.Collection.
  • Java klases ir privātas, un, paplašinot no Python, tiks parādīta TypeError.
  • Rīkojieties uzmanīgi ar Control-C. Iepriekšējās versijas avarē, kad Java apstrādā Control-C signālu, jo tās pārtrauks Java zvana laikā. Atgriežoties no Java, JPype tagad izliks InterruptedException. Control-C neizmetīs lielas Java procedūras, kā tas ir ieviests pašlaik, jo Java šim nolūkam nav speciāla rīka.

Pēc tam tika izveidots koriģējošais laidiens 1.0.1, kas pievienoja izmaiņas, lai novērstu problēmas ar Python 3.8.4 laidienu. Python ir mainījis loģiku attiecībā uz "__setattr__" izmantošanu "objektam" un "tipam", neļaujot to izmantot atvasināto klašu modificēšanai. Kļūdu pārbaude ir deleģēta arī no metodes "__setattr__", tāpēc izņēmumu veidi dažās atbilstības pārbaudēs ir attiecīgi jāatjaunina.

Avots: opennet.ru

Pievieno komentāru