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

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

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

  • یک حافظه پنهان به فراخوانی متدها اضافه شده است تا از وضوح اضافه بار جلوگیری شود، که تأثیر عملکرد وضوح متد را تا حد زیادی کاهش می دهد، به خصوص اگر همان اضافه بار چندین بار فراخوانی شود، مانند هنگام اجرای حلقه.
  • از 4 تا 100 بار، بسته به نوع داده، انتقال لیست ها، تاپل ها و بافرها به آرایه های اولیه جاوا تسریع می شود. این تبدیل از پردازش بهینه شده بافرهای درون حافظه به جای Sequence API استفاده می کند. وقتی با بافر پایتون مواجه می‌شوید، تنها عنصر اول برای تبدیل بررسی می‌شود، زیرا این بافرها همگن هستند.
  • پردازش عملیات خاموش کردن (در JPype 1.0.0 اجرا شد، اما هنگام آماده‌سازی تغییرات ثبت نشد). JPype اکنون روال خاموش کردن JVM را فراخوانی می‌کند، که تلاش می‌کند به‌خوبی از آن خارج شود. این منجر به چندین تغییر در رفتار می شود. رشته‌های غیر پس‌زمینه (تماس‌های پروکسی) اکنون می‌توانند JVM را تا پایان باز نگه دارند. تماس‌های پراکسی تا زمانی که تماس کامل شود، خاموش شدن را پردازش می‌کنند، اما یک پیام لغو دریافت می‌کنند. در صورتی که رشته‌ها استثنا را همانطور که انتظار می‌رود مدیریت کنند، اکنون فایل‌ها به درستی بسته شده و به دیسک منتقل می‌شوند. قلاب های پاکسازی منابع و نهایی کننده ها اجرا می شوند. هنگامی که نخ ها ایجاد می شوند، قلاب های AtExit فراخوانی می شوند. از طریق دیمون، هنگام استفاده از JVM از پایتون، پیوست رشته خودکار اجرا می شود. کد حشره‌دار که نمی‌تواند به درستی پاک‌سازی رشته را انجام دهد، احتمالاً هنگام اجرای خاموش شدن معلق می‌ماند. اسناد اضافی را می توان در دفترچه راهنمای کاربر یافت.
  • wrapper برای Throwable به جای نتیجه مورد انتظار، یک wrapper برای Object دریافت کرد که منجر به تبدیل‌های عجیب و غریب از کلاس‌های Python شد.
  • اشتباهات تایپی در سیستم واردات که منجر به خطای «»jname» یافت نشد برطرف شد.
  • مطمئن شد که "^C" به درستی در KeyboardInterrupt ارتقا یافته است.
  • رفع مشکل نمادها از پایتون 3.5.3. PySlice_Unpack در انتشار پچ بعدی (3.5.4) معرفی شد و نباید استفاده می شد.
  • یک اشکال با numpy.linalg.inv که منجر به خرابی شد، رفع شد. این مشکل در ارتباط رشته ای بین JVM و برخی از طعم های ناخوشایند ردیابی شده است. راه حل پیشنهادی فراخوانی numpy.linalg.inv قبل از شروع JVM است.

منبع: opennet.ru

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