روشهای دسترسی به حافظه در کلاس ۲۰ ساله برای انجام عملیاتهای سطح پایین برای حذف در نسخه آتی جاوا علامتگذاری میشوند.
روش های دسترسی به حافظه کلاس sun.misc.Unsafe
جاوا برای حذف منسوخ شد در نسخه بعدی پلتفرم، تحت یک JEP (پیشنهاد ارتقاء JDK) در جامعه OpenJDK. از ۸۷ متد کلاس، ۷۹ متد حذف خواهند شد.
پیشنهاد میگوید:
این روشهای پشتیبانینشده از زمان JDK 9، برای دسترسی به حافظه روی پشته، و JDK 22 برای دسترسی به حافظه خارج از هیپ، جایگزینهایی پشتیبانی میکنند. توسعه دهندگان کتابخانه به شدت تشویق می شوند که از sun.misc.Unsafe
به این جایگزین های پشتیبانی شده مهاجرت کنند. اهداف این پیشنهاد شامل آمادهسازی برای حذف این روشهای دسترسی به حافظه در نسخه جاوا آینده و کمک به توسعهدهندگان است که بدانند چه زمانی برنامههایشان به آنها تکیه میکنند. هدف پیشنهاد حذف کامل کلاس sun.misc.Unsafe
نیست، زیرا تعداد کمی از روشهای آن برای دسترسی به حافظه استفاده نمیشوند و قدیمی باقی میمانند.
این پیشنهاد به نسخه خاصی از جاوا اشاره نمی کند که این روش ها را منسوخ کند. نسخه بعدی جاوا استاندارد، JDK 22، که در ماه مارس عرضه می شود، در حال حاضر ویژگی های آن ثابت شده است. اما JDK 23 که احتمالاً در ماه سپتامبر منتشر میشود، میتواند هدف احتمالی باشد.
در گذشته، کد ناامن برای برنامهنویسی سطح پایین مورد نیاز بود. کلاس sun.misc.Unsafe
در سال ۲۰۰۲ به عنوان راهی برای کلاس های جاوا در JDK برای انجام عملیات سطح پایین معرفی شد. روش های دسترسی به حافظه آن، همانطور که از نام کلاس پیداست، ناامن هستند و می توانند منجر به رفتار نامشخص شوند، بنابراین به عنوان یک API استاندارد در معرض نمایش قرار نگرفتند. آنها با این فرض معرفی شدند که منحصراً برای استفاده در JDK هستند، تماسگیرندگان در JDK قبل از استفاده از آنها، بررسیهای ایمنی جامعی را انجام میدهند و APIهای استاندارد ایمن برای عملکرد به پلتفرم جاوا اضافه میشوند.
اما بدون هیچ راهی در سال ۲۰۰۲ برای جلوگیری از استفاده sun.misc.Unsafe
در خارج از JDK، روش های دسترسی به حافظه آن به یک “چاقوی ارتش سوئیس” برای توسعه دهندگان کتابخانه تبدیل شد که خواهان قدرت و عملکرد بیشتر بودند. از آنچه APIهای استاندارد می توانند ارائه دهند. متأسفانه، همه کتابخانهها قبل از فراخوانی این روشها، بررسیهای ایمنی را انجام نمیدهند، بنابراین خطر خرابی و خرابی در برنامهها وجود دارد.
در طول چندین سال گذشته، دو API استاندارد به عنوان جایگزینی برای روشهای دسترسی به حافظه در sun.misc.Unsafe
معرفی شدهاند. اینها java.lang.invoke
از JDK 9 و java.lang.foreign
از JDK 22 هستند.
پست های مرتبط
پیشنهاد جاوا باعث حذف sun.misc.دسترسی ناامن حافظه می شود
پیشنهاد جاوا باعث حذف sun.misc.دسترسی ناامن حافظه می شود
پیشنهاد جاوا باعث حذف sun.misc.دسترسی ناامن حافظه می شود