ویژگی هایی که در نسخه 19 جاوا شاهد آنها خواهیم بود
سه شنبه 27 اردیبهشت 1401نسخه 19 جاوا دارای ویژگی های بسیار زیادی است، در این مطلب قصد داریم کمی بیشتر درباره ویژگی های جدید نسخه 19 جاوا صحبت کنیم و اطلاعاتی به شما ارائه دهیم.
نسخه 19 کیت توسعه زبان برنامه نویسی جاوا در سپتامبر امسال عرضه می شود که در حال حاضر دارای 5 ویژگی اصلی و کلیدی است. در نسخه 19 جاوا 5 ویژگی پیشنهاد شده است که دارای اهمیت بسیار بیشتری نسبت به سایر ویژگی ها هستند. سه مورد از ویژگی هایی که اخیرا به نسخه 19 جاوا اضافه شده اند شامل یک تابع خارجی، یک API مموری، threadهای مجازی و قابلیت تطبیق الگو (که شامل تمام ویژگی های پیش نمایش های قبلی است) می باشد. دو ویژگی ذکر شده قبلی نیز شامل یک API برداری( که در پیش نمایش چهارم معرفی شد) و یک پورت JDK که برای اتصال به معماری Linux/RISC-V مورد استفاده قرار می گیرد هستند.
نسخه 19 جاوا به طور بالقوه می تواند میزبانی تعداد زیادی از ویژگی های مختلف را بر عهده بگیرد که این ویژگی ها می توانند شامل جنریک های جهانی تا مقادیر اشیا شوند. نکته ای که باید به آن دقت داشته باشید این است که نسخه جدید این زبان برنامه نویسی به دنبال نسخه 18 جاوا می آید که در ماه مارس 2022 عرضه شد.
امروزه توسعه دهندگان OpenJDK یک نسخه رسمی و زمان بندی شده از جاوا 19 را منتشر کرده اند که در تاریخ 20 سپتامبر به عنوان یک نسخه تولیدی عرضه می شود. در ادامه می توانید برخی از جذاب ترین ویژگی های نسخه 19 جاوا را مشاهده کنید.
تابع خارجی و API مموری
در این نسخه از جاوا شما می توانید پیش نمایشی از تابع خارجی و API مموری را مشاهده کنید که یک API را به شما معرفی می کند که با استفاده از آن یک برنامه جاوا و داده های مربوط به آن می توانند در محیطی خارج از ران تایم جاوا با یکدیگر تعامل داشته باشند. با فراخوانی کارآمد توابع خارجی (یعنی کدها خارج از ران تایم جاوا) و دسترسی ایمن به حافظه خارجی (یعنی حافظه ای که توسط JVM مدیریت نمی شود) API می تواند برنامه های جاوا را قادر سازد تا کتابخانه های و پروسه های نیتیو برای داده ها را بدون هیچ گونه خطری در زبان برنامه نویسی جاوا فراخوانی کنند. تابع خارجی و API مموری دو مورد از API هایی که پیش از این معرفی شده بودند را ترکیب کرده اند که این دو شامل foreign memory access API و foreign linker API می باشند. دقت داشته باشید که تابع خارجی و API مموری در نسخه 17 جاوا نیز به عنوان پیش نمایش معرفی شده بودند و در جاوا 18 نیز تکرار شدند. هدف از پیشنهاد چنین ویژگی هایی سادگی کدنویسی و بهبود عملکرد و افزایش امنیت است.
threadهای مجازی در نسخه 19 جاوا
در نسخه 19 جاوا شاهد پیش نمایشی از threadهای مجازی نیز خواهیم بود که در واقع threadهای سبک وزنی هستند که تلاش شما برای نوشتن، نگهداری و مشاهده برنامه ها و اپلیکیشن های همزمان را به طور چشمگیری کاهش می دهند در حالی که عملکرد و کارایی آنها را حفظ می کنند. هدف از این ویژگی ها در نسخه 19 زبان برنامه نویسی جاوا شامل فعال کردن برنامه های سروری که در حالت thread-per-request نوشته شده اند که قابل مقیاس با سخت افزارهای امروزی است می باشد. علاوه بر این باید دقت داشته باشید این ویژگی می تواند از کدهای موجود در java.lang Thread API نیز استفاده کند تا با Threadهای مجازی تعامل داشته باشند و با آن سازگار شوند.
نکاتی درباره threadهای در نسخه 19 جاوا
دقت داشته باشید که این سازگاری در عین حال با کمترین میزان تغییرات می تواند قابلیت تعمیر کدها را فعال کرده و به شما اجازه دهد تا به راحتی هرچه تمام کدهای خود را دیباگ کنید. یکی از مهمترین اهدافی که در ارائه این ویژگی در نسخه 19 جاوا وجود داشت این بود که مدل همزمانی پایه در زبان برنامه نویسی جاوا را تغییر دهند و یک ساختار داده موازی جدید را که تا به حال در این زبان وجود نداشت به آن اضافه کنند. علاوه بر این حذف پیاده سازی سنتی thread ها و همینطور سادگی در انتقال اپلیکیشن ها به threadهای مجازی از دیگر اهداف این ویژگی قدرتمند در زبان برنامه نویسی جاوا است.
قابلیت تطبیق الگو در نسخه جدید جاوا
سومین پیش نمایش از قابلیت تطبیق الگو مربوط به دستورات سوئیچ است که در واقع قابلیت های تطبیق الگو را به دستورات سوئیچ توسعه داده است. این قابلیت به عبارات اجازه می دهد تا در برابر برخی از الگوهای خاص مورد بررسی و تست قرار بگیرند که هر یک از این الگوها ممکن است دارای یک اکشن خاص باشند. این ویژگی باعث می شود تا کوئری های داده پیچیده را بتوانید به راحتی و با امنیت بالا پردازش کنید. این قابلیت پیش از این در نسخه های 17 و 18 زبان برنامه نویسی جاوا به عنوان پیش نمایش معرفی شده بود. در پیش نمایش سوم که در نسخه 19 جاوا منتشر شده است اصلاحاتی از جمله جایگزین کردن الگوهای محافظت شده با clauseها در بلاک های دستور سوئیچ را اضافه کرده است. هدف از اضافه شدن این ویژگی توسعه و گسترش قابلیت بیان و کاربردی بودن عبارت ها و دستورات سوئیچ است که این کار از طریق اجازه دادن به الگوها برای ظاهر شدن به عنوان لیبل یا برچسب بخش case در دستورات سوئیچ قابل انجام است. این کار باعث می شود تا ایمنی و امنیت دستورات سوئیچ نیز به میزان زیادی افزایش پیدا کند و در زمان اجرا عبارت ها بدون هیچ گونه تغییری می توانند به کامپایل شدن ادامه دهند و با معنایی یکسان اجرا شوند.
API برداری در نسخه 19 جاوا
چهارمین مورد در نسخه 19 جاوا مربوط به API برداری است که محاسبات برداری را برای شما ساده تر می کند و می تواند دستورالعمل های برداری را به شکل بهینه تری اجرا کند. علاوه بر این باید دقت داشته باشید که این دستورالعمل ها روی معماری های جدید CPU اجرا می شوند و همین عامل نیز باعث می شود تا عملکرد آنها نسبت به محاسبات اسکالر بسیار بهتر باشد. توسعه دهندگانی که از این API در زبان برنامه نویسی جاوا استفاده می کنند در واقع راهی را به دست می آورند که با استفاده از آن بتوانند الگوریتم های برداری پیچیده را در زبان جاوا بنویسند. این کار نیز با استفاده از HotSpot auto-vectorizer صورت می گیرد که دارای یک مدل کاربر است که عملیات های مبتنی بر بردار را به میزان زیادی قدرتمندتر و بهینه تر می کند.
vector API پیش از این در نسخه های 16، 17 و 18 جاوا نیز به عنوان پیش نمایش معرفی شده بود که در حال حاضر در نسخه 19 نیز شاهد آن هستیم.
نکاتی مهم درباره API برداری در نسخه 19 جاوا
بهبودهایی که در این API پیشنهاد شده باعث شده تا این API دارای قدرت بیشتری در نسخه 19 جاوا باشد. از جمله این بهبودها می توان به بهینه سازی هایی در بارگذاری و ذخیره سازی بردارها در MemorySegments اشاره کرد که این کار از طریق یک تابع خارجی انجام می شود. در نسخه 19 جاوا شاهد آن هستیم که دو عملیات برداری cross-lane نیز اضافه شده اند که با یکدیگر فشرده شده و گسترش پیدا می کنند که این کار از طریق یک vector mask compress صورت می گیرد. عملیات compress vector می تواند خطوط یک بردار منبع را که توسط mask انتخاب شده اند به یک بردار نتیجه یا مقصد نگاشت می کند و این در حالی است که عملیات expand دقیقا عکس این کار را انجام می دهد. عملیات compress در فیلتر کردن نتایج کوئری می تواند بسیار مفید و کاربردی باشد.
عملیات های integral lanewide در نسخه جدید جاوا
عملیات های integral lanewide نیز در نسخه جدید زبان برنامه نویسی جاوا به میزان زیادی گسترش پیدا کرده اند و شامل عملیات هایی مانند شمارش، تعداد اعداد موجود در بیت های یکتایی، معکوس کردن ترتیب بیت ها و همینطور فشرده سازی و گسترش بیت ها می باشد. هدف اصلی از ایجاد این API شامل مختصر و مفید بوده محاسبات برداری می باشد. علاوه بر این باید دقت داشته باشید که این API می تواند باعث بهینه سازی عملکرد محاسبات شود.
پورت Linux/RISC-V
با استفاده از پورت Linux/RISC-V نسخه 19 جاوا از یک مجموعه از دستورالعمل های سخت افزاری پشتیبانی خواهد کرد که قبلا این دستورالعمل ها توسط طیف گسترده ای از زنجیره های ابزارهای مربوط به این زبان پشتیبانی میشد. RISC-V در واقع یک خانواده از ISAهای مرتبط است. پورت Linux/RISC-V از پیکربندی RV64GV مربوط به RISC-V نیز پشتیبانی کرده که یک ISA 64 بیتی است که دستورالعمل های برداری را به شما ارائه می دهد. توسعه دهندگان جاوا ممکن است پیکربندی های RISC-V دیگری را نیز در نسخه های آینده جاوا منتشر کنند.
نکاتی مهم درباره این پورت در نسخه 19 جاوا
این پورت می تواند از گزینه های HotSpot VM نیز پشتیبانی کند که شامل یک مفسر قالب، C1 (client) JIT compiler، C2 (server) JIT compiler و ... می باشد. پورت واقعی تقریبا کامل شده است و پیش بینی می شود که در نسخه های آینده جاوا به طور قطعی به این زبان برنامه نویسی اضافه می شود. شاید بتوان اصلی ترین هدف از این پورت را ادغام این پورت به مخزن اصلی JDK دانست.
- Java
- 2k بازدید
- 1 تشکر