سؤال

نحن عالقون مع Java2SE v1.4 حتى نهاية عام 2010.هذا هو حقا سيئة, ولكن نحن لا يمكن أن تساعد في ذلك.ما الخيارات التي لدينا لاستخدام بعض الميزات الجديدة بالفعل الآن ؟ أستطيع أن أفكر في عدة طرق مثل

  • تغيير بايت كود مثلاباستخدام Retrotranslator أو Retroweaver.

  • backport المكتبات مثلا المتزامنة Backport, ولكن هذا لا يساعد على الأدوية.

  • محاكاة جافا 5 ميزات مثلفحص مجموعات Varargs مع مساعد الطرق ، وما إلى ذلك.

  • تغيير التعليمات البرمجية المصدر من قبل precompilation ، وتجريد جميع 1.5 الاشياء قبل النهائي تجميع مثلباستخدام Declawer يمكن أن تفعل هذا.

أنا مهتم أكثر في تجربة إيجابية للغاية في بيئات الإنتاج باستخدام يبلوغيتش و "ريال مدريد" الاشياء.

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

المحلول

شكرا على إجاباتك.هنا هو ملخص كل والإجابات و بحثي الخاص.

تغيير بايت كود:على Retros
يتم ذلك عن طريق "الرجعية"-أدوات: Retrotranslator, Retroweaver و JBossRetro.Retrotranslator يبدو أن الأكثر نضجا ونشط منهم أداة.هذه الأدوات مسح جميع الطبقات وتغيير لإزالة جافا بايت كود 5 و 6 الميزات.العديد من Java5 الميزات ويدعم بعض باستخدام 3rd الطرف backport المكتبات.هذا الخيار هو الأكثر شعبية هناك بعض ردود الفعل الإيجابية من المستخدمين.وأظهرت التجارب أنه يعمل من المتوقع.انظر لمحة قصيرة على developerworks.

برو:يمكنك تطوير تماما في جافا 5 ، وبناء وحدات و كل نوع من الجرار.في النهاية أنت فقط تحويل جميع دروس جافا 1.4 و حزمة أذنك.هذا يمكن القيام به بسهولة مع Retrotranslator هو مخضرم التكامل (org.codehaus.mojo:retrotranslator-maven-plugin).

