تغییر در مدل حافظه جاوا
در سال ۲۰۰۴ برای اولین بار این توقع وجود داشت که مدل حافظه جاوا با تمرکز بر همزمانی بازنگری شود. طرفداران open source جاوا میخواهند که مدل حافظه جاوا را که رسما بیش از نه سال آپدیت نشده است را نوسازی کنند و بر روی مبحث همزمانی متمرکز شوند.
طرح JEP شماره ۱۸۸ که در ژانویه ۲۰۱۴ ارائه شد، حافظه اشتراکی همزمان را پیشنهاد کرد که بر روی جاوای استاندارد، JVM ، تست و ابزارها تاثیر میگذارد. مستندات JEP بیان میکند که “مشخص کردن مدلهای حافظه اشتراکی همزمان و توسعه و پشتیبانی خصوصیات و اجزایی که بصورت هماهنگ با این حافظه کار میکند، هنوز از مسائل پیچیده مهندسی پلت فرمهای موازی و همزمان است. محدودیت خصوصیات، خطاها و نتایج تصادفی در طول زمان آشکار می شود که پلت فرمهای جدید سخت افزاری، شگردهای برنامه نویسی، اجزای نرمافزاری و ابزارها راهی برای برون رفت از این محدودیتهای کنونی میباشد.”
این سند JEP به این مشکلات اشاره میکند و مدلی از حافظه جاوا که آخرین بار در نسخه جاوا ۵ در سال ۲۰۰۴ تجدید نظر شده بود را توسعه می دهد.
آقای دوگ لی توسعه دهنده این طرح میگوید: “این به روز رسانی بطور غیرمستقیم فقط پشتیبانی همزمانی بر روی پردازندههای چند هستهای را بهبود میدهد.” این مدل از حافظه، بیشتر قوانین ریاضی ارتباط thread ها با حافظه را بیان میکند. همه فعالیت Threadهای جاوا و همزمانیها در شرایط این مدل حافظ بطور نامحدود مشخص شده است.”
آقای لی میگوید: دلیل اصلی این به روز رسانی این است که در دهه اخیر ساختارهایی پدید آمده است که نمیتوان با استفاده از مدل JDK5 آنها را مطرح کرد. به علاوه اینکه مشکلات جانبی شناخته شده و نتایج تصادفیای وجود دارد که بایستی به آنها اشاره شود. این مدل میتواند برای اصلاح مشخصات زبان جاوا، بهبود پیاده سازیها، پشتیبانی از ویژگی همزمانی و توسعه ابزارهای جدید برنامهنویسی استفاده شود. اگر موفق شویم، تلاشهای JEP ممکن است به پیشرفت و اصلاحهای گوناگون و از بین رفتن اشکالات پلت فرم منجر شود. همچنین ممکن است بعضی از ساختارهای برنامهنویسی غیر رایج که مشکل خیز است معرفی گردد. اگرچه انتظار نمیرود که این ماجرا تاثیری در سازگاری با نسخههای قبلی یا خصوصیات غیرمرتبط یا API ها داشته باشد و اگر این طرح شکست بخورد و به هدفش نرسد، وضعیت کنونیاش حفظ می شود.
توقع میرود که این طرح مشخصات رسمی مدل حافظهای تغییر یافتهای را که بطور خودکار بررسی و فهمیده میشود، بهبود دهد و همچنین خطاهای موجود و پوشش JVM همراه با سازگاری C11 یا ++C و راهنمایی درباره پیاده سازی را نشان دهد.
در طرح بیان شده است که “تست انطباق با الزامات مدل حافظهای کار مشکلی است. ما انتظار داریم با مهندسانی که تستها را بطور واضح بر مبنای طرح ارائه شده طراحی و پیادهسازی می کنند کار کنیم.” این مدل اصلاح شده الگویی خواهد بود که ابزارهای توسعه از آن استفاده می کنند. این ابزارها از نظر تحلیلی خطاهایی مانند شرایط رقابت و نگهداری از خواص امنیتی در اجرای همزمان را کنترل میکنند.
آقای لی در کمیته اجرایی JCP خدمت می کرد و در سال ۲۰۱۰ بعد از سرخوردگی از انجمن آن را ترک کرد. ایشان گفت:”اگرچه JCP ممکن است با محصولات جانبی این تلاش روبرو شود، اما این مدل حافظه طرح JCP نیست.”
آیا واقعا قراره این طرح اجرا بشه و مدل حافظه جاوا تغییر کنه یا اینکه صرفا یه نظریه است؟