۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

JDK 23: ویژگی های جدید در جاوا ۲۳

جاوا 23 که قرار است در ماه سپتامبر ارائه شود، شامل پیش نمایش اعلامیه های واردات ماژول، جمع کننده های جریان، همزمانی ساختاریافته و مقادیر محدوده است، اما نه الگوهای رشته ای.

جاوا ۲۳ که قرار است در ماه سپتامبر ارائه شود، شامل پیش نمایش اعلامیه های واردات ماژول، جمع کننده های جریان، همزمانی ساختاریافته و مقادیر محدوده است، اما نه الگوهای رشته ای.

مجموعه ویژگی برای Java Development Kit (JDK) 23، نسخه برنامه ریزی شده بعدی استاندارد جاوا، حتی در ده ها نفر نهایی شده است. پیش‌نمایش سوم پیشنهادی از الگوهای رشته‌ای که در JDK 22 و JDK 21، از JDK 23 حذف شده است.

در تاریخ ۱۷ سپتامبر، JDK 23 شامل پیش‌نمایش سوم از مقادیر محدوده، همزمانی ساختاریافته، و کلاس‌ها و روش‌های نمونه به طور ضمنی اعلام شده، و پیش‌نمایش دوم بدنه‌های سازنده انعطاف‌پذیر، جمع‌آورنده‌های جریان، و یک API فایل کلاسی. JDK 23 همچنین شامل اعلان‌های واردات ماژول، نظرات مستندات Markdown، هشتمین انکوباسیون API برداری، و پیش‌نمایش انواع اولیه در الگوها، instanceof و switch خواهد بود. و انتشار، روش‌های دسترسی به حافظه را در sun.misc.UnSafe منسوخ می‌کند و حالت نسلی جمع‌آورنده Z Garbage را به حالت پیش‌فرض تبدیل می‌کند.

JDK 23 بر خلاف JDK 21 که یک نسخه LTS با چندین سال پشتیبانی است. بیلدهای دسترسی اولیه برای JDK 23 را می توان از jdk.java.net دسترسی داشت.

مقادیر محدوده، که قبلاً در JDK 22 و JDK 21 پیش‌نمایش شده بود، روشی را برای اشتراک‌گذاری داده‌های تغییرناپذیر فعال می‌کند. با پینه هایش درون یک نخ و با نخ های کودک. در این پیشنهاد آمده است که ارزش‌های دامنه‌دار آسان‌تر از مقادیر thread-local استدلال می‌شوند و هزینه‌های مکان و زمان کمتری دارند، به‌ویژه زمانی که همراه با موضوعات مجازی و همزمانی ساختاریافته استفاده می‌شوند. پیش نمایش مقادیر محدوده در JDK 23 یک تغییر را نسبت به پیش نمایش های قبلی ایجاد می کند: نوع پارامتر عملیات در ScopedValue.callWhere روش است رابط کاربردی جدید که به کامپایلر جاوا اجازه می دهد تا استنباط کند که آیا ممکن است یک استثنای علامت زده ایجاد شود یا خیر. با این تغییر، ScopeValue.getWhere دیگر مورد نیاز نیست و حذف شده است.

طرح‌های JDK 23 همچنین خواستار منسوخ کردن روش‌های دسترسی به حافظه در sun.misc.Unsafe برای حذف در نسخه بعدی. این روش‌ها پشتیبانی نمی‌شوند و توسط APIهای استاندارد، یعنی VarHandle API و API عملکرد و حافظه خارجی. توسعه دهندگان کتابخانه تشویق می شوند که از sun.misc.Unsafe به جایگزین های پشتیبانی شده مهاجرت کنند، بنابراین برنامه ها می توانند به راحتی به نسخه های JDK مدرن مهاجرت کنند. اهداف پیشنهاد شامل آماده سازی اکوسیستم برای حذف روش های دسترسی به حافظه در sun.misc.Unsafe در نسخه آینده JDK، و کمک به توسعه دهندگان برای درک اینکه چه زمانی برنامه های آنها به طور مستقیم یا غیرمستقیم به آن دسترسی به حافظه متکی است. مواد و روش ها. هدف حذف کامل sun.misc.Unsafe نیست، زیرا تعداد کمی از روش های آن برای دسترسی به حافظه استفاده نمی شود. این روش ها منسوخ شده و به طور جداگانه حذف خواهند شد.