Con:المحافظ بيئات لا تسمح بتغيير بايت كود يتم نشرها.نتيجة الرجعية خطوة غير مرئية إلى أي المبرمج و لا يمكن الموافقة عليها.المشكلة الثانية هي الخوف:قد يكون هناك بعض خفي مشكلة الإنتاج و الرجعية رمز هو خطوة أخرى التي قد تكون مسؤولة عن ذلك.التطبيق خادم البائعين قد رفض مساعدة بسبب تغير بايت كود.لذلك لا أحد يريد أن يتحمل المسؤولية لاستخدامها في الإنتاج.وهذا هو بالأحرى policital من التقنية مشكلة, لذلك لا أرى أي حل.وقد حدث لنا إذا كنت تبحث عن مزيد من الخيارات :-(

تجميع Java5 جافا 1.4:jsr14
هناك غير معتمد الخيار ، javac -source 1.5 and -target jsr14 الذي يجمع Java5 المصدر أن صالح جافا 1.4 بايت كود.معظم الميزات مثل varargs أو تمديد حلقة مترجمة من قبل مترجم على أي حال.الأدوية وشروحه يتم تجريد.Enums غير معتمدة و لا أعرف عن autoboxing ، valueOf أساليب معظمهم قدم في Java5.

Con:فقط رمز بايت ترجمة, مكتبة الاستخدام هو لم يتغير.لذلك عليك أن تكون حريصا على عدم استخدام Java5 محددة واجهات برمجة التطبيقات (ولكن يمكن استخدام Backports).كذلك لديك لبناء جميع وحدات في نفس الوقت ، لأن التنمية مرة بروبابلي تريد Java5 البرمجية العامة والشرح المعلومات.بحيث يكون لديك لبناء المشروع بالكامل من الصفر جافا 1.4 الإنتاج.

تغيير المصدر إلى جافا 1.4:Declawer
كما أجاب في ذات السؤال, هناك Declawer, مترجم التمديد ، الذي يعمل الأدوية و varargs ، ولكن ليس من أجل تعزيز حلقة أو autoboxing.ولدت المصدر "هو قليلا غير تقليدي ، ولكن ليس سيئا جدا".

برو:ولدت مصدر متاح يمكن مراجعتها.في أسوأ الأحوال إصلاحات يمكن أن يتم في هذا المصدر.هناك من "السحر" ، لأن المصدر صالحة جافا.بعض الناس حتى استخدام JAD (Java decompiler) للحصول على جافا 1.4 المصدر مرة أخرى.إخراج جاد للقراءة هو للقراءة إذا كنت تجميع مع التصحيح المعلومات و لا تستخدمها الطبقات الداخلية.

Con:على غرار -target jsr14, أنت بحاجة إلى خطوة إضافية في النشر.نفس المشاكل مع المكتبات أيضا.

تغيير المصدر إلى جافا 1.4:من جهة
عدة إجابات اقترح القيام بذلك عن طريق اليد.التلقائي ، وتكرار عملية بناء هذا بالطبع غير مفيدة ، ولكن لمرة واحدة يتغير معقولة.فقط أتمتة ما هو ممكن.ربما تبدو في Antlr لإنشاء محلية أداة التحويل.

Backported المكتبات:
المشكلة هي أن Java5 أيضا السفن الجديدة المكتبات التي لا تتوفر في السن JREs ، انظر ذات السؤال.لحسن الحظ هناك العديد من backported المكتبات التي تعطيك بعض وظائف Java5, ولكن لا يمكن محاكاة اللغة الميزات, مثل الأدوية.

محاكاة Java5 الميزات في جافا 1.4 كود:
كنت أفكر في بعض الأشياء التي يمكن القيام به لجعل حياتك أسهل و لا يزال البقاء مع جافا 1.4.أهم الميزات typesafe مجموعات ، وإليك بعض الأفكار:

  • بدلا من استخدام الأدوية يمكنك إنشاء الخاصة بك typesafe حاويات مع بعض القالب.
  • إضافة typesafe مكرر (وهو ليس مكرر أي أكثر من ذلك).
  • إضافة asList الأساليب التي تسمح 1,2,...,n الحجج مجموعة منهم (لمحاكاة varargs).
  • طرق varargs (تحويل 1,...,n الحجج على المصفوفات) ، valueOf يمكن وضعها في فئة المساعد.

نصائح أخرى

المصدرية precompilation ، وتجريد جميع 1.5 الاشياء قبل النهائي تجميع و النشر.هل هناك أي أدوات والتي يمكن أن تفعل هذا ؟

نعم.انهم يسمى Retrotranslator أو Retroweaver.وبصرف النظر عن الأدوية (والتي توجد فقط من أجل مترجم الله على كل حال) لا يمكنك ببساطة "غزة 1.5 الاشياء".Enums (وربما أيضا بعض الميزات الأخرى) يجب أن يتم استبدال ما يعادل وظيفيا رمز.وهو بالضبط ما هي تلك الأدوات.

يمكنك البرمجة باستخدام ميزات JDK 1.5 واستهدف JDK 1.4 في وقت الترجمة.انظر خيارات Javac المتاحة.ومع ذلك، تستخدم معظم المكتبات الآن كود JDK 1.5، لذا ستظل عالقًا مع المكتبات القديمة.

تجدر الإشارة إلى أنه على الرغم من أن Java 1.4 كان EOL لبعض الوقت.سيكون Java 5.0 هو EOL في 8 أكتوبر 2009.إذا كان أي شخص يعدك بـ Java 5.0 بحلول عام 2010، فسأسأل لماذا؟!

لمحاكاة التعليقات التوضيحية في Java 1.4 يمكنك استخدامها http://xdoclet.sourceforge.net/xdoclet/index.html

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