مترجم ⁦Java⁩

يأتي ⁦Elide⁩ مع مترجم ⁦Java⁩ مدمج. يدعم ⁦Java SDK⁩ حتى الإصدار 25.

يتم الكشف عن مترجم ⁦Java⁩ في ⁦Elide⁩ بطريقتين.

  1. الاستخدام كبديل مباشر — يمرر ⁦elide javac -- [OPTION...]⁩ الوسائط مباشرة إلى أداة ⁦javac⁩ المدمجة في ⁦JDK⁩.
  2. التكامل مع نظام البناء — يقوم ⁦elide build⁩ بترجمة الملفات المصدرية تلقائياً بناءً على التصريحات في ⁦elide.pkl⁩.

الاستخدام كبديل مباشر

يتم استدعاء الاستخدام كبديل مباشر عبر ⁦elide javac --⁩ ويعمل بشكل مطابق لأمر ⁦javac⁩ العادي.

تستخدم استدعاءات ⁦elide javac⁩ التنسيق التالي:

shell
 elide javac -- < javac options> <source files>

يفصل ⁦--⁩ بين خيارات ⁦Elide⁩ وخيارات ⁦javac⁩ المحددة.

ملاحظة

لا توجد خيارات خاصة بـ ⁦Elide⁩ قبل ⁦--⁩ في الوقت الحالي. لا يزال فاصل ⁦--⁩ مطلوباً.

خيارات ⁦Javac⁩ الشائعة

يدعم ⁦elide javac⁩ معظم خيارات ⁦Java⁩ الحديثة. هذه ليست قائمة شاملة.
العلَمالوصف
@قراءة الخيارات وأسماء الملفات من ملف
—class-path DIR، -cp DIRتحديد مكان البحث عن ملفات فئات المستخدم
-d DIRتحديد مكان وضع ملفات الفئات المُولَّدة
-h DIRتحديد مكان وضع ملفات الترويسات الأصلية المُولَّدة
-s DIRتحديد مكان وضع الملفات المصدرية المُولَّدة
-gتوليد جميع معلومات التصحيح
—module MODULEترجمة الوحدة (الوحدات) المحددة فقط
—module-path PATH، -p PATHتحديد مكان البحث عن وحدات التطبيق
—module-source-path PATHتحديد مكان البحث عن ملفات المصدر لوحدات متعددة
-v، —verboseإخراج مفصّل
للوصول إلى القائمة الكاملة للخيارات المتاحة استخدم
shell
 elide javac -- --help

مثال على الاستخدام

كمثال، لنفترض أن لديك بنية المجلدات التالية لمشروعك.

src
|  HelloWorld.java
|  ByeWorld.java

README.md

لترجمة ملف مصدري محدد، من جذر المشروع، تحتاج إلى تنفيذ الاستدعاء التالي.

shell
 elide javac -- ./src/HelloWorld.java

ستلاحظ ظهور ملف ⁦.class⁩ مترجم في مجلد ⁦src⁩. يبدو المشروع الآن هكذا.

src
|  HelloWorld.java
|  HelloWorld.class
|  ByeWorld.java

README.md

لتحديد مجلد البناء، مرّر العلَم ⁦-d⁩.

shell
 elide javac -- -d ./build/ ./src/HelloWorld.java

كما هو الحال مع ⁦javac⁩ العادي، سينشئ ⁦Elide⁩ مجلد ⁦build⁩ ويُخرج جميع ملفات ⁦.class⁩ المبنية هناك.

build
|  HelloWorld.class
src
|  HelloWorld.java
|  ByeWorld.java

README.md

كما ترى، بتمرير خيارات ⁦javac⁩ القياسية بعد علَم ⁦--⁩، يمكنك استخدام ⁦elide javac⁩ كأمر ⁦javac⁩ قياسي.

التكامل مع نظام البناء

عند استخدام ⁦elide build⁩ مع ملف مشروع ⁦elide.pkl⁩، تتم معالجة ترجمة شيفرة ⁦Java⁩ المصدرية تلقائياً بواسطة رسم مهام البناء.

من الممكن ترجمة ملفات ⁦Java⁩ المصدرية فقط عن طريق تشغيل ⁦elide build :compile-java-main⁩.

التصريح بالملفات المصدرية

التصريح بملفات ⁦Java⁩ المصدرية في كتلة ⁦source⁩ سيؤدي إلى ترجمتها تلقائياً أثناء استدعاء ⁦elide build⁩.

pkl
amends "elide:project.pkl"
import "elide:Sources.pkl" as Sources

sources {
  ["main"] = new Sources.SourceSetSpec {
    paths {
      "src/main/java<<>>*.java"
    }
  }
}

ضبط خيارات المترجم

لضبط خيارات مترجم ⁦Java⁩ المحددة في ⁦Elide⁩، مرّر العلامات في ⁦elide.pkl⁩.

مثال:
pkl
jvm {
  java {
    compiler {
      flags {
        "-verbose"
      }
    }
  }
}