JPype 1.0 kiadása, könyvtár Java osztályok elérésére Pythonból

Elérhető rétegkiadás JPype 1.0, amely teljes hozzáférést biztosít a Python-alkalmazások számára a Java nyelvű osztálykönyvtárakhoz. A JPype segítségével a Pythonból használhatók a Java-specifikus könyvtárak, hibrid alkalmazások létrehozva, amelyek kombinálják a Java és a Python kódot. A Jythontól eltérően a Java integráció nem a JVM-hez készült Python verzió létrehozásával érhető el, hanem a két virtuális gép közötti interakció révén, megosztott memóriát használva. Ez a megközelítés nemcsak jó teljesítményt nyújt, hanem hozzáférést biztosít az összes CPython és Java könyvtárhoz is. A projekt kódja terjesztésre kerül Apache 2.0 licenc alatt.

Főbb változások:

  • A JChar a visszatérési típusként van támogatva. A JChar, hogy kompatibilis legyen, örökli a „str”-t, és implicit átalakítást végez az „int”-be. Így megfelel a szerződések ellenőrzésének. De ez azt jelenti, hogy már nem számít szám típusnak a Pythonban, ezért az isinstance(c, int) értéke False, ami összhangban van a Java típusok átalakításának szabályaival.
  • Bevezetésre került egy operátor a Java típus Type@obj konvertálására (@ – ez a Python operátor a belső szorzásra, a Java-ban ez nincs).
  • Hozzáadtuk a Java tömbök létrehozásához szükséges jelölést. Type[s1][s2][s3] a fix méretű tömbök számára, Type[:][:][:] a később létrehozandó tömbök számára.
  • @FunctionalInterface lehetővé teszi, hogy Java funkciókat hozzunk létre Python objektumokból a __call__ segítségével.
  • Elavult JIterator eltávolítása, JException használata gyárként, get_default_jvm_path és jpype.reflect.
  • Alapértelmezés szerint nem történik konverzió a Java karakterláncok és a Python karakterláncok között.
  • A Python nem ajánlja az „__int__” használatát, ezért az egész számok és lebegőpontos típusok közötti implicit konverzió TypeError-t fog előidézni.
  • Elavult a JException használata. Ahhoz, hogy elkapjunk minden kivételt, vagy ellenőrizzük, hogy egy objektum Java kivétel típusú-e, használja a java.lang.Throwable-t.
  • A Java kivételek láncolt okai most már tükröződnek a Python veremkeretek között.
  • Elavult a JString használata. A Java karakterlánc létrehozásához, vagy annak ellenőrzéséhez, hogy egy objektum Java karakterlánc típusú legyen, használja a java.lang.String-et.
  • Frissítve lettek a repr módszerek a Java osztályokban.
  • A java.util.List teljesíti a collections.abc.Sequence és collections.abc.MutableSequence szerződéseit.
  • A java.util.Collection teljesíti a collections.abc.Collection szerződését.
  • A Java osztályok zártak és TypeError-t dobnak, ha Pythonból szeretnénk kiterjeszteni őket.
  • A Control-C kezelés most már gondosan történik. A korábbi verziók összeomlottak, amikor a Java kezelte a Control-C jelet, mivel véget vetettek a Java-nak a hívás során. Most a JPype InterruptedException-t fog létrehozni, amikor visszatér a Java-ból. A Control-C nem dobódik ki a nagy Java eljárásokból, ahogy most megvalósítva van, mivel a Java nem rendelkezik külön eszközzel ehhez.

A következő lépésben elkészült a 1.0.1-es javító kiadás, amely tartalmazza a Python 3.8.4-es kiadásával kapcsolatos problémák megkerülésére vonatkozó módosításokat. A Python megváltoztatta a «__setattr__» használatának logikáját az «object» és «type» esetében, megakadályozva annak használatát a származtatott osztályok módosítására. Ezen kívül a hibák ellenőrzését a «__setattr__» metódusból delegálták, így az egyes érvényességi ellenőrzésekben a kivételek típusait ennek megfelelően frissíteni kell.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster