kerroksen vapauttaminen , jonka avulla Python-sovelluksilla on täysi pääsy Java-kielisten luokkakirjastoihin. Pythonin JPypen avulla voit käyttää Java-spesifisiä kirjastoja luodaksesi hybridisovelluksia, jotka yhdistävät Java- ja Python-koodin. Toisin kuin Jython, integraatio Javaan ei tapahdu luomalla Python-variantti JVM:lle, vaan vuorovaikutuksella molempien virtuaalikoneiden tasolla jaetun muistin avulla. Ehdotettu lähestymistapa ei mahdollista vain hyvän suorituskyvyn saavuttamista, vaan tarjoaa myös pääsyn kaikkiin CPython- ja Java-kirjastoihin. Projektin koodi lisensoitu Apache 2.0:lla.
Suurimmat muutokset:
- C++- ja Java-koodissa heitettävät poikkeukset tarjoavat nyt poikkeuspinon, kun Python-koodissa tapahtuu poikkeus. Tämä tarkoittaa, että sinun ei enää tarvitse kutsua stacktrace()-funktiota poikkeuspinon tietojen saamiseksi.
- Puheluiden paluunopeus on kolminkertaistunut.
- Tiedonsiirtonopeus on kasvanut merkittävästi (suuruusluokkaa)
NumPy-moniulotteisen taulukon puskurit. Moniulotteisille primitiiveille välitetään vain luku -tilassa olevia kopioita, jotka on luotu JVM:n sisällä yhtenäisellä C-asettelulla. - Kaikki paljastuneet sisäiset komponentit on korvattu CPython-toteutuksilla, ja symbolit __javaclass__, __javavalue__ ja __javaproxy__
Poistettu. Kaikkiin jpype-luokkatyypeistä periytyviin CPython-tyyppeihin on lisätty oma Java-paikka. Kaikki yksityiset taulukot on siirretty CPythoniin. Java-tyyppien on nyt periydyttävä JClass-metaluokasta, joka käyttää tyyppipaikkoja. Pythonin perusluokkien miksinejä ei sallita. Object-, Proxy-, Exception-, Number- ja Array-tyypit perivät suoraan CPythonin sisäisistä toteutuksista. - Parannettu jäljitys ja poikkeusten käsittely.
- Taulukkoviipaleita käsitellään nyt esityksinä, jotka tukevat alkuperäiseen kirjoittamista takaisin, kuten NumPy-taulukko. Taulukkoviipaleet tukevat nyt arvojen asettamista ja hakemista lisäyksin (slice(start, stop, step)).
- Taulukot tukevat nyt "__reversed__".
- Java-taulukot tukevat nyt memoryview-rajapintaa ja poistavat numpy-riippuvuuden puskurisisällön välittämisessä.
- Numpy ei ole enää ylimääräinen riippuvuus, ja muistinsiirto numpyyn on saatavilla ilman kääntämistä numpy-tuella.
- JInterface on toteutettu metaluokkana. Käytä isinstance(cls, JInterface)-funktiota rajapintojen tarkistamiseen.
- Puuttuvat ylätason verkkotunnukset "mil", "net" ja "edu" on lisätty oletusarvoisiin tuonteihin.
- Parannettu UnsupportedClassVersion-virheilmoituksia käynnistyksen aikana.
- java.util.Map heittää nyt KeyError-virheen, jos elementtiä ei löydy. Null-arvot palauttavat edelleen odotetusti None-arvon. Käytä get()-funktiota, jos haluat käsitellä tyhjiä avaimia None-arvona.
- Poistettu java.util.Collection, koska se ylikuormittuu oudosti remove(Object):n ja remove(int):n välillä listoissa. Käytä Javan remove()-metodia päästäksesi käsiksi natiiviin Javan toimintaan, mutta luokan casting-metodia suositellaan vahvasti ylikuormituksen hallitsemiseksi.
- java.lang.IndexOutOfBoundsException voidaan nyt havaita IndexError-poikkeusten luokalla, kun käytetään java.util.List-listan elementtejä.
Lähde: opennet.ru
