Uitgave JPype 0.7.2, een bibliotheek voor toegang tot Java-klassen vanuit Python

Beschikbaar is de release van de laag JPype 0.7.2, waarmee volledige toegang tot Java-klassenbibliotheken voor Python-applicaties kan worden georganiseerd. Met JPype kunnen specifieke Java-bibliotheken vanuit Python worden gebruikt, waardoor hybride applicaties ontstaan die zowel Java- als Python-code combineren. In tegenstelling tot Jython wordt de integratie met Java niet bereikt door een versie van Python voor de JVM te creƫren, maar door interactie op het niveau van beide virtuele machines met behulp van gedeeld geheugen. Deze aanpak maakt het niet alleen mogelijk om goede prestaties te bereiken, maar biedt ook toegang tot alle CPython- en Java-bibliotheken. De projectcode wordt verspreid onder de Apache 2.0-licentie.

Belangrijkste wijzigingen:

  • Uitzonderingen die in C++- en Java-code worden gegooid, bieden nu een stacktrace wanneer er een uitzondering optreedt in de Python-code. Het is dus niet langer nodig om stacktrace() aan te roepen om informatie over de stacktrace te verkrijgen.
  • De snelheid van terugkeer bij aanroepen is verdrievoudigd.
  • De snelheid van overdracht in
    numpy-buffers voor multidimensionale arrays is aanzienlijk (met een aantal ordes) verhoogd. Multidimensionale primitieve gegevens geven alleen-lezen kopieƫn door die zijn gemaakt binnen de JVM met een continue C-layout.
  • Alle interne componenten zijn vervangen door implementaties uit CPython, en de symbolen __javaclass__, __javavalue__ en __javaproxy__
    zijn verwijderd. Aan alle CPython-typen, afgeleid van jpype-klasse-typen, is een speciale Java-slot toegevoegd. Alle privƩ-tabellen zijn naar CPython verplaatst. Java-typen moeten nu worden afgeleid van de metaklasse JClass, die typeslots gebruikt. Mix-ins voor basis Python-klassen zijn niet toegestaan. De typen Object, Proxy, Exception, Number en Array zijn rechtstreeks afgeleid van de interne implementaties van CPython.
  • De traceer- en foutafhandelingsmechanismen zijn verbeterd.
  • Array-slices worden nu behandeld als representaties die het mogelijk maken om terug te schrijven naar het origineel, zoals numpy-arrays. Voor array-slices is ondersteuning voor het instellen en verkrijgen van waarden met een stap (slice(start, stop, step)) toegevoegd.
  • Ondersteuning voor '__reversed__' is toegevoegd aan arrays.
  • In Java-arrays is ondersteuning voor de memoryview API toegevoegd en is de afhankelijkheid van numpy voor bufferinhoudoverdracht verwijderd.
  • Numpy is nu geen extra afhankelijkheid meer, en geheugenoverdracht naar numpy is beschikbaar zonder compilatie met numpy-ondersteuning.
  • JInterface is gepresenteerd als een metaklasse. Gebruik isinstance(cls, JInterface) om te controleren op interfaces.
  • De ontbrekende TLD's 'mil', 'net' en 'edu' zijn toegevoegd aan de standaardimporten.
  • Verbeterde foutmeldingen voor UnsupportedClassVersion tijdens het opstarten.
  • java.util.Map geeft nu een KeyError als een element niet wordt gevonden. Waarden die null zijn, blijven None teruggeven zoals verwacht. Gebruik get() als lege sleutels als None moeten worden verwerkt.
  • java.util.Collection is verwijderd omdat het vreemd werd overladen tussen remove(Object) en remove(int) op lijsten. Gebruik de Java-methode remove() om toegang te krijgen tot het oorspronkelijke Java-gedrag, maar typecasting wordt sterk aanbevolen voor het beheren van de overbelasting.
  • java.lang.IndexOutOfBoundsException kan nu worden opgevangen met de IndexError-exceptieklasse bij toegang tot elementen van java.util.List.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster