rétegkiadás , 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 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
