جاوا 27 بزرگ می شود، انتخاب های بهتری انجام می دهد
بهبود در جمعآوری زباله JDK، اندازههای هدر، امنیت دادهها و پشتیبانی از کلید کوانتومی، همگی باید اصطکاک توسعهدهنده را به حداقل برسانند.
اگر یکی از نشانه های بلوغ انتخاب های بهتری باشد، جاوا در نسخه 27 خود که سه شنبه منتشر شد کمی رشد کرده است. آرویند کومار، مهندس بکاند، در سایت آموزشی Codefarm خود نوشت: «JDK 27 نسخهای است که جاوا از شما نمیخواهد پیشفرضهای خوب را انتخاب کنید و به سادگی آنها را روشن میکند». تنظیمات پیشفرض بهتر ممکن است راهگشا نباشد، اما زندگی را برای توسعهدهندگان آسانتر میکند، زیرا به این معناست که کدنویسها چیزهای کمتری برای تغییر دارند. همچنین کاربران نباید با ویژگی های جدید دست و پنجه نرم کنند، به خصوص اگر مورد علاقه نیستند. جاوا 27 در هر دو مورد موفق است.
JDK 27 که بر اساس مشخصات جاوا 27 تکمیل شده ساخته شده است، نسخه کوتاه مدتی است که پشتیبانی طولانی مدت دریافت نمی کند. این شامل چهار ویژگی جدید یا JEP (پیشنهادات ارتقای JDK) است که آماده تولید هستند، که کومار اشاره میکند که هیچ کدام نیاز به تغییر فوری در کد توسعهدهندگان ندارند. این نسخه شامل پنج ویژگی جدید دیگر است که به عنوان پیش نمایش برای انکوباسیون بیشتر ارائه شده است. هدرها فشرده می شوند در جاوا 27، هدرهای فشرده اکنون به طور پیش فرض در دسترس هستند (JEP 534). تا به حال، توسعه دهنده باید آنها را با یک پرچم تنظیم می کرد. در حال حاضر، هیچ اقدام اضافی مورد نیاز است.
به طور سنتی، یک هدر شی جاوا 96 بیت را در یک پشته حافظه اشغال می کند، که بیشتر آن به ندرت استفاده می شود. با جاوا 27، پیش فرض یک هدر 64 بیتی است. معلوم شد هدر فضای خالی زیادی دارد. چهار بایت تغییری برای نگرانی به نظر نمی رسد، اما در میلیون ها شی زنده می تواند منجر به صرفه جویی قابل توجهی در حافظه شود. اجرا بر روی استاندارد بنچمارک جاوا SPECjbb2015 نشان داد که تغییر روی یک هدر 64 بیتی منجر به 22 درصد فضای کمتر و 8 درصد زمان CPU کمتر می شود. به نظر می رسد هدرهای کوچکتر در تولید کار می کنند.
آمازون در حال حاضر صدها سرویس تولیدی را با هدرهای کوچک شیء فشرده اجرا می کند. SAP قبلا به عنوان پیشفرض برای فورک OpenJDK این شرکت، SapMachine، به هدرهای شی فشرده تبدیل شده است. حتی در اندازه کوچکتر، این طرحبندی جدید فضایی را برای پروژههای آینده محفوظ میدارد، مانند 4 بیت برای Project Valhalla که هدف آن آوردن اشیاء با ارزش به جاوا است. ناظران جاوا نمیخواهند طرحبندی هدر 96 بیتی را، حداقل در حال حاضر، کنار بگذارند. اما اکنون توسعه دهندگان اگر می خواهند از آن استفاده کنند باید پرچمی را بلند کنند.
رمزنگاری ضد کوانتومی با نگاهی به آینده برای ورود محاسبات کوانتومی، نگهبانان جاوا «تبادل کلید ترکیبی پس کوانتومی» را بر اساس TLS 1.3 (JEP 527) پیادهسازی کردهاند. جاوا اکنون سه روش ترکیبی جدید برای تبادل کلید بین کلاینتهای جاوا، سرورها و نقاط پایانی خارجی سازگار با TLS ارائه میکند. هر یک از این رویکردها، که گزینههایی در کنار پروتکلهای تبادل کلید موجود هستند، یک الگوریتم سنتی منحنی بیضوی Diffie-Hellman (ECDHE) را با الگوریتم تبادل کلید پس کوانتومی NIST ML-KEM ترکیب میکنند.
ایده این است که از هم اکنون برای حملات کوانتومی آینده آماده شویم، زمانی که کلیدهای مبادلات کلید سنتی به راحتی با محاسبات کوانتومی شکسته شوند. مهاجمان مخرب در حال حاضر جلسات رمزگذاری شده را با طرز فکر "درو کنید، بعدا رمزگشایی کنید" ذخیره می کنند. با بیرون آوردن سطل زباله، JDK 27 به خوبی جمع آوری زباله های خود را مرتب می کند، ابزارهایی که بی سر و صدا حافظه استفاده نشده را شناسایی و بازیابی می کنند. سطل زباله پیشفرض برای محیطهای محدود - سریال - را به جمعآوری زباله پیشفرض، به نام Garbage-First یا G1 تغییر داد.
زباله گردها توسعه دهندگان را از انجام دستی این کار و به طور بالقوه خراب کردن آن (معمولا) راحت می کنند. اما با هزینه همراه است. مدیریت تهاجمی حافظه باعث افزایش هزینه های اضافی می شود. بنابراین جمعآوریکنندههای زباله مختلف ساخته شدهاند تا الزامات عملکرد متفاوتی را در مورد توان عملیاتی، تأخیر، ردپای و زمان راهاندازی برآورده کنند. روسای جاوا استدلال میکنند که پیشرفتهای اخیر عملکرد در G1 بهطور مؤثر Serial GC را غیرضروری کرده است.
Serial یک برنامه تک رشته ای بود که برای اجرا بر روی یک CPU ساخته شده بود و آن را برای محیط های جاسازی شده و سایر محیط های دارای منابع محدود (به ویژه با کلاینت هایی با حافظه کمتر از 1792 مگابایت) مناسب می کرد. نگهبانان در JEP 523 می نویسند: به لطف بهینه سازی در طول سال ها، "عملکرد G1 اکنون برای جایگزینی سریال در همه موقعیت هایی که JVM قبلا سریال را انتخاب می کرد کافی است." با این تغییر، توسعه دهندگان تعبیه شده دیگر نیازی به اضافه کردن پرچم های واضح به خط فرمان در هنگام راه اندازی نخواهند داشت.
حتی بهتر از آن، مواردی را که G1 باید در وهله اول تخصیص داده می شد، مانند برنامه های کانتینری اصلاح می کند. اگور پیشی، نویسنده فنی PVS-Studio در پستی نوشت: «تعدادی از برنامههای جاوای کانتینری در تمام این مدت در [سریال] اجرا شدهاند، حتی اگر هیچکس آگاهانه این تصمیم را نگرفت. این جابجایی همچنین به یکپارچه سازی جمع آوری داده های تله متری کمک می کند. آماده سازی جاوا 28 ویژگی آماده تولید باقیمانده ویرایش داده های در فرآیند است (JEP 536)، که در آن ضبط پرواز جاوا قبل از نهایی شدن ضبط، تمام جزئیات حساس را حذف می کند.
پیش نمایش هایی که با این نسخه ارائه می شود شامل ثابت های تنبل (JEP 531)، انواع الگوی اولیه (JEP 532)، همزمانی ساختاریافته (JEP 533)، و مجموعه ای از اشیاء رمزنگاری (JEP 538) می باشد. همچنین یک API برداری (JEP 537) هنوز در مرحله انکوباسیون وجود دارد. ما همه اینها را دوباره خواهیم دید، امیدوارم به شکلی صیقلی تر، در نسخه بعدی. کار برای جاوا 28 در حال انجام است که قرار است در مارس 2027 انجام شود: انتظار یک API ساده JSON را به عنوان یک پروژه جوجه کشی و همچنین یک جمع آوری زباله Shenandoah اصلاح شده داشته باشید. ®
متن اصلی (انگلیسی)
Java 27 grows up, makes better choices
Improvements in JDK garbage collection, header sizes, data security and quantum key support all should minimize developer friction