تا حالا فکر کردی چطور کد هایی که ما به زبان جاوا یا کاتلین مینویسیم، روی میلیون‌ ها مدل گوشی مختلف با سخت ‌افزار های متفاوت اجرا میشن؟ چطور اندروید میفهمه که این حروف و کلماتِ ما، باید تبدیل به یه دکمه یا یه انیمیشن بشن؟

جواب این معما توی دل JVM نهفته‌ ست. البته توی اندروید داستان یکم پیچیده ‌تر و جذاب‌ تر هم میشه که در ادامه با هم بررسی ‌ش میکنیم.

JVM چیست و اصلاً چه کار می‌کند؟

کدی که تو مینویسی برای کامپیوتر قابل فهم نیست. کامپیوتر فقط صفر و یک (زبان ماشین) میفهمه. JVM (Java Virtual Machine) مثل یک «مترجم همزمان» عمل میکنه. کد جاوای تو رو میگیره و اون رو به چیزی به اسم Bytecode تبدیل میکنه.

قشنگی ماجرا اینجاست که شعار جاوا اینه: «یک‌بار بنویس، همه‌جا اجرا کن». یعنی فرقی نمیکنه سیستم‌عامل ویندوزه، لینوکسه یا اندروید؛ تا وقتی JVM وجود داشته باشه، اون کد اجرا میشه.

اندروید و تحول JVM: از Dalvik تا ART

توی دنیای اندروید، گوگل از همون اول از خودِ JVM استاندارد استفاده نکرد. چرا؟ چون گوشی ‌ها مثل کامپیوتر ها رم و سی‌پی‌یو قوی نداشتن. پس گوگل نسخه‌های بهینه‌شده‌ ی خودش رو ساخت:

۱. دوران Dalvik (نوستالژی اندروید)

قدیما اندروید از چیزی به اسم Dalvik استفاده میکرد. دالویک مثل یه مترجم "خط به خط" بود. یعنی هر بار که برنامه رو باز میکردی، همون موقع کد ها رو ترجمه میکرد (JIT). این کار باعث میشد مصرف رم کم باشه، ولی سرعت اجرا یکم پایین بیاد.

۲. دوران ART (دنیای مدرن)

از اندروید ۵ به بعد، ART (Android Runtime) جایگزین شد. ART زرنگی میکنه؛ همون موقع که داری برنامه رو نصب میکنی، کدها رو به زبان ماشین ترجمه میکنه (AOT). نتیجه؟ برنامه ‌ها خیلی سریع ‌تر باز میشن و لگ کمتری دارن.

چرا JVM برای توسعه‌دهنده اندروید مهم است؟

درک اینکه JVM چطور کار میکنه، چند تا مزیت بزرگ برات داره:

  • مدیریت حافظه (Garbage Collection): JVM یه سیستم خودکار به اسم "آشغال ‌جمع‌ کن" داره. کد هایی که دیگه لازم نداری رو شناسایی میکنه و حافظه رم رو آزاد میکنه. اگه بدونی چطور کار میکنه، برنامه‌هات سنگین نمیشن.

  • امنیت: چون کدها توی یک محیط مجازی (Sandboxed) اجرا میشن، اگه یه برنامه مخرب باشه، نمیتونه به راحتی به کل سیستم‌ عامل آسیب بزنه.

  • کاتلین و جاوا در کنار هم: به خاطر وجود JVM هست که تو میتونی توی یک پروژه، هم کد جاوا بنویسی و هم کاتلین، و این دو تا خیلی راحت با هم حرف بزنن! چون در نهایت جفتشون تبدیل به Bytecode میشن.

جمع ‌بندی

JVM یا نسخه ‌های تکامل ‌یافته‌ ش توی اندروید (ART)، همون قهرمان‌ های پشت‌ صحنه هستن که باعث میشن کدِ "تمیز" و "انتزاعی" ما، روی سخت‌افزارِ "خشن" و "پیچیده" موبایل به نرمی اجرا بشه. بدون این ماشین ‌های مجازی، توسعه اندروید کابوسی بود که باید برای هر مدل گوشی، یه کد جداگونه مینوشتیم!