Lëshimi i JPype 0.7.2, një bibliotekë për të hyrë në klasat Java nga Python

Në dispozicion lirimi i shtresës JPype 0.7.2, i cili lejon aplikacionet Python të kenë akses të plotë në bibliotekat e klasave në gjuhën Java. Me JPype nga Python, ju mund të përdorni biblioteka specifike të Java për të krijuar aplikacione hibride që kombinojnë kodin Java dhe Python. Ndryshe nga Jython, integrimi me Java nuk arrihet duke krijuar një variant Python për JVM, por përmes ndërveprimit në nivelin e të dy makinave virtuale që përdorin memorie të përbashkët. Qasja e propozuar lejon jo vetëm arritjen e performancës së mirë, por gjithashtu siguron akses në të gjitha bibliotekat CPython dhe Java. Kodi i projektit shperndare nga licencuar sipas Apache 2.0.

Ndryshimet kryesore:

  • Përjashtimet e hedhura në kodin C++ dhe Java tani ofrojnë një pirg përjashtimesh kur ndodh një përjashtim në kodin Python. Kështu, për të marrë informacion në lidhje me pirgun e përjashtimit, nuk keni më nevojë të telefononi stacktrace().
  • Shpejtësia e kthimit të telefonatës është trefishuar.
  • Shpejtësia e transmetimit u rrit ndjeshëm (sipas urdhrave të madhësisë).
    bufferat numpy të vargjeve shumëdimensionale. Primitivët shumëdimensionale kalojnë kopje vetëm për lexim të krijuara brenda JVM me një plan urbanistik të ngjitur C.

  • Të gjitha pjesët e brendshme të ekspozuara janë zëvendësuar me implementime CPython, dhe simbolet __javaclass__, __javavalue__ dhe __javaproxy__
    fshihet. Një slot i dedikuar Java është shtuar në të gjitha llojet e CPython që trashëgojnë nga llojet e klasave jpype. Të gjitha tabelat private janë zhvendosur në CPython. Llojet Java tani duhet të trashëgojnë nga metaklasa JClass, e cila përdor lojëra elektronike të tipit. Përzierjet për klasat bazë Python nuk lejohen. Llojet janë Object, Proxy, Exception, Number dhe Array dhe trashëgohen drejtpërdrejt nga implementimet e brendshme të CPython.

  • Gjurmimi i përmirësuar dhe trajtimi i përjashtimeve.
  • Fetë e vargjeve tani përpunohen si pamje që mbështesin shkrimin e kthimit në origjinal, si p.sh. një grup numpy. Për prerjen e grupeve, ofrohet mbështetje për vendosjen dhe marrjen e vlerave në hapa (fetë (fillim, ndalim, hap)).
  • Vargjet tani mbështesin "__reversed__".
  • Vargjet Java tani mbështesin API-në e memoryview dhe heqin varësinë nga numpy për të kaluar përmbajtjen e buferit.
  • Numpy nuk është më një varësi (shtesë) dhe transferimi i kujtesës në numpy është i disponueshëm pa kompilimin me mbështetjen numpy.
  • JInterface është projektuar si një klasë meta. Përdorni instancën (cls, JInterface) për të kontrolluar ndërfaqet.
  • U shtuan TLD-të që mungojnë "mil", "net" dhe "edu" në importet e paracaktuara.
  • Mesazhe gabimi të përmirësuara për UnsupportedClassVersion gjatë nisjes.
  • java.util.Map tani hedh një gabim kyç nëse elementi nuk gjendet. Vlerat që janë nule ende nuk kthehen Asnjë siç pritej. Përdorni get() nëse doni të trajtoni çelësat bosh si Asnjë.
  • U hoq java.util.Collection pasi çuditërisht mbingarkohet ndërmjet remove(Object) dhe remove(int) në Listat. Përdorni metodën Java remove() për të hyrë në sjelljen vendase të Java, por transmetimi i tipit rekomandohet fuqimisht për kontrollin e mbingarkesës.
  • java.lang.IndexOutOfBoundsException tani mund të kapet duke përdorur klasën e përjashtimit IndexError kur aksesoni elementët java.util.List.

Burimi: opennet.ru

Shto një koment