Liberigo de JPype 0.7.2, bibliotekoj por aliri Java klasojn de Python

Disponebla tavolo liberigo JPype 0.7.2, kiu permesas al Python-aplikoj havi plenan aliron al klasbibliotekoj en la Java lingvo. Kun JPype de Python, vi povas uzi Java-specifajn bibliotekojn por krei hibridajn aplikaĵojn, kiuj kombinas Java kaj Python-kodon. Male al Jython, integriĝo kun Java estas atingita ne per kreado de Python-variaĵo por la JVM, sed per interagado sur la nivelo de ambaŭ virtualaj maŝinoj uzante komunan memoron. La proponita aliro permesas ne nur atingi bonan rendimenton, sed ankaŭ disponigas aliron al ĉiuj CPython kaj Java bibliotekoj. Projekta kodo distribuita de licencita sub Apache 2.0.

Ĉefaj ŝanĝoj:

  • Esceptoj ĵetitaj en C++ kaj Java-kodo nun provizas esceptan stakon kiam escepto okazas en Python-kodo. Tiel, por akiri informojn pri la escepta stako, vi ne plu bezonas voki stacktrace().
  • La voka revena rapido triobliĝis.
  • Signife (laŭ grandordoj) pliigis dissendrapidecon en
    numpy bufroj de plurdimensiaj tabeloj. Plurdimensiaj primitivuloj pasas nurlegeblajn kopiojn kreitajn ene de la JVM kun apuda C-aranĝo.

  • Ĉiuj elmontritaj internaĵoj estis anstataŭigitaj per CPython-efektivigoj, kaj la simboloj __javaclass__, __javavalue__ kaj __javaproxy__
    forigita. Diligenta Java-fendeto estis aldonita al ĉiuj CPython-tipoj kiuj heredas de jpype-klastipoj. Ĉiuj privataj tabloj estis movitaj al CPython. Java tipoj nun devas heredi de la JClass metaklaso, kiu uzas tipfendojn. Miksinoj por bazklasoj de Python ne estas permesitaj. La tipoj estas Object, Proxy, Exception, Number kaj Array kaj heredas rekte de la internaj efektivigoj de CPython.

  • Plibonigita spurado kaj esceptotraktado.
  • Tabelaj tranĉaĵoj nun estas prilaboritaj kiel vidoj kiuj subtenas reskribi al la originalo, kiel numpy tabelo. Por tabelotranĉado, subteno estas provizita por agordi kaj retrovi valorojn en paŝoj (tranĉaĵo(komenco, halto, paŝo)).
  • Tabeloj nun subtenas "__inversigitan__".
  • Java-tabeloj nun subtenas la memorview-API kaj forigas la dependecon de numpy por pasigi la bufran enhavon.
  • Numpy ne plu estas dependeco (kromaĵo) kaj memortranslokigo al numpy disponeblas sen kompilo kun numpy-subteno.
  • JInterface estas desegnita kiel metaklaso. Uzu isinstance(cls, JInterface) por kontroli interfacojn.
  • Aldonis mankantajn TLD-ojn "mil", "net" kaj "edu" al defaŭltaj importadoj.
  • Plibonigitaj erarmesaĝoj por UnsupportedClassVersion dum lanĉo.
  • java.util.Map nun ĵetas KeyError se la elemento ne estas trovita. Valoroj kiuj estas nulaj ankoraŭ resendas Neniun kiel atendite. Uzu get() se vi volas trakti malplenajn ŝlosilojn kiel Neniun.
  • Forigita java.util.Collection ĉar ĝi strange troŝarĝas inter remove(Object) kaj remove(int) sur Listoj. Uzu la metodon Java remove() por aliri denaskan Java konduton, sed tajpado estas forte rekomendita por troŝarĝa kontrolo.
  • java.lang.IndexOutOfBoundsException nun povas esti kaptita uzante la IndexError esceptklason kiam oni aliras java.util.List-elementojn.

fonto: opennet.ru

Aldoni komenton