إصدار JPype 0.7.2 ، مكتبات للوصول إلى فئات Java من Python

متاح الافراج عن طبقة جى باي 0.7.2، والذي يسمح لتطبيقات Python بالوصول الكامل إلى مكتبات الفئات بلغة Java. باستخدام JPype من Python، يمكنك استخدام مكتبات خاصة بـ Java لإنشاء تطبيقات هجينة تجمع بين كود Java وPython. على عكس Jython، لا يتم تحقيق التكامل مع Java من خلال إنشاء متغير Python لـ JVM، ولكن من خلال التفاعل على مستوى كلا الجهازين الظاهريين باستخدام الذاكرة المشتركة. لا يسمح النهج المقترح بتحقيق أداء جيد فحسب، بل يوفر أيضًا إمكانية الوصول إلى جميع مكتبات CPython وJava. رمز المشروع وزعت من خلال مرخص بموجب Apache 2.0.

التغييرات الرئيسية:

  • توفر الاستثناءات التي تم طرحها في كود C++ وJava الآن مكدس استثناءات عند حدوث استثناء في كود Python. وبالتالي، للحصول على معلومات حول مكدس الاستثناءات، لم تعد بحاجة إلى استدعاء stacktrace().
  • تمت مضاعفة سرعة إرجاع المكالمة ثلاث مرات.
  • زيادة كبيرة (من حيث الحجم) في سرعة الإرسال
    مخازن مؤقتة numpy من صفائف متعددة الأبعاد. تقوم البدائيات متعددة الأبعاد بتمرير نسخ للقراءة فقط تم إنشاؤها داخل JVM بتخطيط C متجاور.

  • تم استبدال جميع الأجزاء الداخلية المكشوفة بتطبيقات CPython، والرموز __javaclass__ و__javavalue__ و__javaproxy__
    تم الحذف. تمت إضافة فتحة Java مخصصة إلى جميع أنواع CPython التي ترث من أنواع فئات jpype. تم نقل كافة الجداول الخاصة إلى CPython. يجب أن ترث أنواع Java الآن من فئة التعريف JClass، التي تستخدم فتحات الكتابة. لا يُسمح باستخدام Mixins لفئات Python الأساسية. الأنواع هي Object وProxy وException وNumber وArray وترث مباشرة من تطبيقات CPython الداخلية.

  • تحسين التتبع ومعالجة الاستثناءات.
  • تتم الآن معالجة شرائح المصفوفة كطرق عرض تدعم إعادة الكتابة إلى الأصل، مثل مصفوفة numpy. بالنسبة لتقطيع المصفوفات، يتم توفير الدعم لإعداد واسترجاع القيم في خطوات (شريحة (بدء، إيقاف، خطوة)).
  • تدعم المصفوفات الآن "__reversed__".
  • تدعم صفائف Java الآن واجهة برمجة تطبيقات Memoryview وتزيل التبعية على numpy لتمرير محتويات المخزن المؤقت.
  • لم يعد Numpy تبعية (إضافية) وأصبح نقل الذاكرة إلى numpy متاحًا دون التحويل البرمجي بدعم numpy.
  • تم تصميم JInterface كفئة تعريفية. استخدم isinstance(cls, JInterface) للتحقق من الواجهات.
  • تمت إضافة نطاقات TLD المفقودة "mil" و"net" و"edu" إلى الواردات الافتراضية.
  • تحسين رسائل الخطأ لـ UnsupportedClassVersion أثناء بدء التشغيل.
  • يقوم java.util.Map الآن بطرح خطأ KeyError إذا لم يتم العثور على العنصر. القيم الفارغة لا تزال تُرجع لا شيء كما هو متوقع. استخدم get() إذا كنت تريد التعامل مع المفاتيح الفارغة على أنها لا شيء.
  • تمت إزالة java.util.Collection لأنه يزيد التحميل بشكل غريب بين Remove(Object) وremove(int) في القوائم. استخدم طريقة Java Remove() للوصول إلى سلوك Java الأصلي، ولكن يوصى بشدة باستخدام نوع النوع للتحكم في التحميل الزائد.
  • يمكن الآن اكتشاف java.lang.IndexOutOfBoundsException باستخدام فئة الاستثناء IndexError عند الوصول إلى عناصر java.util.List.

المصدر: opennet.ru

إضافة تعليق