utgÄvan av lagret , som möjliggör full Ätkomst för Python-applikationer till Java-bibliotek. Med JPype kan Python anvÀnda specifika Java-bibliotek, vilket skapar hybridapplikationer som kombinerar kod i Java och Python. Till skillnad frÄn Jython uppnÄs integrationen med Java inte genom att skapa en variant av Python för JVM, utan genom interaktion pÄ nivÄn av bÄda virtuella maskiner, med anvÀndning av delad minne. Den föreslagna metoden gör det möjligt att uppnÄ hög prestanda samt ger tillgÄng till alla bibliotek i CPython och Java. Projektkoden Àr licensierad under Apache 2.0.
Huvudsakliga förÀndringar:
- Undantag som kastas i C++ och Java-kod tillhandahÄller nu en undantagsstack nÀr ett undantag intrÀffar i Python-koden. DÀrför behöver man inte lÀngre anropa stacktrace() för att fÄ information om undantagsstacken.
- à tergÄngshastigheten har tredubblats vid anrop.
- Ăverföringshastigheten till
numpy-buffertar för flerdimensionella arrayer har ökat avsevÀrt (med flera ordningar). Flerdimensionella primitiva datatyper överför enbart skrivskyddade kopior som skapats inuti JVM med kontinuerlig C-layout. - Alla interna komponenter har ersatts med implementationer frÄn CPython, och symbolerna __javaclass__, __javavalue__ och __javaproxy__
har tagits bort. Alla CPython-arvstyper frÄn jpype-klasser har fÄtt en dedikerad Java-slot. Alla privata tabeller har flyttats till CPython. Java-typer mÄste nu Àrvas frÄn metaklassen JClass, som anvÀnder typ-slot. Mixin för grundlÀggande Python-klasser Àr inte tillÄtet. Typer som Object, Proxy, Exception, Number och Array Àrver direkt frÄn de interna implementationerna av CPython. - SpÄrning och hantering av undantag har förbÀttrats.
- Arrayskivor (Array slices) behandlas nu som vyer som stöder Äterkoppling till originalet, som numpy-arrayen. För arrayskivor har stöd för att stÀlla in och hÀmta vÀrden med steg (slice(start, stop, step)) lagts till.
- Stödet för "__reversed__" har implementerats i arrayer.
- I Java-arrayer har stöd för API:t memoryview lagts till, och beroendet av numpy för överföring av buffertinnehÄllet har tagits bort.
- Numpy Àr nu ingen beroende (extra) och minnesöverföring till numpy Àr tillgÀnglig utan att kompilera med numpy-stöd.
- JInterface Àr utformad som en metaklass. AnvÀnd isinstance(cls, JInterface) för att kontrollera grÀnssnitt.
- Bristande TLD "mil", "net" och "edu" har lagts till i standardimporterna.
- Vid start har felmeddelandena för UnsupportedClassVersion förbÀttrats.
- java.util.Map ger nu KeyError om elementet inte hittas. VÀrden som Àr null returnerar fortfarande None som förvÀntat. AnvÀnd get() om tomma nycklar behöver hanteras som None.
- java.util.Collection har tagits bort eftersom den överlagras underligt mellan remove(Object) och remove(int) i Listor. AnvÀnd Java-metoden remove() för att fÄ Ätkomst till det ursprungliga Java-beteendet, men typkonvertering rekommenderas starkt för att hantera överlagringen.
- java.lang.IndexOutOfBoundsException kan nu fÄngas med hjÀlp av klassen för undantag IndexError nÀr man fÄr Ätkomst till element i java.util.List.
KĂ€lla: opennet.ru
