JPype 1.0-ի թողարկում, գրադարաններ Python-ից Java դասեր մուտք գործելու համար

Հասանելի է շերտի ազատում JPype 1.0, որը թույլ է տալիս Python հավելվածներին լիովին մուտք գործել Java դասի գրադարաններ: JPype-ի միջոցով դուք կարող եք օգտագործել Python-ի Java-ի համար նախատեսված գրադարաններ՝ ստեղծելով հիբրիդային հավելվածներ, որոնք համատեղում են Java-ն և Python-ի կոդը: Ի տարբերություն Jython-ի, Java-ի հետ ինտեգրումը իրականացվում է ոչ թե JVM-ի համար Python տարբերակ ստեղծելու միջոցով, այլ երկու վիրտուալ մեքենաների մակարդակով փոխազդեցության միջոցով՝ օգտագործելով համատեղ հիշողությունը: Առաջարկվող մոտեցումը թույլ է տալիս ոչ միայն հասնել լավ աշխատանքի, այլև մուտք ապահովել բոլոր CPython և Java գրադարաններին: Նախագծի կոդ տարածվում է լիցենզավորված Apache 2.0-ի համաձայն:

Խոշոր փոփոխություններ.

  • JChar-ը աջակցվում է որպես վերադարձի տեսակ։ Համատեղելիության համար JChar-ը ժառանգում է "str"-ից և իրականացնում է անուղղակի փոխակերպում "int"-ի։ Հետևաբար, այն անցնում է պայմանագրերի ստուգումները։ Սակայն սա նշանակում է, որ այն այլևս չի համարվում թվային տեսակ Python-ում, և, հետևաբար, isinstance(c, int)-ը գնահատվում է որպես False, ինչը համապատասխանում է Java-ի տեսակների փոխակերպման կանոններին։
  • Ներկայացվել է Java տիպի Type@obj օպերատորը (@ Python-ի ներքին արտադրյալի օպերատորն է, Java-ն այն չունի):
  • Ավելացվել է Java զանգվածներ ստեղծելու նշում: Մուտքագրեք [s1][s2][s3] ֆիքսված չափի զանգվածների համար, Type[:][:][:] զանգվածների համար, որոնք հետագայում կստեղծվեն:
  • @FunctionalInterface-ը թույլ է տալիս ստեղծել Java ֆունկցիաներ Python օբյեկտներից __call__-ի միջոցով։
  • Հեռացվել է հնացած JIterator-ը, JException-ի օգտագործումը որպես գործարան, get_default_jvm_path և jpype.reflect:
  • Լռելյայնորեն, Java տողերը չեն փոխարկվում Python տողերի:
  • Python-ը հնացել է «__int__»-ը, այնպես որ անուղղակի հեռարձակումները ամբողջ թվերի և լողացող կետերի տիպերի միջև կառաջացնեն TypeError:
  • JException-ի օգտագործումը հնացել է: Բոլոր բացառությունները որսալու կամ ստուգելու համար, որ օբյեկտը Java բացառության տեսակ է, օգտագործեք java.lang.Throwable-ը:
  • Java-ի բացառությունների կասկադային պատճառներն այժմ արտացոլված են Python stack շրջանակներում:
  • JString-ը հնացել է: Java տող ստեղծելու կամ ստուգելու համար, որ օբյեկտը Java string է, օգտագործեք java.lang.String:
  • Repr մեթոդները թարմացվել են Java դասերում։
  • java.util.List-ը կատարում է պայմանագրեր collections.abc.Sequence և collections.abc.MutableSequence-ի համար:
  • java.util.Collection-ը կատարում է պայմանագիրը collections.abc.Collection-ի համար:
  • Java-ի դասերը մասնավոր են և Python-ից երկարացնելու դեպքում կուղարկեն TypeError:
  • Զգուշորեն կարգավորեք Control-C-ը: Նախորդ տարբերակները խափանում են, երբ Java-ն մշակում է Control-C ազդանշան, քանի որ դրանք կդադարեցնեն Java-ն զանգի ընթացքում: JPype-ն այժմ Java-ից վերադառնալիս կներկայացնի InterruptedException: Control-C-ն չի դուրս մղի Java-ի մեծ ընթացակարգերը, ինչպես ներկայումս իրականացվում է, քանի որ Java-ն դրա համար հատուկ գործիք չունի:

Այնուհետև ստեղծվեց ուղղիչ թողարկում 1.0.1, որն ավելացրեց փոփոխություններ Python 3.8.4 թողարկման հետ կապված խնդիրների լուծման համար: Python-ը փոխել է «__setattr__»-ի «օբյեկտի» և «տիպի» օգտագործման տրամաբանությունը՝ թույլ չտալով այն օգտագործել ածանցյալ դասերը փոփոխելու համար: Սխալների ստուգումը նույնպես պատվիրակվել է «__setattr__» մեթոդից, ուստի համապատասխանության որոշ ստուգումների բացառությունների տեսակները պետք է համապատասխանաբար թարմացվեն:

Source: opennet.ru

Գնեք հուսալի հոստինգ DDoS պաշտպանությամբ կայքերի, VPS VDS սերվերների համար 🔥 Գնեք հուսալի կայքերի հոսթինգ՝ DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster