Release av JPype 0.7.2, bibliotek för åtkomst av Java-klasser från Python

Tillgängliga lagersläpp JPype 0.7.2, som låter dig organisera full åtkomst av Python-applikationer till Java-klassbibliotek. Med JPype från Python kan du använda Java-specifika bibliotek för att skapa hybridapplikationer som kombinerar Java och Python-kod. Till skillnad från Jython uppnås integration med Java inte genom att skapa en Python-variant för JVM, utan genom interaktion på nivån för båda virtuella maskinerna som använder delat minne. Det föreslagna tillvägagångssättet tillåter inte bara att uppnå bra prestanda, utan ger också tillgång till alla CPython- och Java-bibliotek. Projektkod levererad av licensierad under Apache 2.0.

Huvudändringar:

  • Undantag som kastas i C++ och Java-kod ger nu en undantagsstack när ett undantag inträffar i Python-kod. För att få information om undantagsstacken behöver du alltså inte längre anropa stacktrace().
  • Samtalsåtergångshastigheten har tredubblats.
  • Avsevärt (i storleksordningar) ökad överföringshastighet in
    numpy buffertar av flerdimensionella arrayer. Flerdimensionella primitiver skickar skrivskyddade kopior skapade inuti JVM med en sammanhängande C-layout.

  • Alla exponerade interna delar har ersatts med CPython-implementationer, och symbolerna __javaclass__, __javavalue__ och __javaproxy__
    raderade. En dedikerad Java-slot har lagts till alla CPython-typer som ärver från jpype-klasstyper. Alla privata bord har flyttats till CPython. Java-typer måste nu ärva från JClass-metaklassen, som använder typslots. Mixins för Python-basklasser är inte tillåtna. Typerna är Object, Proxy, Exception, Number och Array och ärver direkt från CPythons interna implementeringar.

  • Förbättrad spårning och undantagshantering.
  • Arrayskivor bearbetas nu som vyer som stöder skrivning tillbaka till originalet, till exempel en numpy array. För array slicing tillhandahålls stöd för att ställa in och hämta värden i steg (slice(start, stop, step)).
  • Arrayer stöder nu "__reversed__".
  • Java-arrayer stöder nu memoryview API och tar bort beroendet av numpy för att skicka buffertinnehållet.
  • Numpy är inte längre ett beroende (extra) och minnesöverföring till numpy är tillgänglig utan kompilering med numpy-stöd.
  • JInterface är designad som en metaklass. Använd isinstance(cls, JInterface) för att söka efter gränssnitt.
  • Lade till saknade TLD:er "mil", "net" och "edu" till standardimporter.
  • Förbättrade felmeddelanden för UnsupportedClassVersion under uppstart.
  • java.util.Map kastar nu ett KeyError om elementet inte hittas. Värden som är null returnerar fortfarande Inga som förväntat. Använd get() om du vill behandla tomma nycklar som Inga.
  • Tog bort java.util.Collection eftersom det konstigt nog överbelastas mellan remove(Object) och remove(int) på Lists. Använd metoden Java remove() för att komma åt inbyggt Java-beteende, men typcasting rekommenderas starkt för överbelastningskontroll.
  • java.lang.IndexOutOfBoundsException kan nu fångas med hjälp av undantagsklassen IndexError vid åtkomst till java.util.List-element.

Källa: opennet.ru

Lägg en kommentar