JPype 1.0 kaleratzea, Python-etik Java klaseetara sartzeko liburutegiak

Eskuragarri geruza askatzea JPype 1.0, eta horri esker, Python aplikazioei Java lengoaian klase-liburutegietarako sarbide osoa izan dezakete. Python-eko JPype-rekin, Javarako berariazko liburutegiak erabil ditzakezu Java eta Python kodea konbinatzen duten aplikazio hibridoak sortzeko. Jython-ek ez bezala, Java-rekin integratzea ez da JVMrako Python aldaera bat sortzearen bidez lortzen, memoria partekatua erabiliz bi makina birtualen mailan elkarreraginaren bidez baizik. Proposatutako ikuspegiak errendimendu ona lortzeaz gain, CPython eta Java liburutegi guztietarako sarbidea ere ematen du. Proiektuaren kodea arabera banatuta Apache 2.0 lizentziapean.

Aldaketa nagusiak:

  • JChar itzulera mota gisa onartzen da. Bateragarritasuna lortzeko, JChar-ek "str"-tik heredatzen du eta "int" bihurtze inplizitua ezartzen du. Hori dela eta, kontratuetan egiaztapenak gainditzen ditu. Baina horrek esan nahi du jada ez dela zenbakizko motatzat hartzen Python-en eta, beraz, isinstance(c, int) False balioesten du, Java motako bihurketa-arauekin bat datorrena.
  • Java mota bat igortzeko operadore bat sartu da, Type@obj (@ barne produkturako Python operadorea da; Javak ez du halakorik).
  • Java arrayak sortzeko notazioa gehitu da. Idatzi[s1][s2][s3] tamaina finkoko matrizeetarako, Mota[:][:][:] geroago sortuko diren matrizeetarako.
  • @FunctionalInterface-k Python objektuetatik Java funktorak sortzeko aukera ematen du __call__-rekin.
  • Zaharkitutako JIterator kendu, JException fabrika gisa erabiltzea, get_default_jvm_path eta jpype.reflect.
  • Lehenespenez, Java kateak ez dira Python kate bihurtzen.
  • Python-ek "__int__" zaharkituta utzi du, beraz, osoko eta koma mugikorreko moten arteko cast inplizituek TypeError bat sortuko dute.
  • JException erabilera zaharkituta geratu da. Salbuespen guztiak atzemateko edo objektu bat Java salbuespen mota bat dela egiaztatzeko, erabili java.lang.Throwable.
  • Java salbuespenen kausa kaskadarrak Python-en pila-markoetan islatzen dira orain.
  • JString zaharkituta geratu da. Java kate bat sortzeko edo objektu bat Java kate motakoa dela egiaztatzeko, erabili java.lang.String.
  • Repr metodoak Java klaseetan eguneratu dira.
  • java.util.List-ek collections.abc.Sequence eta collections.abc.MutableSequence-ren kontratuak exekutatzen ditu.
  • java.util.Collection-ek collections.abc.Collection-en kontratua gauzatzen du.
  • Java klaseak pribatuak dira eta TypeError botako dute Python-etik hedatzen direnean.
  • Kudeatu Kontrol-C arretaz. Aurreko bertsioek huts egiten dute Javak Control-C seinale bat prozesatzen duenean, deian zehar Java amaituko dutelako. JPype-k orain InterruptedException bat botako du Javatik itzultzean. Control-C-k ez ditu Java prozedura handiak botako gaur egun inplementatutako moduan, Javak ez baitu horretarako tresna berezirik.

Ondoren, 1.0.1 bertsio zuzentzailea sortu zen, Python 3.8.4 bertsioaren arazoak konpontzeko aldaketak gehitu zituena. Python-ek "__setattr__" "objektu" eta "mota" erabiltzeari buruzko logika aldatu du, eratorritako klaseak aldatzeko erabiltzea eragotziz. Erroreen egiaztapena "__setattr__" metodotik ere eskuordetu da, beraz, egokitasun-egiaztapen batzuetan salbuespen motak horren arabera eguneratu behar dira.

Iturria: opennet.ru

Gehitu iruzkin berria