Liberasyon JPype 1.0, bibliyotèk pou jwenn aksè nan klas Java nan Python

Disponib lage kouch JPype 1.0, ki pèmèt aplikasyon Python yo gen aksè konplè nan bibliyotèk klas nan lang Java. Avèk JPype ki soti nan Python, ou ka itilize bibliyotèk espesifik Java pou kreye aplikasyon ibrid ki konbine kòd Java ak Python. Kontrèman ak Jython, entegrasyon ak Java reyalize pa atravè kreye yon variant Python pou JVM a, men atravè entèraksyon nan nivo tou de machin vityèl lè l sèvi avèk memwa pataje. Apwòch yo pwopoze a pèmèt non sèlman reyalize bon pèfòmans, men tou bay aksè a tout bibliyotèk CPython ak Java. Kòd pwojè distribiye pa ki gen lisans anba Apache 2.0.

Chanjman prensipal yo:

  • JChar sipòte kòm yon kalite retounen. Pou konpatibilite, JChar eritye de "str" ​​​​e aplike yon konvèsyon implicite nan "int". Se poutèt sa, li pase chèk nan kontra yo. Men, sa vle di ke li pa konsidere kòm yon kalite nimerik ankò nan Python ak Se poutèt sa isinstance (c, int) evalye a fo, ki se ki konsistan avèk règ konvèsyon kalite Java.
  • Yo te prezante yon operatè pou jete yon kalite Java, Type@obj (@ se yon operatè Python pou pwodwi enteryè; Java pa gen youn).
  • Te ajoute notasyon pou kreye etalaj Java. Tape [s1][s2][s3] pou etalaj gwosè fiks, Tape [:][:][:] pou etalaj ki pral kreye pita.
  • @FunctionalInterface pèmèt ou kreye fonktè Java soti nan objè Python ak __call__.
  • Retire depreche JIterator, itilize JException kòm yon faktori, get_default_jvm_path ak jpype.reflect.
  • Pa default, fisèl Java yo pa konvèti nan fisèl Python.
  • Python te depreche "__int__", kidonk jete implicite ant kalite nonb antye relatif ak pwen k ap flote pral pwodui yon TypeError.
  • Itilizasyon JException te obsolète. Pou kenbe tout eksepsyon, oswa tcheke si yon objè se yon kalite eksepsyon Java, sèvi ak java.lang.Throwable.
  • Kòz kaskad eksepsyon Java yo kounye a reflete nan ankadreman pil Python.
  • JString te obsolète. Pou kreye yon fisèl Java, oswa pou tcheke si yon objè se nan kalite Java fisèl, sèvi ak java.lang.String.
  • Metòd Repr yo te mete ajou nan klas Java yo.
  • java.util.List egzekite kontra pou collections.abc.Sequence ak collections.abc.MutableSequence.
  • java.util.Collection egzekite kontra a pou collections.abc.Collection.
  • Klas Java yo prive epi yo pral voye TypeError lè yo pwolonje soti nan Python.
  • Manyen Control-C ak anpil atansyon. Vèsyon anvan yo aksidan lè Java trete yon siyal Control-C paske yo pral sispann Java pandan apèl la. JPype pral kounye a voye yon InterruptedException lè w ap retounen soti nan Java. Control-C pa pral jete gwo pwosedi Java jan yo aplike kounye a, paske Java pa gen yon zouti espesyal pou sa.

Apre sa, yo te kreye yon lage korektif 1.0.1, ki te ajoute chanjman pou rezoud pwoblèm ak lage Python 3.8.4. Python te chanje lojik konsènan itilizasyon "__setattr__" pou "objè" ak "kalite", anpeche li itilize pou modifye klas ki sòti yo. Tcheke erè te delege tou nan metòd "__setattr__", kidonk kalite eksepsyon yo nan kèk chèk konpetans yo ta dwe mete ajou kòmsadwa.

Sous: opennet.ru

Add nouvo kòmantè