توی دنیای جاوا، از وقتی که تو کد مینویسی تا وقتی که اون کد اجرا میشه، یک مسیر مشخص وجود داره. اگه این سه تا رو درست نشناسی، مثل این میمونه که بخوای آشپزی کنی ولی ندونی فرقی بین «چاقو»، «آشپزخانه» و «دستور پخت» چیه!

۱. جی‌ دی‌ کی (JDK): جعبه‌ ابزار کامل سرآشپز

JDK مخفف Java Development Kit هست. این همون چیزیه که تو به عنوان «برنامه‌نویس» روی سیستمت نصب میکنی.

  • توی مثال رستوران: JDK یعنی کل ساختمان رستوران به‌اضافه همه‌ ی وسایل آشپزی، ادویه‌ ها، چاقو ها و از همه مهم‌ تر «کتاب آموزش آشپزی».

  • کارش چیه؟ تو کد هات رو با فرمت .java مینویسی، و JDK ابزاری به اسم Compiler داره که این کد ها رو به زبان مخصوص جاوا (Bytecode) تبدیل میکنه. بدون JDK، تو فقط یک نویسنده‌ ای، نه یک توسعه‌ دهنده!

۲. جی‌ آر‌ ای (JRE): سالن پذیرایی و سرویس‌ دهی

JRE مخفف Java Runtime Environment هست. این بخش برای کسانیه که فقط میخوان برنامه رو اجرا کنن، نه اینکه کد بنویسن.

  • توی مثال رستوران: JRE مثل سالن رستوران و گارسون‌ هاست. مشتری (کاربر) کاری نداره غذا چطوری پخته شده، اون فقط میخواد غذا رو میل کنه. JRE تمام کتابخانه‌ ها و فایل‌ های لازم رو کنار هم میچینه تا برنامه بتونه «راه بیفته».

  • نکته: اگه تو فقط میخوای یه بازی جاوایی رو سیستمت اجرا بشه، JRE برات کافیه.

۳. جی‌ وی‌ ام (JVM): موتور اصلی یا همون سرآشپز!

JVM مخفف Java Virtual Machine هست. این قلب تپنده و باهوش‌ ترین بخش ماجراست.

  • توی مثال رستوران: JVM همون سرآشپزیه که دستور پخت رو میگیره و واقعاً غذا رو درست میکنه.

  • جادوی JVM: جالبیش اینجاست که سرآشپز ما (JVM) خیلی منعطفه. اگه آشپزخونه توی ویندوز باشه، یا لینوکس، یا مک، این سرآشپز میدونه چطوری خودش رو با اون محیط وفق بده تا مزه‌ی غذا (اجرای برنامه) عوض نشه. به خاطر همینه که میگن: «یک بار بنویس، همه‌جا اجرا کن!»

معماری اجرا: کد تو چطوری تبدیل به برنامه میشه؟

بیا ببینیم پشت پرده چه اتفاقی می افته:

۱. مرحله نوشتن: تو کد رو مینویسی (Hello.java). ۲. مرحله کامپایل (توسط JDK): ابزار کامپایلر میاد کد تو رو میخونه و یه فایل جدید میسازه به اسم Hello.class. این فایل حاوی کد های عجیبیه که بهش میگن Bytecode. ۳. مرحله بارگذاری (توسط JRE): حالا JRE میاد تمام کتابخانه‌ های لازم (مثلاً برای چاپ کردن متن) رو به این فایل کلاس میچسبونه. ۴. مرحله اجرا (توسط JVM): حالا نوبت JVM هست. اون کد های بایت‌ کد رو خط‌ به‌ خط میخونه و به زبان قابل فهم برای سخت‌افزار (صفر و یک) تبدیل میکنه.

مثال کدی: پشت صحنه‌ی یک "Hello World" ساده

وقتی تو این کد رو می‌زنی:

public class MyFirstCode {
    public static void main(String[] args) {
        System.out.println("سلام دنیا!");
    }
}
  • JDK با دستوری مثل javac این رو تبدیل میکنه به بایت‌کد.

  • JRE کتابخانه‌ی System رو براش پیدا میکنه و میاره.

  • JVM اون دستور چاپ کردن رو برمیداره و به پردازنده‌ ی کامپیوترت میگه: « این متن رو روی مانیتور نشون بده!»

نام مخفف وظیفه اصلی محتویات
JDK Development Kit ساخت برنامه ابزارهای توسعه + JRE
JRE Runtime Env اجرای برنامه کتابخانه‌ها + JVM
JVM Virtual Machine تفسیر کد فقط موتور اجرای بایت‌کد

نتیجه‌ گیری: کی به چی نیاز داره؟

اگه بخوایم خیلی خلاصه بگیم:

  • اگه کاربر معمولی هستی و فقط میخوای برنامه اجرا بشه: JRE (که البته این روزها معمولاً همراه خود برنامه‌ ها نصب میشه).

  • اگه برنامه‌ نویس هستی و میخوای کد بزنی و خلق کنی: JDK.

  • و یادت باشه که JVM همون روح جاوائه که داخل هر دوی این‌ ها وجود داره و اجازه میده برنامه روی هر سیستمی اجرا بشه.

در واقع JDK مثل یک «کارخانه» است که داخلش «نمایشگاه» (JRE) هم داره، و توی اون نمایشگاه، «موتورها» (JVM) دارن کار میکنن!