A JPype 0.7.2 kiadása, könyvtárak a Java osztályok Pythonból való eléréséhez

Elérhető rétegfelszabadítás JPype 0.7.2, amely lehetővé teszi a Python alkalmazások számára, hogy teljes hozzáférést kapjanak a Java nyelvű osztálykönyvtárakhoz. A Pythonból származó JPype segítségével Java-specifikus könyvtárak segítségével hozhat létre Java- és Python-kódot kombináló hibrid alkalmazásokat. A Jythontól eltérően a Java-val való integráció nem a JVM Python-változatának létrehozásával, hanem a megosztott memóriát használó mindkét virtuális gép szintjén történő interakcióval valósul meg. A javasolt megközelítés nemcsak jó teljesítmény elérését teszi lehetővé, hanem hozzáférést biztosít az összes CPython és Java könyvtárhoz. Projekt kód forgalmazza Apache 2.0 licenc alatt.

Nagy változások:

  • A C++-ban és a Java-kódban dobott kivételek mostantól kivétel veremeket biztosítanak, ha kivétel történik a Python-kódban. Így ahhoz, hogy információt szerezzen a kivételveremről, többé nem kell meghívnia a stacktrace(t).
  • A visszahívási sebesség megháromszorozódott.
  • Jelentősen (nagyságrendekkel) megnövelt átviteli sebesség be
    többdimenziós tömbök numpy pufferei. A többdimenziós primitívek átadják a JVM-en belül összefüggő C-elrendezésű, csak olvasható másolatokat.

  • Az összes látható belsőt lecseréltük CPython-megvalósításokra, valamint a __javaclass__, __javavalue__ és __javaproxy__ szimbólumokra.
    törölve. Egy dedikált Java bővítőhely került minden CPython-típushoz, amely a jpype osztálytípusoktól öröklődik. Minden privát asztal átkerült a CPythonba. A Java típusoknak mostantól a JClass metaosztálytól kell örökölniük, amely típushelyeket használ. A Python alaposztályokhoz tartozó mixek nem engedélyezettek. A típusok: objektum, proxy, kivétel, szám és tömb, és közvetlenül a CPython belső megvalósításaiból öröklődnek.

  • Továbbfejlesztett nyomkövetés és kivételkezelés.
  • A tömbszeleteket a rendszer mostantól olyan nézetként dolgozza fel, amely támogatja az eredetire való visszaírást, például egy numpy tömbként. A tömbszeletelésnél támogatást biztosítunk az értékek lépésenkénti beállításához és lekéréséhez (szelet (start, stop, lépés)).
  • A tömbök mostantól támogatják a „__reversed__” beállítást.
  • A Java tömbök mostantól támogatják a memórianézet API-t, és eltávolítják a numpy-tól való függőséget a puffertartalom átadásához.
  • A Numpy már nem függőség (extra), és a numpy-ba való memóriaátvitel a numpy támogatással történő fordítás nélkül is elérhető.
  • A JInterface metaosztálynak készült. Az interfészek ellenőrzéséhez használja az isinstance(cls, JInterface) parancsot.
  • A hiányzó „mil”, „net” és „edu” TLD-k hozzáadva az alapértelmezett importáláshoz.
  • Továbbfejlesztett hibaüzenetek az UnsupportedClassVersion számára az indítás során.
  • A java.util.Map most KeyError-t dob, ha az elem nem található. Azok az értékek, amelyek nulla, továbbra is a várt módon adják vissza. Használja a get()-et, ha az üres kulcsokat None-ként szeretné kezelni.
  • A java.util.Collection eltávolítva, mivel furcsa módon túlterhelődik a listákon lévő remove(Object) és remove(int) között. Használja a Java remove() metódust a natív Java viselkedés eléréséhez, de a túlterhelés szabályozásához erősen ajánlott a típusátadás.
  • java.lang.IndexOutOfBoundsException mostantól az IndexError kivételosztály használatával fogható meg a java.util.List elemek elérésekor.

Forrás: opennet.ru

Hozzászólás