مُجمِّع جنو للغة جافا
| المطور(ون) | مشروع جنو |
|---|---|
| الإصدار الأولي | 6 سبتمبر 1998 [1] |
| الإصدار النهائي | 6.5 [2]
/ 26 أكتوبر 2018 |
| نظام التشغيل | شبيه يونكس |
| يكتب | المُجمِّع |
| رخصة | رخصة جنو العمومية |
| موقع إلكتروني | gcc.gnu.org |
مُجمِّع GNU لـ Java ( GCJ ) هو مُجمِّع مجاني متوقف عن العمل للغة البرمجة Java . كان جزءًا من مجموعة مُجمِّعات GNU . [3] [4]
يقوم GCJ بتجميع كود مصدر Java إلى بايت كود آلة Java الافتراضية (JVM) أو إلى كود آلة لعدد من بنيات وحدة المعالجة المركزية . يمكنه أيضًا تجميع ملفات الفئة وملفات JAR كاملة تحتوي على بايت كود إلى كود آلة. [5] [6]
تاريخ
المصدر الأصلي لمكتبات وقت تشغيل GCJ هو مشروع GNU Classpath ، ولكن هناك اختلاف في الكود بين libgcjالمكتبات. يستخدم GCJ 4.3 مُجمِّع Eclipse لـ Java كواجهة أمامية. [7]
في عام 2007، تم إنجاز الكثير من العمل لتنفيذ الدعم لواجهتي برمجة جافا الرسوميتين في GNU Classpath : AWT و Swing . لا يزال دعم البرمجيات لـ AWT قيد التطوير. "بمجرد أن يعمل دعم AWT، يمكن اعتبار دعم Swing. يوجد على الأقل تنفيذ جزئي مجاني واحد لـ Swing قد يكون قابلاً للاستخدام". [8] لم يكتمل GNU CLASSPATH أبدًا حتى حالة Java 1.2 ويبدو الآن أنه تم التخلي عنه تمامًا.
اعتبارًا من عام 2015، لم يتم الإعلان عن أي تطورات جديدة من GCJ وكان المنتج في وضع الصيانة ، مع حدوث تطوير سلسلة أدوات Java مفتوحة المصدر في الغالب داخل OpenJDK . [9] تمت إزالة GCJ من جذع GCC في 30 سبتمبر 2016. [10] [11] تم الإعلان عن إزالته مع إصدار GCC 7.1، الذي لا يحتوي عليه. [12] يظل GCJ جزءًا من GCC 6.
أداء
يجب أن تتمتع وظيفة التجميع في GCJ بوقت بدء أسرع من الكود الثنائي المكافئ الذي يتم تشغيله في JVM عند تجميع كود Java إلى كود الجهاز. [13]
واجهة أصلية مجمعة (CNI)
الواجهة الأصلية المترجمة ( CNI )، والتي كانت تسمى سابقًا "واجهة Cygnus الأصلية"، عبارة عن إطار عمل برمجي لـ GCJ يسمح لكود Java باستدعاء التطبيقات الأصلية ( البرامج الخاصة بمنصة الأجهزة ونظام التشغيل) والمكتبات المكتوبة بلغة C++ واستدعائها .
يشبه CNI إلى حد كبير إطار عمل JNI (واجهة Java الأصلية) والذي يأتي كمعيار مع العديد من الآلات الافتراضية Java .
مقارنة استخدام اللغة
يزعم مؤلفو CNI وجود مزايا مختلفة مقارنة بـ JNI: [14]
نحن نستخدم CNI لأننا نعتقد أنها حل أفضل، وخاصة لتطبيق Java الذي يعتمد على فكرة أن Java هي مجرد لغة برمجة أخرى يمكن تنفيذها باستخدام تقنيات التجميع القياسية. ونظراً لذلك، وفكرة أن اللغات التي يتم تنفيذها باستخدام Gcc يجب أن تكون متوافقة حيث يكون ذلك منطقياً، فمن الطبيعي أن تكون اتفاقية استدعاء Java مماثلة قدر الإمكان لتلك المستخدمة للغات أخرى، وخاصة C++، حيث يمكننا أن نفكر في Java باعتبارها مجموعة فرعية من C++. CNI هي مجرد مجموعة من الوظائف المساعدة والاتفاقيات المبنية على فكرة أن C++ وJava لديهما اتفاقية استدعاء وتخطيط كائنات *نفس*؛ فهما متوافقان ثنائياً. (هذا تبسيط، ولكنه قريب بما فيه الكفاية.)
تعتمد CNI على فئات Java التي تظهر كفئات C++. على سبيل المثال، [15] نظرًا لفئة Java،
public class Int { public int i ; public Int ( int i ) { this.i = i ; } public static Int zero = new Int ( 0 ) ; }
يمكنك استخدام الفصل على النحو التالي:
#تضمين <gcj/cni.h> #تضمين <Int>
Int * mult ( Int * p , int k ) { if ( k == 0 ) return Int :: zero ; // الوصول إلى العضو الثابت. return new Int ( p -> i * k ); }
انظر أيضا
- Excelsior JET (مترجم أكواد Excelsior Java الأصلي)
- شاي مثلج
- كافي
- سابل في ام
- جام في ام
- أباتشي هارموني
- نكت
- GraalVM - وظيفة الصورة الأصلية في GraalVM عبارة عن تقنية تجميع متقدمة تنتج ثنائيات قابلة للتنفيذ من ملفات الفئة.
- آلة جافا الافتراضية
- تطبيقات جافا المجانية
- Kotlin - Kotlin/Native هي تقنية لتجميع Kotlin إلى ثنائيات أصلية تعمل بدون أي JVM. وهي تتألف من واجهة خلفية تعتمد على LLVM لمترجم Kotlin وتنفيذ أصلي لمكتبة وقت تشغيل Kotlin.
مراجع
- ^ أنتوني جرين، حلول سيجنوس. "إعلان GCJ".
- ^ "إصدارات GCC - مشروع GNU".
- ^ "GCJ: The GNU Compiler for Java - GNU Project - Free Software Foundation (FSF)". مؤرشف من الأصل في 2007-05-09 . تم الاسترجاع في 2010-04-22 .
- ^ كامبل، بيل (2013). مقدمة إلى بناء المترجم في عالم جافا. مجموعة تايلور وفرانسيس للنشر. رقم ISBN 978-1-4398-6088-5. تم الاسترجاع بتاريخ 2014-02-06 .
- ^ "تجميع جافا باستخدام GCJ | مجلة لينكس".
- ^ "مُجمِّع جنو لجافا".
- ^ "gcj لاستخدام مُجمِّع Eclipse كواجهة أمامية". 2007-01-08. مؤرشف من الأصل في 2007-05-09 . تم الاسترجاع في 2007-05-20 .
- ^ الأسئلة الشائعة حول GCJ
- ^ GCC تتطلع إلى إيقاف تشغيل Java واستبداله بـ Go أو ADA
- ^ أندرو هالي (30 سبتمبر 2016). "[gcc] المراجعة 240661".
- ^ ترومي، توم (2 أكتوبر 2016). "حذف gcj". منحدرات السخافة . تم استرجاعه في 3 أكتوبر 2016 .
- ^ "سلسلة إصدارات GCC 7: التغييرات والميزات الجديدة والإصلاحات" . تم الاسترجاع في 9 مايو 2017 .
- ^ "GCJ: The GNU Static Java Compiler" (PDF) . مؤرشف من الأصل (PDF) في 2011-06-07 . تم الاسترجاع في 2009-08-02 .
- ^ الأسئلة الشائعة حول مشروع جنو – مؤسسة البرمجيات الحرة (FSF)
- ^ يأتي المثال من: https://gcc.gnu.org/onlinedocs/gcj/Objects-and-Classes.html#Objects-and-Classes محفوظ في 2016-10-20 على موقع Wayback Machine
روابط خارجية
- "الموقع الرسمي". GCC . GNU. 30 مارس 2007. مؤرشف من الأصل في 9 مايو 2007.
- "دليل المحكمة الجنائية الدولية". مؤرشف من الأصل في 22 أغسطس 2016.
- "حول CNI". دليل GCJ . مؤرشف من الأصل في 28 يوليو 2016.
- ويلارد، مارك (6 أبريل 2005). "GCJ - الماضي والحاضر والمستقبل". LWN. مؤرشف من الأصل في 2 أغسطس 2019.
