| 👀 خبر در یک نگاه:
مایکروسافت جدیدترین بیلدهای OpenJDK خود را برای Java 25 منتشر کرده که با پشتیبانی کامل برای اجرا در پلتفرمهای مختلف از جمله ویندوز، لینوکس و macOS همراه است. این بیلدها به تیمها امکان مهاجرت به Java 25 را میدهند تا از بهبودهای فراوان این نسخه بهرهمند شوند. |
مایکروسافت اعلام کرد که نسخههای جدید OpenJDK اکنون برای Java 25 در دسترس هستند. همانطور که همیشه هدف این نسخهها ارائه ساختی باکیفیت و آماده برای محیط تولید است، باینریها در پلتفرمهای مختلف (ویندوز، لینوکس و مکاواس) آزمایش شدهاند و توسط سیستم پشتیبانی و انتشار مایکروسافت پشتیبانی میشوند.
انتشار OpenJDK
با این انتشار، مایکروسافت از توسعهدهندگان، تیمها و سازمانها دعوت میکند تا به Java 25 مهاجرت کنند و از بهبودهای متعددی که از زمان نسخه ۲۱ (آخرین نسخه LTS مایکروسافت Build of OpenJDK) اضافه شدهاند، بهرهمند شوند.
سازگاری OpenJDK
نسخه OpenJDK 25 به طور کامل برای استقرار در سرویسهای Azure Container Apps، Azure App Service، Azure Functions و Azure Kubernetes Service پشتیبانی میشود و شامل ایمیجهای کانتینری بهروز است تا تیمها بتوانند با اطمینان سیستمهای خود را برای میزبانی cloud-native مدرنسازی کنند. انتظار میرود باینریهای JDK 25 در اواخر اکتبر بهصورت تدریجی در سرویسها عرضه شوند.
نکات برجسته Java 25
این موارد بهبودهای Java 25 هستند که آماده استفاده در محیط پروداکشناند. در ادامه این بخش برخی از نکات برجسته ارائه شده؛ توجه داشته باشید که این فهرست کامل نیست و تعداد آپدیتها بیشتر از این لیست است.
فایلهای منبع فشرده و متد Main نمونهای (JEP 512)
این ویژگی Java را سبکتر و قابل دسترستر برای اسکریپتها، دموها، ابزارهای کوچک و حتی آموزش میکند. اکنون میتوان یک فایل منبع را بدون اعلام کلاس نوشت و از متد Main نمونهای به جای static استفاده کرد.
میتوان این قابلیت را بهسادگی با دستور زیر اجرا کرد:
$ java Hello.java
➕ علاوه بر این، این فایلهای منبع بهطور خودکار تمام کلاسهای موجود در ماژول java.base را وارد (import) میکنند، بنابراین نیازی به نوشتن دستور import برای کلاسهای پایهای مانند String، System یا List نیست. این ویژگی برای «single source-file programs» است.
بدنههای منعطف سازنده (Flexible Constructor Bodies – JEP 513)
قبلا Java الزام داشت که هر سازنده باید با فراخوانی super(…) یا this(…) شروع شود. با JEP 513، اکنون میتوان منطق اعتبارسنجی یا راهاندازی (setup) را قبل از فراخوانی سازنده کلاس والد اجرا کرد. این قابلیت باعث میشود بررسی پارامترها یا مقداردهی مشترک به شکل متمرکز انجام شود.
➕ اعتبارسنجی قبل از فراخوانی super(…) انجام میشود، بنابراین کد خواناتر است و نیاز به تکرار منطق بررسی پارامترها در سازندههای مختلف کاهش مییابد.
مقادیر اسکوپ شده (Scoped Values – JEP 506)
مقادیر Scoped یک جایگزین سبکتر و ساختیافتهتر برای ThreadLocal هستند. این مقادیر با همزمانی ساختیافته (Structured Concurrency) یا تردهای مجازی (Virtual Threads) به خوبی ادغام میشوند و امکان انتقال کنترلشده زمینه (Context) در زنجیره فراخوانیها را با حداقل سربار همگامسازی فراهم میکنند.
➕ در این حالت، هر تسک داخل یک زمینه ScopedValue.where(…).run(…) اجرا میشود و درون آن میتوان با امنیت کامل، بدون نیاز به بررسی null یا همگامسازی، مقدار مورد نظر را با USER.get() دریافت کرد.
API تابع استخراج کلید (Key Derivation Function API – JEP 510)
Java 25 از الگوریتمهای استاندارد استخراج کلید مبتنی بر رمز عبور (مانند PBKDF2) در APIهای رمزنگاری JDK پشتیبانی میکند و وابستگی به کتابخانههای جانبی را کاهش میدهد. این تغییر، الگوریتمهای محبوب استخراج کلید را وارد اکوسیستم JDK کرده و امنیت و قابلیت تعامل (Interoperability) را بهبود میبخشد.
➕ قبل از Java 25، برای استفاده از PBKDF2 نیاز به کتابخانههای جانبی مانند BouncyCastle بود، اما اکنون این قابلیت بهصورت داخلی در JDK وجود دارد و استخراج کلید امن مبتنی بر رمز عبور را استاندارد و قابل حمل میکند.
اعلام وارد کردن ماژولها (Module Import Declarations – JEP 511)
در برنامههای ماژولار، پیشتر لازم بود فایلهای module-info.java طولانی نوشته شود تا وابستگیها مشخص شوند. با JEP 511، فایلهای منبع Java میتوانند بهطور مستقیم واردات ماژولها را اعلام کنند.
➕ این قابلیت بهویژه برای برنامههای کوچک، اسکریپتها و آموزش مفید است.
سایر بهبودهای پایدار Java 25
- Compact Object Headers: مصرف حافظه هر شی در سیستمهای ۶۴ بیتی را کاهش میدهد. برای فعالسازی، JVM باید با گزینه -XX:+UseCompactObjectHeaders اجرا شود.
- Generational Shenandoah: جمعآوری نسلمحور را به GC شنادوآ (Shenandoah) اضافه میکند تا بازده و زمان توقف (pause time) بهبود یابد.
- JFR Cooperative Sampling و JFR Method Tracing: جزئیات و کارایی پروفایلینگ (Profiling) را افزایش میدهند.
- Ahead-of-Time Profiling APIs: قابلیتهای جدیدی برای پروفایلینگ و شبیهسازی محدودیتهای AOT فراهم میکنند.
- حذف پشتیبانی رسمی از پلتفرم ۳۲ بیتی x86: با OpenJDK 25، تنها پلتفرمهای ۶۴ بیتی پشتیبانی میشوند.
پشتیبانی و ابزارهای مایکروسافت
مایکروسافت این نسخه از OpenJDK را با پشتیبانی کامل برای استقرار در سرویسهای ابری Azure ارائه میکند تا تیمها با اطمینان برنامههای خود را به فضای ابری منتقل کنند.
افزونه GitHub Copilot App Modernization به خودکارسازی مراحل مهاجرت از جاوا ۸ یا ۱۱ به جاوا ۲۱ و ۲۵ کمک میکند. این ابزار وابستگیها را تحلیل کرده، کد را تبدیل و مشکلات امنیتی را رفع میکند تا برنامه برای میزبانی ابری آماده شود.
سخن نهایی
با در دسترس قرار گرفتن نسخه Microsoft Build of OpenJDK برای Java 25، توسعهدهندگان میتوانند Java مدرن را تجربه کنند. با افزودن قابلیتهای جدید در زبان و APIها و ویژگیهای زمان اجرا که به سمت آینده هدایت میشوند، Java روند تکاملی پایدار خود را ادامه میدهد.
منبع: devblogs.microsoft




دیدگاهتان را بنویسید