سؤال

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

وبصرف النظر عن مشكلة واضحة من بدءا تماما من الصفر ما هي الطرق الممكنة أن هذه الشركة يمكن أن تنجز خطوة ناجحة من التنمية على المشروع .NET C# في جافا ؟

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

المحلول

هنا هي الأشياء في الاعتبار:

  • هل هذا هو مشروعك الكبير ؟ إذا كان الجواب نعم ، في محاولة لعصا مع C#
  • هذه متوسطة الحجم المشروع مع المكونات ؟ إذا لا, في محاولة لعصا مع C#
  • هذا مشروع صغير من المفترض أن تنشر على ويندوز فقط ؟ إذا كان الجواب نعم ، في محاولة لعصا مع C#
  • هذا القديم شفرة المصدر ؟ إذا كان الجواب نعم ، في محاولة لعصا مع C#
  • هل تستخدم نظام التشغيل ويندوز محددة واجهات برمجة التطبيقات ؟ إذا كان الجواب نعم ، في محاولة لعصا مع C#
  • هل استخدام أي طرف ثالث واجهات برمجة التطبيقات بدون جافا نظيره?إذا كان الجواب نعم ، في محاولة لعصا مع C#
  • هل تستخدم .صافي في "العميق"(ربط البيانات المستخدم يتحكم الخ) ؟ إذا كان الجواب نعم ، في محاولة لعصا مع C#
  • الهجرة الوقت هو أكثر قبولا من الحصول على الجديدة/تحويل C# شباب ؟ إذا لا, في محاولة لعصا مع C#
  • هل تعتقد أن المستخدمين لن تكون تقبلا من التغييرات ، إذا كنت تستخدم جافا إطار تغيير العرض ؟ إذا كان الجواب نعم ، في محاولة لعصا مع C#
  • تحقق من الإعلانات التجارية

إذا كنت ترغب في تحويل:

  • تذهب لكل عنصر
  • تذهب لكل طبقة
  • لديك الكثير من الاختبارات
  • تحقق مما إذا كانت هناك أدوات مساعدة (مهما كانت صغيرة قد تكون مساعدة) مع الهجرة

نصائح أخرى

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

أنا اشترك في وجهة نظر جويل ذلك إعادة الكتابة الكلية هي دائما خطأ. وبعد الملصقات الأخرى هي صواب: C # و Java متشابهة بما فيه الكفاية أن أي مطور Java المختص يجب أن يكون قادرا على كفاءة في C # في غضون أسابيع أو أشهر. هذا لا يعني أنهم سيكونون خبراء. يستغرق ذلك وقتا أطول ولكن طالما أن لديك بعض المطورين C # الذين يمكنهم توجيه العملية ثم يجب أن تكون على ما يرام.

من الصعب التعليق على ما إذا كانت هذه الانتقال فكرة جيدة أو سيئة دون معرفة تفاصيل طلبك: حجم ونوع التطبيق والصناعة وما إلى ذلك.

سأكون متاحا للغاية حول هذا التبديل لأنه، في رأيي المتواضع، C # هي الآن لغة حديثة أكثر من جافا وأنا أقول لك هذا لك كشخص كان مطورا جافا OFR منذ أكثر من عقد (منذ 1.0.2 / 1.1 يوما).

هذا لا يعني أن جافا سيئة. ليست كذلك. تحتوي Sun على سحابة معلقة فوقها وأظهرت عدم الرغبة أو عدم القدرة على قيادة النظام الأساسي للأمام في السنوات الأخيرة.

بغض النظر عن اللغات المعنية، فإن إدارة هذه الشركة تبدو مجنونة. لأي شيء آخر غير طلب تافه، كيف يمكن أن يكون من المعقول اقتصاديا إعادة كتابة قاعدة رمز بأكمله من الصفر بدلا من توظيف شخص واحد مع بعض المهارات في اللغة الصحيحة؟ هل هذا عمل مع هذه المشكلة المعروفة: الكثير من النقد الغيار؟!

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

قبل الانتهاء من تحويل مشروع .NET إلى جافا، ستعمل جميع مطوري Java الذين كانوا جزءا من مشروع التحويل C #. لذلك، فأنت كذلك، فأنت لا تحتاج بعد الآن إلى تحويله إلى Java (ويمكنك التخلص من جميع كود Java الذي تم إنتاجه في التحويل)، لأن لديك الآن فريق تطوير يمكنه القيام بكل من Java و C #. تم حل المشكلة. :د

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

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