هم‌زمان ساختاری سومین پیش‌نمایش را در JDK 23 دریافت می‌کند که در JDK 22 و JDK 21 پیش‌نمایش شده است. هدف آن ساده‌سازی برنامه‌نویسی همزمان با معرفی یک API برای همزمانی ساختاریافته است که گروه‌های وظایف مرتبط را در رشته‌های مختلف به عنوان یک واحد کار در نظر می‌گیرد، مدیریت خطا و لغو را ساده می‌کند تا قابلیت اطمینان و قابلیت مشاهده را بهبود بخشد. اهداف این پیشنهاد شامل ترویج سبکی از برنامه‌نویسی است که می‌تواند خطرات رایج ناشی از لغو و خاموش شدن را از بین ببرد، مانند نشت رشته و تاخیر در لغو، و بهبود قابلیت مشاهده کدهای همزمان.

بدنه‌های سازنده انعطاف‌پذیر پیش‌نمایش دوم را در JDK 23 دریافت می‌کنند. این ویژگی در JDK 22 در زیر پیش‌نمایش شد نام عبارات قبل از super(…). این پیشنهاد به بدن سازنده اجازه می‌دهد تا قبل از فراخوانی صریح سازنده، فیلدهای یک کلاس را مقداردهی اولیه کند. در نظر گرفته شده است که به توسعه‌دهندگان آزادی بیشتری برای بیان رفتار سازنده‌ها بدهد، و امکان قرار دادن منطق طبیعی‌تری را فراهم کند که در حال حاضر باید در روش‌های استاتیک کمکی، سازنده‌های میانی کمکی، یا استدلال‌های سازنده لحاظ شود. این ویژگی همچنین در نظر گرفته شده است که تضمین کند سازنده ها در طول نمونه سازی کلاس به ترتیب از بالا به پایین اجرا می شوند، و تضمین می کند که کد در سازنده زیر کلاس نمی تواند با نمونه سازی سوپرکلاس تداخل داشته باشد.

پیش‌نمایش‌شده در JDK 21 و JDK 22، کلاس‌ها و روش‌های نمونه به طور ضمنی اعلام شده زبان جاوا را تکامل می‌دهد تا به مبتدیان اجازه می‌دهد اولین برنامه‌نویسان خود را بدون نیاز به درک ویژگی‌های زبان طراحی‌شده برای بزرگ بنویسند. برنامه ها. مبتدیان می‌توانند اعلان‌های ساده‌سازی شده برای برنامه‌های تک کلاسی بنویسند و سپس به‌طور یکپارچه برنامه‌ها را برای استفاده از ویژگی‌های پیشرفته‌تر با رشد مهارت‌هایشان گسترش دهند. دو پیشرفت در JDK 23 اضافه می‌شود: کلاس‌های اعلام‌شده ضمنی به‌طور خودکار سه روش static را برای متن ساده ورودی/خروجی با کنسول وارد می‌کنند و در صورت تقاضا، تمام کلاس‌های سطح بالای عمومی و رابط‌های بسته‌ها را وارد می‌کنند. توسط ماژول java.base صادر شده است.

