ترجمة جافا بايت كود في تمثيلات أخرى ولغات البرمجة

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

سؤال

وأنا أبحث عن سبل / أدوات / مشاريع لترجمة جافا بايت كود إلى لغات البرمجة الأخرى، أو إذا تعذر ذلك، على الأقل إلى تمثيل منظم (مثل XML). ومن الناحية المثالية مفتوحة المصدر، بطبيعة الحال.

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

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

المحلول

وASM لديه المعهد شجرة التي يمكن أن تعطيك الأساس للهيكل الكامل للبايت كود. يبدو أنه من السهل جدا لاستخدام ذلك أو حتى المعهد الزوار للطباعة أن في XML أو شكل آخر. لست متأكدا ما فائدة ذلك على الرغم من.

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

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

إذا كنت تريد أن تذهب من مصدر جافا لمصدر لغة أخرى، وهذا تم القيام به من قبل، كما هو الحال في هذه <لأ href = "http://blog.melhase.net/articles/2007/02/15/automated- الترجمة من-جافا لالثعبان "يختلط =" نوفولو noreferrer "> جافا إلى بيثون تحويل . هذا هو أسهل نوعا ما كما يمكنك تحويل جافا لAST مع شيء من هذا القبيل ANTLR أو المدمج في أدوات مترجم جافا، مشروع الجائزة ، وما إلى ذلك وحتى ذلك الحين، أفترض أنك لن تحصل على كود اصطلاحي جدا في اللغة الهدف.

نصائح أخرى

BCEL (مكتبة الهندسة رمز بايت). يمكنك تطبيق واجهة الزوار، والتي يمكنك استخدامها لتوليد أي وقت مضى ما تريد (شفرة المصدر في لغة أخرى، وهي مخصصة AST، أكس، ما من أي وقت مضى).

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

وكذلك

وأنا منزوع الدسم لفترة وجيزة وثائق المشروع "ASM" التي ذكرتها. يبدو أنه يعرف عدة فئات vistior. يجب أن تكون قادرا على استخدام تلك التي تفعل ما تريد أيضا.

إذا كنت لم تكن مألوفة مع نمط زائر، وتحقق من وصف هنا . أيضا، إذا كنت لم أقرأ حتى الآن، و" عصابة الأربعة "الكتاب عبارة عن قراءة جيدة.

ويبدو أنك تبحث عن مترجم الصليب. وأنا أعلم من المشروع xmlvm لكن لم تستخدمها. ربما هذا يناسب احتياجاتك.

هل يمكن أن تحاول gcj لتحويل رمز بايت في التعليمات البرمجية الأصلية.

إذا كنت تريد تحويلها إلى لغات مثل ربما الثعبان / رائع / روبي تفكر في الكتابة في تلك اللغات مباشرة على JVM (وأنا أدرك هذا ليس <م> بالضبط ما كنت تبحث عن).

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

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

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