هل لديك المزيد من تطبيقات .NET أو أكثر من تطبيقات Java في الإنتاج. إذا كان لديك بالفعل استثمار كبير في خوادم .NET وتطبيقات، فلماذا لا تطلب من المتطوعين بين مطوري Java الانتقال إلى .NET؟ اللغة والبناء متشابهة جدا، وبالتالي فإن الجزء الصعب سوف يتعلم الإطار وما لم يقضون طوال الوقت في تطوير واجهة المستخدم حتى تعلم الإطار ليس بالأمر الصعب.

في مكتبنا لدينا عدد من المطورين الجيدين للغاية الذين يتحركون ذهابا وإيابا بين جافا و .ينت حسب الحاجة.

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

كان لدي نجاح عندما أظهرت لهم الجداول الزمنية، وعائد الاستثمار، والعمل المعني، والمال المعنية، إلخ.

حتى الآن القادمة إلى النقطة الفعلية، أعتقد أن مطوري Java سيكونون قادرين على دعم C # إلا إذا كان لديهم بعض الكتلة الذهنية الأساسية ضد Microsoft Technolgies.

القي نظرة على net2java., ، التي تصل إلى المساعدة في تحويل التعليمات البرمجية الخاصة بك من جافا. أشك في أنه سيكون مثاليا، لكن طريقة واحدة لإزالة الكثير من الكثافة من المهمة، مما يتركك مع حلبة تحكم مكالمات الإطار غير المتوافقة وميزات اللغة للحديد.

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

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

1) ikvm (http://www.ikvm.net/) والتي تسمح لك بتشغيل رمز Java في وقت تشغيل .NET. يتيح ذلك رمز Java لاستدعاء رمز C # والعكس صحيح. ثم يمكنك تجميد تطوير Code C #، وإضافة ببطء الوظيفة المنقحة إلى جزء Java مع الحفاظ على تطبيق وظيفي.

2) MainSoft (http://dev.mainsoft.com/default.aspx؟tabid=130.) والتي تتيح لك ترجمة .NET-bytecode إلى جافا bytecode. لديهم نسخة دخول مجانية. ليس لدي أي خبرة مع المنتج، لكنهم يعلنون بشدة على منصتنا التي لديها فقط جافا المتاحة.

أنا لست خبير جافا، ولكن من تجربتي تعمل مع كود جافا أثناء كونها مروحة C #، فيما يلي بعض الصداع المحتمل:

  • يتم تنفيذ Generics بشكل مختلف في Java و C #.
  • سلوكيات الملاكمة / Unboxing مختلفة بين Java و C #
  • اتفاقية تسمية الفئة Java + الكثير C # الناتج
  • التعامل مع السلسلة (أي مخاوف Unicode / ASCII) يمكن أن تكون مشكلة اعتمادا على جودة رمز Java / C # التي يجري استطافتها.

شخصيا، لا أعتقد الكتابة من الصفر فكرة سيئة على الإطلاق. منذ أن لديك بالفعل بنية عمل.

أنا مندهش إلى حد ما اقترح حتى فكرة رفض الترحيل.

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

أنا شخصيا لا تهتم حتى يطلب من بدء الترحيل. عند هذه النقطة أود أن أقول للمدير أنني رجل. NET Guy ولن يتحول إلى تقنية أخرى لمجرد أنهم قرروا.

بالنسبة إلى الجانب الفني، فإنه ليس بناء جملة اللغة الذي يختلف ولكن المكتبات بدلا من ذلك وميزاتها. بالطبع، إذا كانت جميع أحدث أجراس وصفارات .NET 3.5 قيد الاستخدام على نطاق واسع، فإن اختلاف اللغة سوف يوفر لك تحديا حقيقيا.

هذا بالتأكيد طريقة مضحكة، فقط قررت ترحيل التطبيقات من .NET إلى جافا. شخص ما ليس لديه فكرة عن المتاعب المعنية ...

ربما يمكنك استخدام JNI4Net - جسر OpenSource ب أو قائمة خيارات أخرى أنا أعرف.

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