Lëshimi JPype 0.7.2, një bibliotekë për qasje në klasa Java nga Python.

I verfĂŒshĂ«m lĂ«shimi i shtresĂ«s JPype 0.7.2, qĂ« mundĂ«son njĂ« qasje tĂ« plotĂ« tĂ« aplikacioneve Python nĂ« libraritĂ« e klasave nĂ« gjuhĂ«n Java. Me ndihmĂ«n e JPype, nga Python mund tĂ« pĂ«rdoren libraritĂ« specifike pĂ«r Java, duke krijuar aplikacione hibride qĂ« kombinojnĂ« kodin nĂ« Java dhe Python. Ndryshe nga Jython, integrimi me Java arrihet jo pĂ«rmes krijimit tĂ« njĂ« varianti Python pĂ«r JVM, por pĂ«rmes ndĂ«rveprimit nĂ« nivelin e tĂ« dyja makinave virtuale, duke pĂ«rdorur memorie tĂ« pĂ«rbashkĂ«t. Qasja e propozuar nuk vetĂ«m qĂ« ofron njĂ« performancĂ« tĂ« mirĂ«, por gjithashtu siguron qasje nĂ« tĂ« gjitha libraritĂ« CPython dhe Java. Kodi i projektit distribuohet nĂ«n licencĂ«n Apache 2.0.

Ndryshimet kryesore:

  • PĂ«rjashtimet qĂ« hidhen nĂ« kodin C++ dhe Java tani ofrojnĂ« stack trace kur ndodh njĂ« pĂ«rjashtim nĂ« kodin Python. Pra, pĂ«r tĂ« marrĂ« informacionin mbi stack trace, nuk Ă«shtĂ« mĂ« e nevojshme tĂ« thĂ«rrisni stacktrace().
  • ShpejtĂ«sia e kthimit gjatĂ« thirrjeve Ă«shtĂ« rritur tre herĂ«.
  • ShumĂ«fish Ă«shtĂ« rritur shpejtĂ«sia e transferimit nĂ«
    bufet numpy të matricave shumëdimensionale. Primitivat shumëdimensionale dërgojnë kopje vetëm për lexim të krijuara brenda JVM me vendosje të vazhdueshme C.
  • TĂ« gjitha komponentet e brendshme qĂ« paraqiten janĂ« zĂ«vendĂ«suar me implementime nga CPython, ndĂ«rsa simbolet __javaclass__, __javavalue__ dhe __javaproxy__ janĂ« hequr.
    Të gjitha llojet CPython, të trashëguara nga llojet e klasave jpype, iu shtua një hapësirë e dedikuar Java. Të gjitha tabelat private janë transferuar në CPython. Tani, llojet Java duhet të trashëgojnë nga metaklasa JClass, e cila përdor hapësirat e tipeve. Miqtë për klasat bazë Python nuk lejohen. Llojet Object, Proxy, Exception, Number dhe Array trashëgohen drejtpërdrejt nga implementimet e brendshme CPython.
  • PĂ«rmirĂ«simi i gjurmimit dhe trajtimit tĂ« pĂ«rjashtimeve.
  • PjesĂ«t e arrave (Array slices) tani trajtohen si pĂ«rfaqĂ«sime qĂ« mbĂ«shtesin rikthimin te origjinali, siç Ă«shtĂ« arrĂ« numpy. PĂ«r kĂ«to pjesĂ«, Ă«shtĂ« siguruar mbĂ«shtetje pĂ«r vendosjen dhe marrjen e vlerave me hap (slice(start, stop, step)).
  • NĂ« arrat Ă«shtĂ« realizuar mbĂ«shtetje pĂ«r '__reversed__'.
  • NĂ« arrat Java Ă«shtĂ« siguruar mbĂ«shtetje pĂ«r API memoryview dhe Ă«shtĂ« hequr varĂ«sia nga numpy pĂ«r transferimin e pĂ«rmbajtjes sĂ« buferit.
  • Numpy tani nuk Ă«shtĂ« varĂ«si (extra) dhe transferimi i memories nĂ« numpy Ă«shtĂ« i mundur pa kompilim me mbĂ«shtetje pĂ«r numpy.
  • JInterface Ă«shtĂ« formuar si njĂ« metaklasĂ«. PĂ«rdorni isinstance(cls, JInterface) pĂ«r tĂ« kontroluar pĂ«r interfaca.
  • TLD-tĂ« e humbura «mil», «net» dhe «edu» janĂ« shtuar nĂ« importet e paracaktuara.
  • Mesazhet e gabimeve pĂ«r UnsupportedClassVersion janĂ« pĂ«rmirĂ«suar gjatĂ« nisjes.
  • java.util.Map tani do tĂ« japĂ« KeyError nĂ«se elementi nuk gjendet. Vlerat qĂ« janĂ« null, do tĂ« vazhdojnĂ« tĂ« kthejnĂ« None siç pritej. PĂ«rdorni get() nĂ«se çelĂ«sat bosh duhet tĂ« trajtohen si None.
  • java.util.Collection Ă«shtĂ« hequr, pasi ato janĂ« ngatĂ«rruar çuditĂ«risht midis remove(Object) dhe remove(int) nĂ« List-a. PĂ«rdorni metodĂ«n Java remove() pĂ«r tĂ« acessuar sjelljen origjinale tĂ« Java-s, por pĂ«rkthimi i tipit rekomandohet fort pĂ«r tĂ« menaxhuar ngatĂ«rrimin.
  • java.lang.IndexOutOfBoundsException tani mund tĂ« kapet pĂ«rmes klasĂ«s pĂ«r pĂ«rjashtime IndexError kur aksesohet elementet e java.util.List.

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster