العودة إلى الدورة

فهم عملية التجميع و الـ JVM (آلة Java الافتراضية)

إتقان لغة Java: من الصفر إلى مطور محترف (رحلة من 50 درساً)

الدرس 4: فهم عملية التجميع والـ JVM

تعتبر بنية Java فريدة لأنها تستخدم خطوة وسيطة (bytecode) لتحقيق الاستقلالية عن أنظمة التشغيل.

عملية تنفيذ Java

تتضمن العملية خطوتين رئيسيتين:

  1. التجميع (باستخدام javac): يأخذ مترجم Java كود المصدر الذي يقرأه البشر (ملف .java) ويترجمه إلى bytecode مستقل عن النظام (ملف .class).
  2. التفسير/التنفيذ (باستخدام java والـ JVM): يقرأ الـ JVM الـ bytecode (ملف .class) وينفذه على نظام التشغيل الخاص بالجهاز المضيف.

mermaid sequenceDiagram participant Developer participant SourceCode participant Compiler participant ByteCode participant JVM participant OS

Developer->>SourceCode: كتابة HelloWorld.java
SourceCode->>Compiler: إدخال ملف .java
Compiler->>ByteCode: إخراج ملف .class (Bytecode)
ByteCode->>JVM: تحميل والتحقق من الـ bytecode
JVM->>OS: تنفيذ التعليمات
OS->>Developer: عرض "Hello, World!"

ما هو الـ Bytecode؟

الـ Bytecode هو مجموعة من التعليمات التي تشبه لغة الآلة ولكنها مصممة ليفهمها الـ JVM، وليس معالج الأجهزة (CPU) بشكل مباشر. هذا هو السر وراء قدرة Java على "الكتابة مرة واحدة، والتشغيل في أي مكان".

مترجم JIT

تستخدم الـ JVMs الحديثة مترجماً فورياً (Just-In-Time Compiler - JIT). يراقب مترجم JIT البرنامج أثناء تشغيله ويحدد الأجزاء المستخدمة بكثرة من الـ bytecode. ثم يقوم بتجميع هذه "النقاط الساخنة" إلى كود آلة أصلي أثناء وقت التشغيل. يؤدي هذا إلى تسريع التنفيذ بشكل كبير، مما يجعل أداء Java قريباً جداً من اللغات التي تُجمع مباشرة للنظام.