java - جافا بيثون التكامل




4 Answers

بصراحة معظم الطرق لتشغيل بايثون بطريقة ما مباشرة من داخل JVM لا تعمل . إما أنها غير متوافقة تمامًا (يمكن أن يستخدم الإصدار الجديد من مكتبة الطرف الثالث الخاص بك ميزات python 2.6 ولن يعمل مع Jython 2.5) أو hacky (سوف ينكسر مع stacktrace JVM غير الخبيث الذي لا يؤدي حلا حقاً).

قد تستخدم الطريقة المفضلة لدمج الاثنين RPC . لا يعد XML RPC اختيارًا سيئًا هنا ، إذا كان لديك كميات معتدلة من البيانات. إنها مدعومة بشكل جيد - Python لها في مكتبتها القياسية. مكتبات جافا هي أيضا من السهل العثور عليها. الآن اعتمادًا على الإعداد الخاص بك ، إما أن يكون جزء Java أو Python خادمًا يقبل الاتصال من لغة أخرى.

وهناك وسيلة أقل شعبية لكنها جديرة بالنظر في طريقة بديلة للقيام بـ RPCs وهي Google protobuffers ، التي لديها 2/3 من الدعم ل rpc لطيفة . تحتاج فقط إلى توفير طبقة النقل الخاصة بك. ليس ذلك العمل الكثير وراحة الكتابة معقولة.

خيار آخر هو كتابة غلاف C حول تلك الأجزاء من وظائف Python التي تحتاج إلى كشفها إلى Java واستخدامها عبر المكونات الإضافية الأصلية لـ JVM. يمكنك تخفيف الألم عن طريق الذهاب مع SWIG SWIG .

أساسا في حالتك يعمل مثل هذا:

  1. قم بإنشاء واجهة SWIG لجميع مكالمات الأسلوب من Java إلى C ++.
  2. أنشئ رمز C / C ++ الذي سيتلقى مكالماتك ويتصل بمترجم python داخليًا باستخدام المعلمات الصحيحة.
  3. يمكنك تحويل الاستجابة التي تحصل عليها من python وإرسالها عبر swig مرة أخرى إلى شفرة جافا.

هذا الحل معقد نوعًا ما ، وهو جزء من المبالغة في معظم الحالات. لا يزال الأمر يستحق القيام به إذا كنت (لسبب ما) لا تستطيع تحمل تكاليف RPCs. RPC لا يزال سيكون خياري المفضل ، على الرغم من.

java python integration

لدي تطبيق جافا يحتاج إلى الدمج مع مكتبة طرف ثالث. المكتبة مكتوبة في بايثون ، وليس لدي أي رأي حول ذلك. أحاول معرفة أفضل طريقة للتكامل معها. أحاول الخروج من JEPP (Java Python Embedded) - هل استخدم أحد ذلك من قبل؟ فكرتي الأخرى هي استخدام JNI للتواصل مع الارتباطات C لـ Python.

أي أفكار حول أفضل طريقة للقيام بذلك سيكون موضع تقدير. شكر.




يمكنك استخدام خدمة الرسائل مثل ActiveMQ . لديها دعم Python وجافا. بهذه الطريقة ، يمكنك ترك ارتباطات JNI أو C المعقدة كما هي والتعامل فقط مع ما أعتبره واجهة بسيطة. علاوة على ذلك ، عندما يتم تحديث المكتبة ، لن تحتاج إلى تغيير الكثير ، إن وجد.










Related