The end of the Java's Architecture's Story
- Java Native Interface: این اینترفیس برای تعامل با متدهای native هستش. JVM با JNI متدهای native رو صدا میزنه و بیشتر برای ارتباط با سخت افزار ازش استفاده میکنه.
- Native Method Libraries: یک مجموعه از کتابخانه های native هستن که Execution Engine به اونها برای دسترسی به JNI نیاز داره.
- JVM Threads: ما در مورد اینکه برنامهها چجوری اجرا میشن صحبت کردیم ولی درباره اجرا کننده برنامهها هیچ صحبتی نکردیم.
- JVM همزمان چندین thread را اجرا میکند. بعضی از اونها منطق یک برنامه هستن و به وسیله برنامهها ساخته میشن که بهشون میگن Application thread و باقی thread ها رو خود JVM برای کارهای خودش ایجاد میکنه که بهشون میگن System thread.
- به thread اصلی برنامه Main thread میگیم و تمام thread های برنامه به وسیله main thread ساخته میشن. اجرای برنامه، ساخت اشیا توی heap و … وظیفه application thread هستش.
- system thread از قسمتهای زیر تشکیل شده:
- Compiler threads: کامپایل bytecode به native code در زمان اجرا رو این thread انجام میده.
- GC threads: تمام کارهایی که GC انجام میده رو این thread انجام میده.
- Periodic task thread: رخدادهای وابسته به زمان و کارهایی که به صورت دوره ای انجام میشه رو این thread انجام میده.
- Signal dispatcher thread: دریافت سیگنالهایی که به JVM ارسال میشه، مدیریت و پردازش اونها در درون JVM با فراخوانی متد مناسب در JVM
- VM thread: بعضی کارها به JVM نیاز دارن تا اونها رو به یک نقطه درست از Heap برسونه، جایی که تغییرات زیاد نیست. مثلا: stop-the-world garbage collections یا thread stack dumps یا thread suspension ویا biased locking revocation. این دسته از عملیاتها برای اجرا به این thread نیاز دارند.
نکات پایانی:
- جاوا یک زبان مفسری و کامپایلری هستش
- طراحی جاوا جوری هستش که در پیوندهای پویا (dynamic linking) و تفسیر در زمان اجرا (run-time interpreting) کند هستش.
- کامپایلر JIT نقطه ضعف جاوا رو در تفسیر کدها رو با cache کردن کدهای کامپایل شده بجای bytecode پوشش میده
- JVM فقط یک سند هستش، ارائه دهنده های اون میتونن چیزی رو تغییر بدن، نوآوری داشته باشن و یا در زمان پیاده سازی چیزی رو بهبود ببخشن.
+ نوشته شده در جمعه ۱۸ تیر ۱۴۰۰ ساعت 20:54 توسط No One