كيفية إعادة كتابة أو تحويل كود C# في كود جافا؟

StackOverflow https://stackoverflow.com/questions/65058

  •  09-06-2019
  •  | 
  •  

سؤال

أبدأ في كتابة تطبيق عميل - خادم باستخدام .net (C#) لكل من جانب العميل والخادم.

لسوء الحظ، ترفض شركتي الدفع مقابل ترخيص Windows على صندوق الخادم، مما يعني أنني بحاجة إلى إعادة كتابة الكود الخاص بي في Java، أو الانتقال إلى طريقة Mono.

هل هناك أي طريقة جيدة لترجمة كود C# إلى Java؟لم يستخدم تطبيق الخادم أي ميزة محددة لـ .net، بل استخدم فقط أدوات متعددة اللغات مثل Spring.net وHibernate.net وlog4net.

شكرًا.

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

المحلول

أقترح بناء لمونو.ستواجه بعض المناطق الرمادية، لكن الأمر رائع بشكل عام.ومع ذلك، إذا كنت ترغب في إنشاء Java، فيمكنك التحقق من ذلك الجراد.إنه منتج تجاري، لكنه يدعي أنه قادر على ترجمة CIL (مخرجات برنامج التحويل البرمجي C#) إلى رموز Java الثانوية.

نصائح أخرى

وبغض النظر عن الحلول الممكنة، فإن الترجمات المباشرة للبرامج المكتوبة بلغة واحدة إلى لغة مختلفة تعتبر فكرة سيئة بشكل عام - خاصة إذا تمت هذه الترجمة بطريقة آلية.حتى عندما يقوم بها مبرمج "حقيقي"، فإن ترجمة تطبيق سطرًا تلو الآخر غالبًا ما تؤدي إلى نتيجة نهائية أقل من المرغوب فيها لأن كل لغة لها مصطلحاتها ونقاط القوة والضعف الخاصة بها والتي تتطلب القيام بالأشياء بطريقة مختلفة قليلاً.

بقدر ما قد يكون الأمر مؤلمًا، فمن المحتمل أن يكون من مصلحتك وأولئك الذين يتعين عليهم الحفاظ على هذا التطبيق إعادة كتابته بلغة Java إذا كان هذا ما يطلبه صاحب العمل.

أنا أعرف فقط الطريقة الأخرى. Dbo4 تم تطويره بلغة Java ويتم إنشاء إصدار C# من مصادر Java تلقائيًا.

لا توجد طريقة جيدة.توصيتي هي البدء من جديد في Java، أو كما قلت، استخدم Mono.

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

Java وC# متقاربان جدًا في بناء الجملة والدلالات.المشكلة الحقيقية هي الاختلافات الصغيرة.سوف يعضونك عندما لا تتوقع ذلك.

يعد Grasshopper حقًا الحل الأفضل في الوقت الحالي، إذا كان الترخيص مناسبًا لك (الإصدار المجاني به بعض القيود المهمة).إنه يعتمد بالكامل على Mono class libs (والتي هي في الواقع جيدة جدًا)، ولكنه يعمل على أعلى أجهزة Java VM القياسية.هذا جيد لأن أجهزة Java الافتراضية بشكل عام أسرع قليلاً وأكثر استقرارًا من Mono، حسب تجربتي.لديها نقاط ضعف أكثر من Mono عندما يتعلق الأمر بواجهات برمجة التطبيقات ذات الصلة بالنماذج/الرسومات، حيث لم يتم نقل الكثير من هذا إلى Java من Mono VM، ومع ذلك.

في الحالات التي تعمل فيها، يمكن أن تكون رائعة، رغم ذلك.يكون الأداء في بعض الأحيان أفضل من تشغيل نفس الكود على جهاز MS VM على نظام Windows.:)

أود أن أقول من وجهة نظر الصيانة إعادة كتابة الكود.سيؤدي ذلك إلى رفع التكلفة الأولية للمشروع ولكنه سيكون أقل كثافة في العمالة لاحقًا لمن ينظر إلى الكود.كما ذكرت الملصقات السابقة، فإن أي شيء آلي مثل هذا لا يمكن أن يقوم بعمل جيد مثل المبرمج "الحقيقي"، كما أن القيام بالتحويل سطرًا تلو الآخر لن يساعد كثيرًا أيضًا.لا ترغب في إنتاج تعليمات برمجية تعمل لاحقًا ولكن من الصعب الحفاظ عليها.

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