کامپایلر گنو برای جاوا

کامپایلر گنو برای جاوا (به انگلیسی: GNU) (GCJ) یک کامپایلر رایگان برای زبان برنامه‌نویسی جاوا است. برای بیش از ده سال بخشی از مجموعه کامپایلر گنو بود اما از سال ۲۰۱۷ دیگر حفظ نخواهد شد و بخشی از انتشارات آینده نخواهد بود.[۳][۴]

GNU Compiler for Java
توسعه‌دهنده(ها)The GNU Project
انتشار ابتدایی۶ سپتامبر ۱۹۹۸؛ ۲۵ سال پیش (۱۹۹۸-06}})[۱]
انتشار نهایی
6.5[۲]
۲۶ اکتبر ۲۰۱۸؛ ۵ سال پیش (۲۰۱۸-26}})
سیستم‌عاملUnix-like
گونهCompiler
پروانهGNU GPL
وبگاه

GCJ کد منبع جاوا را به بایت کد ماشین مجازی جاوا یا به کد ماشین برای تعدادی از معماری‌های پردازنده کامپایل می‌کند. همچنین می‌تواند فایل‌های کلاس و JARهای کامل را که حاوی بایت کد هستند به کد ماشین کامپایل کند.[۵][۶]

تاریخچه ویرایش

منبع اصلی کتابخانه‌های زمان اجرای GCJ از پروژه GNU Classpath است، اما بین کتابخانه‌های libgcj تفاوت کدی وجود دارد. GCJ 4.3 از کامپایلر Eclipse برای جاوا به عنوان یک جلو-عقب (به انگلیسی: back-end) استفاده می‌کند.[۷]

در سال ۲۰۰۷، برای پیاده‌سازی پشتیبانی برای دو API گرافیکی در جاوا Classpath GNU: AWT و Swing، کارهای زیادی انجام شد. پشتیبانی نرم‌افزاری برای AWT هنوز در حال توسعه است. "زمانی که پشتیبانی از AWT کار بکند، پشتیبانی از Swing می‌تواند مورد توجه قرار گیرد. حداقل یک پیاده سازی نرم افزاری جزئی رایگان از Swing وجود دارد که ممکن است قابل استفاده باشد. ".[۸] GNU CLASSPATH حتی به وضعیت جاوا ۱٫۲ هم تکمیل نشد و اکنون به نظر می‌رسد به‌طور کامل رها شده‌است.

از سال ۲۰۱۵، هیچ پیشرفت جدیدی از GCJ اعلام نشده و محصول در حالت نگهداری بود.[۹] GCJ در تاریخ ۳۰ سپتامبر ۲۰۱۶ از تنه GCC حذف شد.[۱۰][۱۱] اطلاعیه حذف آن همزمان با انتشار GCC 7.1، که شامل آن نیست، داده شد.[۱۲] GCJ به عنوان بخشی از GCC 6 باقی مانده‌است.

کارایی ویرایش

تابع کامپایل در GCJ هنگام کامپایل کد جاوا به کد ماشین باید زمان شروع سریعتری نسبت به بایت کد معادل اجرا شده در JVM داشته باشد[۱۳]

رابط بومی کامپایل شده (CNI) ویرایش

رابط بومی کامپایل شده (به انگلیسی: Compiled Native Interface) ، که قبلا "رابط بومی سیگنوس (به انگلیسی: Cygnus Native Interface)" نام گذاری شده بود، یک فریم ورک نرم‌افزاری (به انگلیسی: software framework) برای GCJ است که اجازه می‌دهد تا کد جاوا برنامه‌های بومی و کتابخامه‌های زبان ++C را فراخوانی کند یا توسط آنها فراخوانده شود. برای پاسخ، می‌شود و به نام‌های، برنامه‌های بومی (برنامه‌های خاص به یک پلت فرم سخت‌افزار و سیستم عامل) و کتابخانه‌ها در C ++ نوشته شده‌است.

CNI بسیار شبیه فریم ورک JNI (رابط بومی جاوا) است که به عنوان یک استاندارد با ماشین‌های مجازی جاوا می‌آید.

مقایسه استفاده از زبان ویرایش

نویسندگان CNI مدعی مزایای زیادی نسبت به JNI هستند:[۱۴]

CNI به کلاسهای Java بستگی دارد که به عنوان کلاس‌های C ++ ظاهر می‌شوند. به عنوان مثال،[۱۵] با توجه به کلاس جاوا زیر،

public class Int
{
   public int i;
   public Int(int i) { this.i = i; }
   public static Int zero = new Int(0);
}

می‌توان از کلاس استفاده کرد:

#include <gcj/cni.h>
#include <Int>

Int *mult(Int *p, int k)
{
  if (k == 0)
    return Int::zero;  // Static member access.
  return new Int(p->i * k);
}

جستارهای وابسته ویرایش

  • مترجم گنو برای جاوا (GIJ)
  • Excelsior JET (کامپایلر کد جاوا اسکریپتی Excelsior)
  • IcedTea
  • کافه
  • SableVM
  • a M آپاچی هماهنگی
  • جیکس
  • کامپایلر مجازی ماشین مجازی Java
  • پیاده‌سازی جاوا رایگان
  • Kotlin - Kotlin / Native یک فن آوری برای کامپایل کردن کوتلین به باینری‌های بومی است که بدون JVM اجرا می‌شوند. این شامل پسزمینه مبتنی بر LLVM برای کامپایلر کوتلین و اجرای بومی کتابخانه زمان اجرا Kotlin است.

منابع ویرایش

  1. Anthony Green, Cygnus Solutions. "GCJ announcement".
  2. "GCC Releases – GNU Project – Free Software Foundation (FSF)".
  3. "Archived copy". Archived from the original on 2007-05-09. Retrieved 2010-04-22.{{cite web}}: نگهداری یادکرد:عنوان آرشیو به جای عنوان (link)
  4. Campbell, Bill (2013). Introduction to Compiler Construction in a Java World. CRC Press Taylor & Francis Group. ISBN 978-1-4398-6088-5. Retrieved 2014-02-06.
  5. http://www.linuxjournal.com/article/4860
  6. http://freecode.com/projects/gcj
  7. "gcj to use Eclipse compiler as a front end". 2007-01-08. Archived from the original on 2007-05-09. Retrieved 2007-05-20.
  8. پرسش و پاسخ GCJ
  9. GCC به نظر می‌رسد برای غیرفعال کردن جاوا، جایگزینی با برو یا ADA
  10. Andrew Haley (September 30, 2016). "[gcc] Revision 240661".
  11. Tromey, Tom (October 2, 2016). "The Deletion of gcj". The Cliffs of Inanity. Retrieved October 3, 2016.
  12. "GCC 7 Release Series: Changes, New Features, and Fixes". Retrieved May 9, 2017.
  13. «GCJ: کامپایلر جاوا استاتیک جاوا» (PDF). بایگانی‌شده از اصلی (PDF) در ۷ ژوئن ۲۰۱۱. دریافت‌شده در ۳۰ ژانویه ۲۰۱۹.
  14. پرسش و پاسخ GCJ - پروژه گنو - بنیاد نرمافزار آزاد (FSF)
  15. مثال: از https://gcc.gnu.org/onlinedocs/gcj/Objects-and-Classes.html#Objects- و- Classes بایگانی‌شده در ۲۰ اکتبر ۲۰۱۶ توسط Wayback Machine

پیوند به بیرون ویرایش