اعلان‌های واردات ماژول، که یک ویژگی پیش‌نمایش در JDK 23 است، جاوا را با توانایی به طور خلاصه تمام بسته های صادر شده توسط ماژول را وارد کنید. این پیشنهاد، که در ماه آگوست ایجاد شد، استفاده مجدد از کتابخانه های مدولار را ساده می کند، اما نیازی به کد وارد شده در خود یک ماژول ندارد. اهداف شامل ساده‌سازی استفاده از کتابخانه‌های مدولار با اجازه دادن به کل ماژول‌ها برای وارد شدن به یکباره و اجتناب از نویز چندین اعلان‌های نوع واردات بر حسب تقاضا هنگام استفاده از بخش‌های متنوع API صادر شده توسط یک ماژول است. هدف دیگر این است که به مبتدیان این امکان را می‌دهد تا راحت‌تر از کتابخانه‌های شخص ثالث و کلاس‌های اصلی جاوا استفاده کنند، بدون اینکه بدانند کجا در یک سلسله مراتب بسته قرار دارند.

نظرات مستندات Markdown، پیشنهادی که در سپتامبر گذشته ایجاد شد، اجازه می‌دهد نظرات مستندات JavaDoc در Markdown نوشته شوند. نه صرفاً در ترکیبی از HTML و JavaDoc @ tags. هدف از این پیشنهاد، آسان‌تر کردن نوشتن و خواندن نظرات اسناد API در فرم منبع با معرفی قابلیت استفاده از نحو Markdown در کنار عناصر HTML و تگ‌های JavaDoc است. همچنین برای گسترش Compiler Tree API برای فعال کردن سایر ابزارهایی که نظرات اسناد را برای مدیریت محتوای Markdown تجزیه و تحلیل می کنند. این طرح نباید بر تفسیر نظرات اسناد موجود تأثیر منفی بگذارد.

JDK 23 همچنین قرار است حالت پیش‌فرض Z Garbage Collector (ZGC) را به حالت نسلی نسل ZGC برای تقویت برنامه جاوا در نظر گرفته شده است عملکرد با جمع‌آوری مکرر اشیاء جوان، که تمایل دارند جوان بمیرند. حالت غیر نسلی منسوخ خواهد شد، با این هدف که در نسخه بعدی حذف شود. اهداف این ویژگی شامل سیگنال دادن به این هدف است که توسعه آینده بر روی ZGC نسلی تمرکز خواهد کرد و کاهش هزینه تعمیر و نگهداری پشتیبانی از دو حالت مختلف. حفظ ZGC غیر نسلی توسعه ویژگی های جدید را کند می کند. ZGC در JDK 15 به جاوا اضافه شد در سپتامبر ۲۰۲۰.

بردار API، که در نسخه‌های قبلی جاوا از JDK 16 تا ماه گذشته JDK 22، یک API را برای بیان محاسبات برداری معرفی می کند که به طور قابل اعتماد در زمان اجرا تا حد مطلوب کامپایل می شوند. دستورالعمل های برداری در معماری های پشتیبانی شده CPU. اهداف پیشنهاد شامل ارائه یک API واضح و مختصر، ارائه کامپایل زمان اجرا و عملکرد قابل اعتماد در معماری‌های x64 و AArch64، ارائه تخریب زیبا، پلتفرم‌آگنوستیک بودن و همسویی با پروژه Valhalla، که برای تقویت مدل شی جاوا با اشیاء ارزشی در نظر گرفته شده است.

گردآورنده‌های جریان، که قبلاً در JDK 22 پیش‌نمایش شده بود، stream API برای پشتیبانی سفارشی عملیات میانی جمع‌آورنده‌های جریان به خطوط لوله جریان اجازه می‌دهند تا داده‌ها را به روش‌هایی تغییر دهند که به راحتی با عملیات میانی داخلی موجود قابل دستیابی نیست. اهداف شامل انعطاف‌پذیری و رسا کردن خطوط لوله جریان و اجازه دادن به عملیات میانی سفارشی برای دستکاری جریان‌هایی با اندازه بی‌نهایت است.

