JDK أم JRE: ماذا يختار المبتدئ؟ نفهم الأمر مرة واحدة وإلى الأبد
إذا كنت قد بدأت للتو رحلتك في عالم Java، فستواجه عاجلاً أم آجلاً سؤالاً: "ماذا يجب أن أحمل بالضبط؟ JDK، JRE، أم ربما يكفي JVM فقط؟". هذا السؤال شائع جداً لدرجة أنه حصل على آلاف المشاهدات وعشرات الإجابات على Stack Overflow. وهذا ليس من قبيل الصدفة - فالخلط بين هذه الاختصارات يمكن أن يدمر مشروعك الأول حتى قبل أن يبدأ.
تخيل أن Java هي مطبخ. JRE هو مطعم جاهز حيث يمكنك الذهاب وتناول الطعام. أما JDK فهو المطبخ نفسه مع المواقد والسكاكين وكتب الطبخ، حيث يمكنك طهي أي شيء. هل تشعر بالفرق؟ دعنا نرتب الأمور بدقة حتى لا تتردد أبداً في ما يجب تحميله.
باختصار عن الأساسيات: JVM، JRE، JDK
قبل أن نغوص في التفاصيل، دعنا نفهم التسلسل الهرمي الأساسي. يعتقد العديد من المبتدئين أن هذه ثلاثة منتجات مختلفة. في الواقع، إنها مثل الدمى الروسية، حيث يكون كل مكون داخل الآخر.
- JVM (Java Virtual Machine) - هو القلب. آلة افتراضية تنفذ البايت كود. هي بحد ذاتها عديمة الفائدة، مثل محرك بدون سيارة.
- JRE (Java Runtime Environment) - هو JVM + مجموعة من المكتبات القياسية (مثل
java.lang،java.util). هذه بيئة لتشغيل برامج Java الجاهزة. - JDK (Java Development Kit) - هو JRE + أدوات المطور: المترجم
javac، المصححjdb، أداةjavadocوغيرها.
صيغة بسيطة تستحق التذكر:
JDK = JRE + أدوات التطويرJRE = JVM + المكتباتالآن، عندما ترى على موقع Oracle سطر "Download JDK"، ستعرف أن بداخله كل ما هو ضروري للتشغيل وللكتابة.
لماذا نحتاج JRE إذا كان JDK موجوداً؟
سؤال جيد. إذا كان JDK يتضمن JRE، فلماذا نحمل "بيئة تشغيل فقط"؟ الأمر يتعلق بالحجم والجمهور المستهدف.
تخيل أنك كتبت لعبة رائعة بلغة Java وتريد أن يعطيها صديقك ليلعب بها. صديقك ليس مبرمجاً. لا يريد ترجمة أي شيء. يحتاج فقط إلى "صندوق" لتشغيل ملف .jar. إعطاؤه JDK كاملاً بحجم 300 ميغابايت لا معنى له. JRE تشغل مساحة أقل (حوالي 100-150 ميغابايت) ولا تحتوي على أدوات إضافية قد تربك المستخدم العادي.
لهذا السبب، في مواقع تحميل Java، يُعرض على المستخدمين العاديين JRE. أما للمطورين فيُعرض JDK. في الإصدارات الأخيرة (Java 11+) ذهبت Oracle إلى أبعد من ذلك ودمجتهما فعلياً، مما جعل JDK وحدة "مكتفية ذاتياً". لكن الفرق المفهومي بقي.
كيف تتحقق مما هو مثبت لديك؟
أسهل طريقة هي فتح الطرفية (سطر الأوامر) وإدخال بضع أوامر. سيوفر لك ذلك ساعات من البحث على Google عندما يحدث خطأ ما.
الخطوة 1. التحقق من إصدار Java (JRE):
java -versionإذا كان JRE مثبتاً، سترى شيئاً مثل:
java version "17.0.2" 2022-01-18 LTSJava(TM) SE Runtime Environment (build 17.0.2+8-LTS-86)الخطوة 2. التحقق من المترجم (JDK):
javac -versionإذا رأيت:
javac 17.0.2تهانينا! لديك JDK مثبت. إذا لم يتم العثور على الأمر، فلديك إما JRE فقط، أو أن Java غير مضبوطة في متغيرات البيئة (PATH).
مثال من الحياة الواقعية: لماذا لا يمكنك كتابة كود بدون JDK
دعنا نتخيل موقفاً. لقد قمت بتثبيت JRE فقط (على سبيل المثال، للعب Minecraft). تفتح المفكرة وتكتب أول "Hello, World!" لك:
public class HelloWorld { public static void main(String[] args) { System.out.println("مرحباً بالعالم!"); }}تحفظ الملف باسم HelloWorld.java.