سؤال

سألت دائما نفسي إذا كان من الممكن جعل جافا لتحويل C ++.

ربما أداة تقوم بتحويل بناء جملة Java إلى بناء جملة C ++؟

أنا أدرك أن اللغات تختلف، ولكن أشياء بسيطة مثل الحلقات حيث تطابق الدلالات 1 إلى 1.

هل هناك مثل هذه الأداة؟ أم أنه من الممكن صنع واحد؟

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

المحلول

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

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

أيضا جافا لديه كائن مشترك Supertype. C ++ لا.

ستكون الجنراء إلى القوالب على سبيل المثال لا يمكن أن أتصور.

نصائح أخرى

ال يتم كتابة GTMERFOX HTML5 المحلل في جافا وتحويلها إلى C ++. وبعد لكنني أعتقد أن المحول يستخدم هناك محددة للغاية لهذا المشروع. ومن المثير للاهتمام، اتضح أن محلل C ++ الناتج كانت أسرع من المحلل المحلل القديم مكتوب في C ++.

أنا أيضا أكتب محول كجزء من قاعدة بيانات H2, ، تحت SRC / Tools / Org / H2 / Java. تتمثل الفكرة في السماح بتحويل مجموعة فرعية من قاعدة بيانات H2 إلى C ++، لذلك هذا ليس أيضا ترجمة عامة.

وهناك مشروع مفتوح المصدر J2C..

لذلك هناك طرق لتحويل جافا إلى C ++. ولكن لا تتوقع أن يدعم المترجم جميع الميزات، ولا تتوقع أن يكون التعليمات البرمجية الناتجة أسرع من جافا JVM جيدة.

هو ممكن، لا شك، لكنه لن يكون بسيطا جدا. سيكون مترجم Java الذي يولد C ++.

إذا كنت ترغب في القيام بذلك من نقطة الصفر، فسيكون من الصعب للغاية، عليك أن تفعل كل العمل Javac و JVM القيام به بالنسبة لك (مثل مجموعة القمامة).

بالمناسبة. لدى Google جافا إلى مترجم جافا سكريبت (مدرج في غوت)

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

من الغريب كيف يكون هناك C ++ إلى محولات Java، ولكن فقط 1 Java لتحويل C ++.

كما قال ذلك من الصعب تحويل جافا إلى C ++ ولكن يمكننا أن يكون لدينا تطبيق أو أداة تقوم بإنشاء رمز في رمز Java and equivalnet C ++.

أعرف أحد تطبيقات واحدة يقوم بإنشاء رمز في C ++ / Java / C # نظرا للنموذج الذي لديه طريقته الخاصة ل Deifine IT.

هذه الأداة تنتمي إلى CA والاسم هو CA Plex. البحث على www.ca.com.

هناك برامج هناك تدعي أنهم قادرون على القيام بذلك، لكن لا شيء اكتسب شعبية كافية ليتم ذكره بشكل متكرر، لذلك سنتركهم في "محاولات". سيتطلب إجراء محول الكثير من AI المدمج في البرنامج الخاص بك. زادت الصعوبة عشرة أضعاف عندما تشارك التأرجح لأن GTK / WXWIDGETS / QT / QT / WIN32 API تختلف بشكل كبير من التأرجح. ولكن من الممكن. ليس أن جودة التعليمات البرمجية ستكون رائعة، ولا تضمن لن يتعطل برنامجك بسبب فصل طرق معالجة الذاكرة، لكنه ممكن.

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

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

http://www.tangiblesoftwaresolutions.com/order/order_upgrade_instant_cplus_java_edition.htm.

يعتمد على نطاق المكان الذي سيتم فيه استخدام الكود، من منظور التعلم ربما قد يكون مثيرا للاهتمام.

لقد وجدت هذا فقط عبر جوجل كما تذكرت رؤية واحدة في الكائنات التي أنشأت رمز بناء على UML.

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

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

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

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

سيكون هناك شيء أنيق أداة، وترجم جافا إلى "C ++ باستخدام Java API" (مثل GNU GCJ CNI)، لا تزال مشكلة واحدة هي إدارة array.length (صفيف لا يتعارج) ...

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