Rhyddhau JPype 1.0, llyfrgelloedd ar gyfer cyrchu dosbarthiadau Java o Python

Ar gael rhyddhau haen JPype 1.0, sy'n caniatΓ‘u i gymwysiadau Python gael mynediad llawn i lyfrgelloedd dosbarth yn yr iaith Java. Gyda JPype o Python, gallwch ddefnyddio llyfrgelloedd penodol i Java i greu cymwysiadau hybrid sy'n cyfuno cod Java a Python. Yn wahanol i Jython, cyflawnir integreiddio Γ’ Java nid trwy greu amrywiad Python ar gyfer y JVM, ond trwy ryngweithio ar lefel y ddau beiriant rhithwir gan ddefnyddio cof a rennir. Mae'r dull arfaethedig yn caniatΓ‘u nid yn unig i gyflawni perfformiad da, ond hefyd yn darparu mynediad i holl lyfrgelloedd CPython a Java. Cod prosiect dosbarthu gan trwyddedig o dan Apache 2.0.

Newidiadau mawr:

  • Cefnogir JChar fel math dychwelyd. Ar gyfer cydnawsedd, mae JChar yn etifeddu o "str" ​​​​ac yn gweithredu trosiad ymhlyg i "int". Felly, mae'n pasio sieciau mewn contractau. Ond mae hyn yn golygu nad yw bellach yn cael ei ystyried yn fath rhifol yn Python ac felly mae instance(c, int) yn gwerthuso i Anwir, sy'n gyson Γ’ rheolau trosi math Java.
  • Mae gweithredwr wedi'i gyflwyno i gastio math Java, Type@obj (mae @ yn weithredwr Python ar gyfer cynnyrch mewnol; nid oes gan Java un).
  • Ychwanegwyd nodiant ar gyfer creu araeau Java. Math[s1][s2][s3] ar gyfer araeau maint sefydlog, Math[:][:][:] ar gyfer araeau a fydd yn cael eu creu yn nes ymlaen.
  • Mae @FunctionalInterface yn eich galluogi i greu functors Java o wrthrychau Python gyda __call__.
  • Wedi tynnu JIterator anghymeradwy, defnydd o JException fel ffatri, get_default_jvm_path a jpype.reflect.
  • Yn ddiofyn, nid yw tannau Java yn cael eu trosi i linynnau Python.
  • Mae Python wedi anghymeradwyo "__int__", felly bydd castiau ymhlyg rhwng mathau cyfanrif a phwynt arnawf yn cynhyrchu TypeError.
  • Mae'r defnydd o JException wedi'i anghymeradwyo. I ddal pob eithriad, neu wirio bod gwrthrych yn fath o eithriad Java, defnyddiwch java.lang.Throwable.
  • Mae achosion rhaeadru eithriadau Java bellach yn cael eu hadlewyrchu yn fframiau stac Python.
  • Mae JString wedi'i anghymeradwyo. I greu llinyn Java, neu i wirio bod gwrthrych o fath llinyn Java, defnyddiwch java.lang.String.
  • Mae dulliau repr wedi'u diweddaru mewn dosbarthiadau Java.
  • Mae java.util.List yn gweithredu contractau ar gyfer casgliadau.abc.Dilyniant a chasgliadau.abc.MutableSequence.
  • Mae java.util.Collection yn gweithredu'r contract ar gyfer casgliadau.abc.Collection.
  • Mae dosbarthiadau Java yn breifat a byddant yn taflu TypeError pan gaiff ei ymestyn o Python.
  • Trin Control-C yn ofalus. Mae fersiynau blaenorol yn chwalu pan fydd Java yn prosesu signal Control-C oherwydd byddant yn terfynu Java yn ystod yr alwad. Bydd JPype nawr yn taflu InterruptedException wrth ddychwelyd o Java. Ni fydd Control-C yn taflu gweithdrefnau Java mawr fel y'u gweithredir ar hyn o bryd, gan nad oes gan Java arf arbennig ar gyfer hyn.

Nesaf, crΓ«wyd datganiad cywiro 1.0.1, a ychwanegodd newidiadau i weithio o amgylch problemau gyda datganiad Python 3.8.4. Mae Python wedi newid y rhesymeg ynghylch defnyddio "__setattr__" ar gyfer "gwrthrych" a "math", gan ei atal rhag cael ei ddefnyddio i addasu dosbarthiadau deilliadol. Mae gwirio gwallau hefyd wedi'i ddirprwyo o'r dull "__setattr__", felly dylid diweddaru'r mathau o eithriadau mewn rhai gwiriadau digonolrwydd yn unol Γ’ hynny.

Ffynhonnell: opennet.ru

Ychwanegu sylw