is de release van de laag , 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 onder de Apache 2.0-licentie.
Belangrijkste wijzigingen:
- JChar wordt ondersteund als een teruggegeven type. Voor compatibiliteit is JChar geƫrfd van 'str' en implementeert het impliciete conversie naar 'int'. Dit betekent echter dat het niet langer als een numeriek type in Python wordt beschouwd en daarom retourneert isinstance(c, int) False, wat overeenkomt met de type-conversie regels van Java.
- Een operator is geĆÆntroduceerd voor het omzetten van het Java-type Type@obj (@ is de operator van Python voor binnenproduktie, die er in Java niet is).
- Notatie voor het maken van Java-arrays is toegevoegd. Type[s1][s2][s3] voor arrays van vaste grootte, Type[:][:][:] voor arrays die later zullen worden gemaakt.
- @FunctionalInterface maakt het mogelijk om Java-functies uit Python-objecten met __call__ te creƫren.
- Verouderde JIterator, het gebruik van JException als fabriek, get_default_jvm_path en jpype.reflect zijn verwijderd.
- Standaard vindt er geen conversie plaats van Java-strings naar Python-strings.
- Python heeft ' __int__ ' als niet-aanbevolen gemarkeerd, dus impliciete conversies tussen gehele en drijvende punt types zullen TypeError veroorzaken.
- Het gebruik van JException is als verouderd gemarkeerd. Om alle uitzonderingen te vangen, of om te controleren of een object van het type Java- uitzondering is, gebruik java.lang.Throwable.
- Cascading oorzaken van Java-excepties worden nu weerspiegeld in de Python-stackframes.
- Het gebruik van JString is als verouderd gemarkeerd. Om een Java-string te maken, of om te controleren of een object het type Java-string heeft, gebruik java.lang.String.
- De repr-methoden in Java-klassen zijn bijgewerkt.
- java.util.List voldoet aan de contracten voor collections.abc.Sequence en collections.abc.MutableSequence.
- java.util.Collection voldoet aan het contract voor collections.abc.Collection.
- Java-klassen zijn gesloten en zullen TypeError werpen bij uitbreiding vanuit Python.
- Behandeling van Control-C is nu zorgvuldig. Vorige versies crashen wanneer Java het Control-C-signaal behandelt, omdat ze Java beëindigen tijdens de aanroep. Nu zal JPype InterruptedException genereren wanneer het terugkeert vanuit Java. Control-C zal niet eruit gegooid worden uit grote Java-procedures, zoals het nu is geïmplementeerd, aangezien Java geen speciale middelen heeft voor dit doel.
Vervolgens is een correctieversie 1.0.1 gemaakt, waarin wijzigingen zijn aangebracht om problemen met de release van Python 3.8.4 te omzeilen. Python heeft de logica met betrekking tot het gebruik van ā__setattr__ā voor āobjectā en ātypeā gewijzigd, waardoor dit niet meer kan worden gebruikt om afgeleide klassen te wijzigen. Bovendien is foutcontrole gedelegeerd vanuit de methode ā__setattr__ā, waardoor de uitzonderingstypen in sommige geldigheidscontroles dienovereenkomstig moeten worden bijgewerkt.
Bron: opennet.ru
