Itusilẹ ti JPype 0.7.2, awọn ile-ikawe fun iraye si awọn kilasi Java lati Python

Wa ifisilẹ interlayer JPYpe 0.7.2, eyiti o fun ọ laaye lati ṣeto iraye si kikun ti awọn ohun elo Python si awọn ile-ikawe kilasi Java. Pẹlu JPype lati Python, o le lo awọn ile-ikawe Java-pato lati ṣẹda awọn ohun elo arabara ti o darapọ Java ati koodu Python. Ko dabi Jython, iṣọpọ pẹlu Java kii ṣe nipasẹ ẹda ti iyatọ Python fun JVM, ṣugbọn nipasẹ ibaraenisepo ni ipele ti awọn ẹrọ foju mejeeji nipa lilo iranti pinpin. Ilana ti a dabaa ko gba laaye nikan lati ṣe aṣeyọri iṣẹ ti o dara, ṣugbọn tun pese aaye si gbogbo awọn ile-ikawe CPython ati Java. koodu ise agbese pin nipasẹ iwe-aṣẹ labẹ Apache 2.0.

Awọn iyipada akọkọ:

  • Awọn imukuro ti a sọ sinu C ++ ati koodu Java ni bayi pese akopọ imukuro nigbati imukuro ba waye ni koodu Python. Nitorinaa, lati gba alaye nipa akopọ imukuro, iwọ ko nilo lati pe stacktrace ().
  • Iyara ipadabọ ipe ti jẹ ilọpo mẹta.
  • Ni pataki (nipasẹ awọn aṣẹ ti titobi) iyara gbigbe pọ si ni
    numpy buffers ti multidimensional orun. Multidimensional primitives kọja awọn adakọ kika-nikan ti a ṣẹda inu JVM pẹlu ifilelẹ C ti o tẹriba.

  • Gbogbo awọn inu inu ti o han ni a ti rọpo pẹlu awọn imuse CPython, ati awọn aami __javaclass__, __javavalue__ ati __javaproxy__
    paarẹ. A ti ṣafikun Iho Java igbẹhin si gbogbo awọn oriṣi CPython ti o jogun lati awọn oriṣi kilasi jpype. Gbogbo awọn tabili ikọkọ ti gbe lọ si CPython. Awọn oriṣi Java gbọdọ ni bayi jogun lati JClass metaclass, eyiti o nlo awọn iho iru. Mixins fun Python mimọ kilasi ko ba gba laaye. Awọn oriṣi jẹ Nkan, Aṣoju, Iyatọ, Nọmba ati Array ati jogun taara lati awọn imuṣẹ inu inu CPython.

  • Ilọsiwaju wiwa kakiri ati mimu imukuro.
  • Awọn ege ege ti wa ni ilọsiwaju bayi bi awọn iwo ti o ṣe atilẹyin kikọ pada si atilẹba, gẹgẹbi titobi nọmba. Fun slicing orun, atilẹyin ti pese fun eto ati gbigba awọn iye pada ni awọn igbesẹ (bibẹ (ibẹrẹ, iduro, igbesẹ)).
  • Awọn eto bayi ṣe atilẹyin "__yiyipada__".
  • Awọn eto Java ni bayi ṣe atilẹyin API iranti iranti ati yọkuro igbẹkẹle lori nọmba lati kọja awọn akoonu ifipamọ naa.
  • Numpy kii ṣe igbẹkẹle (afikun) ati gbigbe iranti si numpy wa laisi ikojọpọ pẹlu atilẹyin nọmba.
  • JInterface jẹ apẹrẹ bi kilasi meta. Lo isinstance(cls, JInterface) lati ṣayẹwo fun awọn atọkun.
  • Ṣafikun awọn TLD ti o padanu “mil”, “net” ati “edu” si awọn agbewọle aifọwọṣe.
  • Awọn ifiranṣẹ aṣiṣe ti ilọsiwaju fun UnsupportedClassVersion lakoko ibẹrẹ.
  • java.util.Map bayi ju a KeyError ti o ba ti ano ti ko ba ri. Awọn iye ti o jẹ asan si tun pada Ko si ọkan bi o ti ṣe yẹ. Lo gba () ti o ba fẹ tọju awọn bọtini ofo bi Ko si.
  • Java.util.Collection ti yọ kuro bi o ṣe n ṣe apọju iyalẹnu laarin yiyọ (Nkan) ati yọkuro (int) lori Awọn atokọ. Lo ọna yiyọ Java lati wọle si ihuwasi Java abinibi, ṣugbọn iru simẹnti ni a gbaniyanju gidigidi fun iṣakoso apọju.
  • java.lang.IndexOutOfBoundsException ni a le mu ni bayi nipa lilo kilasi imukuro IndexError nigbati o wọle si awọn eroja java.util.List.

orisun: opennet.ru

Fi ọrọìwòye kun