class-file API در نظر گرفته شده است تا یک API برای پردازش فایل‌های کلاس ارائه دهد که فایل کلاس را ردیابی می‌کند. قالب تعریف شده توسط مشخصات ماشین مجازی جاوا. همچنین اجزای JDK را قادر می‌سازد تا به API استاندارد مهاجرت کنند و در نهایت کپی داخلی JDK از کتابخانه ASM شخص ثالث را حذف کند. الف>. API فایل کلاس، اصلاحاتی از جمله ساده‌سازی کلاس CodeBuilder را اضافه می‌کند، که دارای روش‌های کارخانه‌ای برای دستورالعمل‌های بایت کد، از جمله کارخانه‌های سطح پایین، کارخانه‌های سطح متوسط، و سازندگان سطح بالا برای بلوک‌های پایه است.< /p>

برای JDK 23، سازندگان جاوا روش‌های سطح متوسطی را حذف کردند که روش‌های سطح پایین را تکرار می‌کردند یا به ندرت استفاده می‌شدند، در حالی که نام روش‌های سطح متوسط ​​باقی مانده را برای بهبود قابلیت استفاده تغییر دادند. آنها همچنین مدل کلاس ClassSignature را اصلاح کردند، که برای مدل‌سازی امضاهای عمومی ابرکلاس‌ها و سوپرواسط‌ها با دقت بیشتری بهبود یافته است. با توجه به پیشنهاد OpenJDK پشت این ویژگی، پلتفرم جاوا باید یک API استاندارد کلاسی را تعریف و پیاده‌سازی کند که همراه با فرمت فایل کلاس تکامل می‌یابد، که می‌تواند هر شش ماه یکبار تکامل یابد.

همچنین برای درج در JDK 23 ذکر شده است ویژگی پیش‌نمایش، انواع اولیه در الگوها، نمونه و سوئیچ< /a>. این ویژگی با اجازه دادن به الگوهای نوع اولیه در همه زمینه‌های الگو، تطابق الگو را افزایش می‌دهد و instanceof و switch را برای کار با انواع اولیه گسترش می‌دهد. اهداف شامل ارائه سازه‌هایی با کاربرد آسان است که خطر از دست دادن اطلاعات به دلیل ریخته‌گری‌های ناایمن را از بین می‌برد، هم‌تراز کردن انواع الگو با instanceof، هم‌تراز کردن instanceof با ریخته‌گری ایمن، و اجازه دادن به یکنواخت کاوش داده ها با اجازه دادن به الگوهای نوع برای همه انواع، اعم از انواع اولیه یا مرجع. هدف دیگر اجازه دادن به تطبیق الگو برای استفاده از همه الگوهای نوع اولیه در زمینه‌های تودرتو و سطح بالا است.

الگوهای رشته، که در JDK 22 و JDK 21 پیش‌نمایش شده بود، برای JDK کنار گذاشته شد. ۲۳. این ویژگی برای تکمیل کلمات رشته ای و بلوک های متنی جاوا با جفت کردن متن تحت اللفظی و عبارات تعبیه شده برای تولید نتایج تخصصی در نظر گرفته شده بود. جامعه OpenJDK احساس می‌کرد که این قابلیت «وزن خود را نمی‌کشد» و ارزیابی‌های بیشتر و طراحی مجدد بالقوه زمان می‌برد. 

مدیر جاوا Oracle همچنین برنامه هایی را برای جاوا در سال ۲۰۲۴ نشان داده است. Oracle بهبودهایی را بیان کرد که شامل پروژه‌های OpenJDK از Amber، برای توسعه ویژگی‌های کوچکتر و بهره‌وری محور تا < یک href="https://openjdk.org/projects/babylon/" rel="nofollow">Babylon، برای گسترش جاوا به مدل‌های برنامه‌نویسی خارجی مانند پردازنده‌های گرافیکی، به Valhalla، برای تقویت مدل شی جاوا با اشیاء ارزش برای از بین بردن تنگناهای طولانی مدت عملکرد.

شاید به این مطالب علاقمند باشید