سؤال

هل لدى أي شخص حل جيد لدمج بعض أكواد C# في تطبيق جافا؟

الكود صغير، لذا يمكنني إعادة كتابته بلغة جافا، لكنني أفضل إعادة استخدام الكود إن أمكن.لا تكرر نفسك وما إلى ذلك.

أعلم أيضًا أنه يمكنني الكشف عن لغة C# كخدمة ويب أو أي شيء آخر، ولكنها تحتوي على بعض عناصر الأمان/التشفير، لذا أفضل أن أبقيها متكاملة بإحكام إن أمكن.


يحرر:سيكون على تطبيق يستند إلى الخادم، لذا فإن "تنزيل" وقت تشغيل آخر ليس له أي صلة.

هل كانت مفيدة؟

المحلول

يوجد مترجم IL إلى Java Bytecode الجراد والتي قد تكون مفيدة لك.لم أجربه أبدًا بالرغم من ذلك.

سألقي نظرة على إعادة كتابة التعليمات البرمجية الخاصة بك في Java بالرغم من ذلك

يحرر:لاحظ أن Grasshopper يبدو أنه لم يعد متاحًا.

نصائح أخرى

يمكنك استخدام Java Native Interface لاستدعاء كود C# الخاص بك والذي تم تجميعه في ملف DLL.

إذا كانت كمية صغيرة من C#، فسيكون من الأسهل بكثير نقلها إلى Java.إذا كان الأمر كثيرًا، فقد تكون هذه طريقة جيدة للقيام بذلك.

فيما يلي نظرة عامة عالية المستوى عليه:

http://en.wikipedia.org/wiki/Java_Native_Interface

سيكون خيارك الآخر هو إنشاء تجميع COM من كود C# واستخدام J-Interop لاستدعائه.

http://sourceforge.net/projects/j-interop/

أنا مؤلف jni4net, ، جسر داخلي مفتوح المصدر بين JVM وCLR.إنه مبني على JNI و PInvoc.لا حاجة إلى كود C/C++.آمل أن تساعدك.

إذا كان قصيرًا، فأعتقد أنه من الأفضل إعادة كتابة الكود بلغة Java.يعد تنزيل وقت تشغيل واحد بحجم 50 ميجابايت أمرًا سيئًا بدرجة كافية.

كنا JNBridge لهذا، وعملت بشكل رائع.فهو يتعامل مع Java->.NET والعكس، كل ذلك داخل بروك.

إذا كنت لا ترغب في إعادة كتابته على أنه ملف اتصال interprocess واختر واحدًا مما يلي:

  • الأنابيب المسماة
  • مآخذ
  • صابون

سأعيد كتابتها إذا لم يكن هناك الكثير من المتاعب.ستعمل خدمة الويب، ولكن يبدو أن ذلك سيتطلب قدرًا كبيرًا من النفقات العامة لمجرد إعادة استخدام القليل من التعليمات البرمجية.

http://www.infoq.com/articles/in-process-Java-net-integration يقترح تشغيل CLR وJVM في نفس مساحة العملية وتمرير المكالمات ذهابًا وإيابًا.يبدو فعالا جدا.سأحاول تجربته ودمجه فيه جيس إذا كان يعمل بشكل جيد.

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

إذا كان تطبيق C# يحتاج إلى استدعاء Java، فقم بتجميع Java main خاص يأخذ وسيطات سطر الأوامر المناسبة ويعيد إخراج النص.

إنها أقدم وأبسط طريقة.

يمكنك استدعاء فئات C# الخاصة بك (التي تم تجميعها في ملف dll) عبر مكتبة التوصيل، وتتوفر مكتبات مختلفة، كل واحدة لها خصائصها. JNBridge إنشاء فئات الوكيل التي يمكنك الاتصال بها لإدارة التعليمات البرمجية في فئات جافا. JCOBridge تتيح لك تحميل فئات C# واستخدامها من Java باستخدام آلية الاستدعاء أيضًا javonet تتيح لك استيراد فئات جافا واستدعاء رمز جافا باستخدام آلية الاستدعاء.
جميع الحلول التي تم استكشافها هي حلول تجارية تتيح لك استدعاء كود جافا من .NET والعكس مع تكامل واجهة المستخدم الرسومية ووسائل الراحة الأخرى.

روابط:
com.jnbridge مخطط ترخيص Java-.NET Bridge للمطور والنشر مع نسخة تجريبية مجانية مدتها 30 يومًا
jcobridge مخطط ترخيص Java-.NET للمطور والنشر مع نسخة تجريبية غير محدودة
javonet مخطط ترخيص java-.NET Bridge للأبحاث والمهنية مع نسخة تجريبية غير محدودة لمدة 30 يومًا بعد التسجيل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top