انتقل إلى المحتوى

مُصرّف Java

صرّف شيفرة Java 25 المصدرية باستخدام elide javac أو ضمن بناء مشروع Elide دون تثبيت JDK، مع خيارات Elide لإخراج JAR وحدود الأخطاء.

في هذه الصفحة

يأتي Elide مع javac لـ Java 25؛ فلا حاجة إلى JDK منفصل.

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

elide javac -- -d out src/Hello.java
elide java -- -cp out Hello
0:12 / 0:12

تأتي خيارات javac بعد --. ومن دون -d تُكتب ملفات الأصناف بجوار مصادرها. يسرد الأمر elide javac -- -help كل خيارات javac.

خيارات Elide

تأتي خيارات Elide قبل --:

الخيارالغرض
--jar PATHتحزيم الناتج في ملف JAR عند PATH.
--manifest FILEملف البيان لناتج --jar.
--max-errors Nعدد الأخطاء المعروضة قبل الاكتفاء بعدّ البقية؛ 0 يعرضها كلها. تُزال التحذيرات المكررة ولا يُحدّ عددها أبدًا.
--report-used-deps PATHكتابة إدخالات classpath التي يشير إليها الناتج (التبعيات الصارمة في Bazel).
--capabilitiesطباعة قدرات المُصرّف بصيغة JSON.
--persistent_workerالعمل كعامل دائم في Bazel (persistent worker)، بنمط singleplex أو multiplex.
--classpath-cacheللعامل فقط: إعادة استخدام حالة classpath بين عمليات التصريف. يعطّله ELIDE_WORKER_CLASSPATH_CACHE=0.
elide javac --jar target/app.jar -- src/Main.java src/Util.java
elide javac --jar target/app.jar --manifest src/MANIFEST.MF -- src/Main.java

بناء المشاريع

يُصرّف elide build المجلدين src/main/java و src/test/java، أو مجموعات المصادر التي يُعلنها elide.pkl. لتصريف main فقط:

elide build compile-java-main
jvm {
  target = 25
  java {
    release = 25
    compiler {
      mode = "embedded"
      flags { "-Xlint:all" }
    }
  }
  features {
    graalvm = false
  }
}
الخاصيةالمعنىالقيمة الافتراضية
jvm.targetإصدار bytecode المستهدف؛ وهو مستوى --release عندما لا تُضبط java.release."auto" (21)
jvm.java.releaseمستوى --release: التصريف مقابل واجهة API الخاصة بذلك الإصدار من JDK فقط."auto"
jvm.java.sourceاستخدام --source/--target بدلًا من --release؛ ويُتجاهل عند ضبط release."auto"
jvm.java.compiler.mode"embedded" يستخدم javac الخاص بـ Elide؛ و "external" يشغّل الموجود في jvm.javaHome."embedded"
jvm.java.compiler.flagsخيارات javac إضافية؛ وتحلّ --release أو -source أو -target هنا محلّ خيارات Elide.لا شيء
jvm.java.sourceSets["<set>"].releaseمستوى --release لمجموعة المصادر تلك وحدها."auto" (مستوى المشروع)
jvm.java.sourceSets["<set>"].flagsخيارات javac لمجموعة المصادر تلك، بعد compiler.flags.لا شيء
jvm.javaHomeمجلد Java للتصريف الخارجي ولأجهزة JVM التي تعمل في عمليات منفصلة.المجلد الخاص بـ Elide
jvm.debugالتصريف باستخدام -g.true
jvm.features.graalvmوضع org.graalvm.nativeimage و word و collections على classpath التصريف.false
jvm.features.automodulesوضع ملفات JAR التي لا تحتوي على واصف وحدة على مسار الوحدات كوحدات تلقائية.true

مجموعة المصادر التي تحتاج إلى إعدادات مختلفة، مثل مجموعة تُصرَّف مقابل java.base وحدها، تذكرها تحت sourceSets. وتسمية مجموعة مصادر غير موجودة في المشروع تُفشل البناء.

sources {
  ["desktopless"] { paths { "src/desktopless/java" } }
}
jvm {
  java {
    sourceSets {
      ["desktopless"] {
        flags { "--limit-modules"; "java.base" }
      }
    }
  }
}

تكتب كل عملية تصريف وسائطها في javac.args بجوار ناتجها. معالجات التعليقات التوضيحية: تبعيات Maven.

العمّال الدائمون في Bazel

يُبقي elide javac --persistent_worker و elide kotlinc --persistent_worker مُصرّفًا واحدًا جاهزًا عبر إجراءات Bazel. القواعد والإعداد ومثال كامل: Bazel.

أمثلة

ابدأ من قالب:

elide init --template java        # Java app with a JUnit test

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