JPype 0.7.2 kaleratzea, Python-etik Java klaseetara sartzeko liburutegiak

Eskuragarri geruza askatzea JPype 0.7.2, 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:

  • C++ eta Java kodean botatako salbuespenek orain salbuespen pila bat eskaintzen dute Python kodean salbuespen bat gertatzen denean. Horrela, salbuespen pilari buruzko informazioa lortzeko, jada ez duzu stacktrace(ri) deitu beharrik.
  • Deia itzultzeko abiadura hirukoiztu egin da.
  • Nabarmen (magnitude-ordenaren arabera) transmisio-abiadura handitu zen
    dimentsio anitzeko matrizeen buffer numpy. Dimentsio anitzeko primitiboek JVM barruan sortutako irakurtzeko soilik kopiak pasatzen dituzte, ondoko C diseinuarekin.

  • Ageriko barneko guztiak CPython inplementazioekin ordezkatu dira, eta __javaclass__, __javavalue__ eta __javaproxy__ sinboloak
    ezabatu da. Java zirrikitua dedikatu bat gehitu da jpype klase-motetatik heredatzen diren CPython mota guztiei. Taula pribatu guztiak CPythonera eraman dira. Java motak orain JClass metaklasetik heredatu behar dute, motako zirrikituak erabiltzen dituena. Python oinarrizko klaseetarako mixinak ez dira onartzen. Motak Object, Proxy, Exception, Number eta Array dira eta CPython-en barne inplementazioetatik zuzenean heredatzen dira.

  • Trazadura eta salbuespenen kudeaketa hobetu.
  • Array xerrak jatorrizkora idaztea onartzen duten ikuspegi gisa prozesatzen dira orain, adibidez, numpy matrize bat. Array zatiketa egiteko, urratsetan balioak ezartzeko eta berreskuratzeko laguntza eskaintzen da (slice (hasi, gelditu, urratsa)).
  • Orain matrizeek "__alderantziz__" onartzen dute.
  • Java-matrizeek orain memoryview APIa onartzen dute eta bufferaren edukia pasatzeko numpy-ren menpekotasuna kentzen dute.
  • Numpy jada ez da menpekotasun bat (gehigarria) eta memoria transferitzea numpy-ra erabilgarri dago numpy laguntzarekin konpilatu gabe.
  • JInterface meta klase gisa diseinatuta dago. Erabili isinstance(cls, JInterface) interfazeak egiaztatzeko.
  • "mil", "net" eta "edu" falta diren TLDak gehitu dira inportazio lehenetsietara.
  • Errore-mezuak hobetu dira UnsupportedClassVersion-erako abiaraztean.
  • java.util.Map-ek orain KeyError bat botatzen du elementua aurkitzen ez bada. Nuluak diren balioek ere ez dute espero bezala itzultzen. Erabili get() gako hutsak None gisa tratatu nahi badituzu.
  • Kendu da java.util.Collection Zerrendetako remove(Object) eta remove(int) artean gainkargatzen duelako. Erabili Java remove() metodoa jatorrizko Java portaera atzitzeko, baina mota igortzea guztiz gomendatzen da gainkarga kontrolatzeko.
  • java.lang.IndexOutOfBoundsException orain IndexError salbuespen-klasea erabiliz atzeman daiteke java.util.List elementuak sartzean.

Iturria: opennet.ru

Gehitu iruzkin berria