انتشار JPype 1.0، کتابخانه هایی برای دسترسی به کلاس های جاوا از پایتون

در دسترس رهاسازی لایه JPype 1.0که به برنامه‌های پایتون اجازه می‌دهد تا به طور کامل به کتابخانه‌های کلاس جاوا دسترسی داشته باشند. با استفاده از JPype، پایتون می‌تواند از کتابخانه‌های خاص جاوا بهره ببرد و برنامه‌های ترکیبی ایجاد کند که کد جاوا و پایتون را با هم ترکیب می‌کنند. برخلاف جایتون، ادغام با جاوا نه با ایجاد یک نمونه پایتون برای JVM، بلکه از طریق تعامل در سطح هر دو ماشین مجازی با استفاده از حافظه مشترک حاصل می‌شود. این رویکرد نه تنها به عملکرد خوب دست می‌یابد، بلکه دسترسی به تمام کتابخانه‌های CPython و جاوا را نیز فراهم می‌کند. کد پروژه توزیع شده توسط دارای مجوز Apache 2.0.

تغییرات اصلی:

  • JChar به عنوان یک نوع بازگشتی پشتیبانی می‌شود. برای سازگاری، JChar از "str" ​​ارث‌بری می‌کند و یک تبدیل ضمنی به "int" را پیاده‌سازی می‌کند. بنابراین، بررسی‌های قرارداد را با موفقیت پشت سر می‌گذارد. با این حال، این بدان معناست که دیگر در پایتون یک نوع عددی محسوب نمی‌شود و بنابراین isinstance(c, int) به False ارزیابی می‌شود که با قوانین تبدیل نوع جاوا سازگار است.
  • عملگری برای تبدیل نوع جاوا، Type@obj، معرفی شده است (@ عملگر پایتون برای ضرب داخلی است که در جاوا وجود ندارد).
  • نمادگذاری برای ایجاد آرایه‌های جاوا اضافه شد. برای آرایه‌های با اندازه ثابت از Type[s1][s2][s3] و برای آرایه‌هایی که بعداً ایجاد می‌شوند از Type[:][:][:] استفاده کنید.
  • @FunctionalInterface به شما امکان می‌دهد تا با استفاده از __call__، فانکتورهای جاوا را از اشیاء پایتون ایجاد کنید.
  • JIterator منسوخ شده، استفاده از JException به عنوان یک فاکتور، get_default_jvm_path و jpype.reflect حذف شدند.
  • به طور پیش‌فرض، رشته‌های جاوا به رشته‌های پایتون تبدیل نمی‌شوند.
  • پایتون از "__int__" صرف نظر کرده است، بنابراین تبدیل نوع ضمنی بین انواع صحیح و اعشاری باعث ایجاد خطای TypeError می‌شود.
  • استفاده از JException منسوخ شده است. برای گرفتن همه استثنائات یا بررسی اینکه یک شیء از نوع استثنای جاوا است، از java.lang.Throwable استفاده کنید.
  • علل آبشاری استثنائات جاوا اکنون در فریم‌های پشته پایتون منعکس می‌شوند.
  • استفاده از JString منسوخ شده است. برای ایجاد یک رشته جاوا یا بررسی اینکه یک شیء از نوع رشته جاوا است، از java.lang.String استفاده کنید.
  • متدهای Repr در کلاس‌های جاوا به‌روزرسانی شده‌اند.
  • java.util.List قراردادهای مربوط به collections.abc.Sequence و collections.abc.MutableSequence را برآورده می‌کند.
  • java.util.Collection قرارداد مربوط به collections.abc.Collection را تکمیل می‌کند.
  • کلاس‌های جاوا خصوصی (private) هستند و وقتی از پایتون ارث‌بری می‌شوند، خطای TypeError می‌دهند.
  • مدیریت Control-C اکنون دقیق است. نسخه‌های قبلی وقتی جاوا سیگنال Control-C را مدیریت می‌کرد، از کار می‌افتادند، زیرا در طول فراخوانی، جاوا را خاتمه می‌دادند. اکنون، JPype هنگام بازگشت از جاوا، یک InterruptedException ایجاد می‌کند. Control-C از رویه‌های بزرگ جاوا، همانطور که در حال حاضر پیاده‌سازی شده است، ایجاد نمی‌شود، زیرا جاوا مکانیسم خاصی برای این کار ندارد.

نسخه بعدی، ۱.۰.۱، یک اصلاحیه بود که شامل تغییراتی برای رفع مشکلات پایتون ۳.۸.۴ می‌شد. پایتون منطق استفاده از "__setattr__" را برای "object" و "type" تغییر داد و از استفاده آن برای تغییر کلاس‌های مشتق شده جلوگیری کرد. بررسی خطا نیز از متد "__setattr__" محول شده بود، بنابراین انواع استثنا در برخی از بررسی‌های سلامت باید بر این اساس به‌روزرسانی می‌شدند.

منبع: opennet.ru

اضافه کردن نظر