Tooling متوسط

شغّل العمليات بقائمة وسائط صريحة وبإعدادات ProcessBuilder.

✕ Command string
Process process = Runtime.getRuntime()
        .exec("git show " + revision);
✓ ProcessBuilder
Process process = new ProcessBuilder(
        "git", "show", revision)
        .redirectErrorStream(true)
        .start();
هل ترى مشكلة في هذا الكود؟ أخبرنا.
🎯

وسائط دقيقة

يبقى كل وسيط للعملية قيمة منفصلة دون تقسيم سلسلة الأمر إلى رموز.

🎛

إعداد صريح

تُضبط البيئة والدليل وإعادة التوجيه ومعالجة الأخطاء معاً.

🛡

حدود أكثر أماناً

يتجنّب بناء سلسلة أوامر شبيهة بالصدفة من قيم ديناميكية.

الأسلوب القديم
Runtime.exec(String)
الأسلوب الحديث
ProcessBuilder
منذ JDK
5
الصعوبة
متوسط
من Runtime.exec(String) إلى وسائط ProcessBuilder
متاح

متاح على نطاق واسع منذ JDK 5 (سبتمبر 2004)

تطبّق Runtime.exec(String) تقسيم سلسلة الأمر إلى رموز وفق قواعد جافا، وهو أمر يسهل إساءة فهمه عندما تحتوي الوسائط على مسافات أو علامات اقتباس. تقبل ProcessBuilder وسائط البرنامج كقيم منفصلة، وتُظهر بوضوح دليل العمل والبيئة وإعادة توجيه الإدخال والإخراج وسياسة تدفق الأخطاء. ولا تستدعي صدفة إلا إذا شغّلها التطبيق عمداً.