جاوا SE 22 پليٽ فارم جي رليز ۽ OpenJDK 22 اوپن ريفرنس تي عمل درآمد

ڇهن مهينن جي ترقي کان پوءِ، Oracle جاري ڪيو Java SE 22 (Java Platform, Standard Edition 22) پليٽ فارم، جيڪو OpenJDK اوپن سورس پروجيڪٽ کي ريفرنس تي عمل درآمد طور استعمال ڪري ٿو. ڪجھ فرسوده خصوصيتن کي ختم ڪرڻ جي استثنا سان، جاوا SE 22 جاوا پليٽ فارم جي پوئين رليز سان پسمانده مطابقت برقرار رکي ٿو- سڀ کان پهريان لکيل جاوا پروجيڪٽ اڃا به ڪم ڪندا بغير ترميم جي جڏهن نئين ورزن تحت هلندا. جاوا SE 22 (JDK، JRE، ۽ Server JRE) جون تيار ڪرڻ لاءِ تيار ڪيل عمارتون لينڪس (x86_64، AArch64)، ونڊوز (x86_64)، ۽ macOS (x86_64، AArch64) لاءِ تيار ڪيون ويون آهن. OpenJDK پروجيڪٽ پاران ترقي ڪئي وئي، جاوا 22 ريفرنس تي عمل درآمد مڪمل طور تي کليل آهي GPLv2 لائسنس جي تحت GNU ClassPath استثنات سان تجارتي پراڊڪٽس کي متحرڪ لنڪنگ جي اجازت ڏيڻ لاءِ.

Java SE 22 هڪ باقاعده سپورٽ رليز جي طور تي درجه بندي ڪئي وئي آهي ۽ ايندڙ رليز تائين تازه ڪاريون حاصل ڪرڻ جاري رکندي. لانگ ٽرم سپورٽ (LTS) برانچ Java SE 21 يا Java SE 17 هجڻ گهرجي، جيڪا 2031 ۽ 2029 تائين اپڊيٽ حاصل ڪندي، (عام طور تي 2028 ۽ 2026 تائين دستياب هوندي). جاوا SE 11 جي LTS برانچ لاءِ عوامي مدد گذريل سيپٽمبر ختم ٿي وئي، پر وڌايل مدد 2032 تائين جاري رهندي. جاوا SE 8 جي LTS برانچ لاءِ وڌايل سپورٽ 2030 تائين جاري رهندي.

اچو ته توهان کي ياد ڏياريون ته جاوا 10 جي رليز سان شروع ڪندي، پروجيڪٽ هڪ نئين ترقياتي عمل ڏانهن تبديل ڪيو، نئين رليز جي ٺهڻ لاء هڪ ننڍڙو چڪر جو مطلب. نئين ڪارڪردگي ھاڻي ھڪڙي مسلسل اپڊيٽ ٿيل ماسٽر برانچ ۾ ترقي ڪئي وئي آھي، جنھن ۾ تيار ڪيل تبديليون شامل آھن ۽ جن مان شاخون شاخون آھن ھر ڇھن مھينن ۾ نئين رليز کي مستحڪم ڪرڻ لاءِ.

جاوا 22 ۾ نيون خاصيتون شامل آهن:

  • G1 گاربيج ڪليڪٽر ۾ ريجن پننگ لاءِ سپورٽ شامل آهي، جيڪا توهان کي اجازت ڏئي ٿي عارضي طور تي جاوا آبجڪس جي جڳھ کي ميموري ۾ درست ڪرڻ لاءِ ته جيئن انهن کي گاربيج ڪليڪٽر طرفان منتقل نه ڪيو وڃي ۽ انهن شين جا حوالا محفوظ طور تي جاوا ۽ اصلي ڪوڊ جي وچ ۾ گذري وڃن. پننگ توهان کي دير سان گھٽائڻ جي اجازت ڏئي ٿي ۽ گندگي گڏ ڪرڻ کي غير فعال ڪرڻ کان پاسو ڪري ٿي جڏهن JNI (جاوا نيٽيو انٽرفيس) جي نازڪ علائقن کي مقامي ڪوڊ سان عمل ۾ آڻيندي (جڏهن ته انهن حصن کي هلائڻ دوران، JVM کي انهن سان لاڳاپيل نازڪ شيون منتقل نه ڪرڻ گهرجي نسل جي حالتن کان بچڻ لاءِ). پننگ نازڪ شين کي گندگي جي ڪليڪٽر جي نظر کان هٽائي ٿو، جيڪي اڻڄاتل علائقن کي صاف ڪرڻ جاري رکي سگهن ٿيون.
  • هڪ ابتدائي خصوصيت شامل ڪئي وئي آهي ايڪسپريس کي اجازت ڏيڻ جي اجازت ڏيڻ جي اجازت ڏيڻ لاءِ ڪنسٽرڪٽرز کي ڪال ڪرڻ کان اڳ super(...)، استعمال ڪيو ويو واضح طور تي هڪ پيرن ڪلاس ڪنسٽرڪٽر کي وراثت واري ڪلاس ڪنسٽرڪٽر کان جيڪڏهن اهي ايڪسپريشن ڪنسٽرڪٽر پاران ٺاهيل مثال جو حوالو نه ڏين. ڪلاس اوٽر { void هيلو () { System.out.println("هيلو")؛ } ڪلاس اندروني { اندروني () { هيلو ()؛ سپر ()؛ } } }
  • FFM (فارين فنڪشن ۽ ميموري) API کي مستحڪم ڪيو ويو آهي، جاوا پروگرامن کي ٻاهرين ڪوڊ ۽ ڊيٽا سان رابطي جي اجازت ڏئي ٿو ٻاهرين لائبريرين مان فنڪشن ڪال ڪندي ۽ JVM کان ٻاهر ميموري تائين رسائي، بغير JNI (Java Native Interface) استعمال ڪرڻ جي.
  • اڻ ڄاڻايل متغيرن ۽ نمونن جي ميلاپ لاءِ سپورٽ کي فعال ڪيو ويو آهي - غير استعمال ٿيل پر ضروري متغيرن ۽ نمونن جي بدران، جڏهن ڪال ڪريو، توھان ھاڻي وضاحت ڪري سگھو ٿا "_" ڪردار. // هو اسٽرنگ pageName = سوئچ (صفحو) { ڪيس GitHubIssuePage(var url، var مواد، var لنڪس، int issueNumber) -> "ISSUE #" + issueNumber؛ ... }; // ھاڻي توھان ڪري سگھو ٿا String pageName = سوئچ (صفحو) { ڪيس GitHubIssuePage(_, _, _, int issueNumber) -> "ISSUE #" + issueNumber؛ }؛
  • جاوا ڪلاس فائلن کي پارس ڪرڻ، پيدا ڪرڻ ۽ تبديل ڪرڻ لاءِ ڪلاس-فائل API جو هڪ ابتدائي عمل تجويز ڪيو ويو آهي. ClassFile cf = ClassFile.of(); ڪلاس ماڊل classModel = cf.parse(bytes)؛ byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> { for (ClassElement ce : classModel) { if (!(ce instanceof MethodModel mm && mm.methodName().stringValue(). startsWith("debug"))) { classBuilder.with(ce)؛ } } });
  • جاوا يوٽيليٽي جاوا پروگرامن کي هلائڻ جي صلاحيت مهيا ڪري ٿي، ڪيترن ئي ڪوڊ فائلن جي صورت ۾ فراهم ڪئي وئي آهي يا اڳ ۾ ٺهيل ڪلاس لائبريريون، انهن فائلن کي الڳ الڳ گڏ ڪرڻ ۽ بلڊ سسٽم کي ترتيب ڏيڻ کان سواء. نئون فيچر انهن پروگرامن کي هلائڻ آسان بڻائي ٿو جنهن ۾ مختلف ڪلاسن جا ڪوڊ الڳ الڳ فائلن ۾ ورهايا ويندا آهن. Prog.java: class Prog { public static void main(String[] args) { Helper.run(); } } Helper.java: ڪلاس مددگار { static void run() { System.out.println("هيلو!"); } }

    مثال طور، ٻن فائلن تي مشتمل پروگرام کي هلائڻ لاءِ ”Prog.java“ ۽ ”Helper.java“ هاڻي ”java Prog.java“ هلائڻ ڪافي آهي، جيڪو Prog ڪلاس کي گڏ ڪندو، مددگار طبقي جو حوالو بيان ڪندو، مددگار فائل کي ڳولھيو ۽ گڏ ڪريو. java ۽ مکيه طريقي کي ڪال ڪرڻ.

  • اسٽرنگ ٽيمپليٽس جو ٻيو ابتدائي عمل شامل ڪيو ويو، اسٽرنگ لٽريلز ۽ ٽيڪسٽ بلاڪن کان علاوه لاڳو ڪيو ويو. اسٽرنگ ٽيمپليٽس توهان کي + آپريٽر استعمال ڪرڻ کان سواءِ ٽيڪسٽ کي ڳڻپيوڪر ايڪسپريس ۽ متغير سان گڏ ڪرڻ جي اجازت ڏين ٿا. ايڪسپريس جي بدلي کي متبادل استعمال ڪندي ڪيو ويندو آهي \{..}، ۽ ​​خاص هينڊلر ڳنڍي سگهجن ٿا ته جيئن متبادل قدر جي درستي کي جانچڻ لاء. مثال طور، SQL انجڻ انهن قدرن کي چيڪ ڪري ٿو جيڪي SQL ڪوڊ ۾ تبديل ڪيا پيا وڃن ۽ واپس ڪري ٿو java.sql.Statement اعتراض آئوٽ پٽ طور، جڏهن ته JSON پروسيسر JSON متبادل جي درستي جي نگراني ڪري ٿو ۽ JsonNode واپس ڪري ٿو. اسٽرنگ سوال = "منتخب * فرد کان p ڪٿي p." + ملڪيت + " = '" + قدر + "'"؛ // هو بيان سوال = SQL." // ٿيو
  • ویکٹر API جو ستين ڏيک شامل ڪيو ويو آهي، ویکٹر جي حسابن لاءِ ڪم مهيا ڪري ٿو جيڪي x86_64 ۽ AArch64 پروسيسرز تي ویکٹر هدايتون استعمال ڪندي انجام ڏين ٿا ۽ عملن کي هڪ ئي وقت ڪيترن ئي قدرن (SIMD) تي لاڳو ٿيڻ جي اجازت ڏين ٿا. HotSpot JIT ڪمپلر ۾ مهيا ڪيل صلاحيتن جي برعڪس اسڪيلر آپريشنز جي آٽو ویکٹرائيزيشن لاءِ، نئون API ان کي ممڪن بڻائي ٿو واضح طور تي ویکٹرائيزيشن کي ڪنٽرول ڪرڻ لاءِ متوازي ڊيٽا پروسيسنگ لاءِ.
  • وڌايل اسٽريم API جو هڪ ابتدائي عمل شامل ڪيو ويو آهي جيڪو توهان جي پنهنجي وچولي عملن جي وضاحت ڪرڻ جي حمايت ڪري ٿو، جيڪي انهن صورتن ۾ ڪارائتو ٿي سگهن ٿا جتي موجوده بلٽ ان وچولي آپريشن گهربل ڊيٽا جي تبديلي لاءِ ڪافي نه آهن. اصلي هينڊلر نئين وچولي آپريشن اسٽريم:: گيدر (گئدرر) کي استعمال ڪندي ڳنڍيا ويا آهن، جيڪي صارف جي مخصوص هينڊلر کي لاڳو ڪندي اسٽريم عناصر کي پروسيس ڪري ٿو. jshell> Stream.of(1,2,3,4,5,6,7,8,9) گڏ ڪريو (نئين WindowFixed(3)).toList() $1 ==> [[1, 2, 3], [4، 5، 6]، [7، 8، 9]]
  • تجرباتي API جو هڪ ٻيو نسخو Structured Concurrency لاءِ تجويز ڪيو ويو آهي جاچ لاءِ، جيڪو هڪ ئي بلاڪ جي طور تي مختلف موضوعن ۾ جاري ڪيل ڪيترن ئي ڪمن کي پروسيس ڪندي گھڻن موضوعن واري ايپليڪيشنن جي ترقي کي آسان بڻائي ٿو.
  • واضح طور تي اعلان ڪيل طبقن ۽ "مکيه" طريقي جي اڻ ڄاتل مثالن جو هڪ ٻيو ابتدائي عمل شامل ڪيو ويو، جيڪو عوامي / جامد اعلانن سان، دليلن جي هڪ صف کي پاس ڪرڻ، ۽ طبقي اعلان سان لاڳاپيل ٻين ادارن کي ختم ڪري سگهي ٿو. // پبلڪ ڪلاس ھيو ھيلو ورلڊ { Public static void main(String[] args) { System.out.println("Hello world!"); } } // ھاڻي توھان منسوخ ڪري سگھو ٿا main() { System.out.println("هيلو، ورلڊ!")؛ }
  • اسڪوپڊ ويلز جي هڪ ٻي ڏيک تي عمل درآمد شامل ڪيو ويو، غير مٽائيندڙ ڊيٽا کي سڀني موضوعن تي حصيداري ڪرڻ جي اجازت ڏني وئي ۽ ڊيٽا کي موثر طريقي سان چائلڊ ٿريڊز جي وچ ۾ مٽايو ويو (قدر وراثت ۾ مليا آهن). اسڪوپڊ ويلز ٿريڊ-لوڪل ويريبلز ميڪانيزم کي تبديل ڪرڻ لاءِ ترقي ڪئي پئي وڃي ۽ وڌيڪ ڪارائتو آهن جڏهن تمام وڏي تعداد ۾ ورچوئل ٿريڊز (هزارين يا لکين موضوعن) کي استعمال ڪيو وڃي. Scoped Values ​​۽ thread-local variables جي وچ ۾ بنيادي فرق اهو آهي ته اڳيون هڪ ڀيرو لکيون وينديون آهن، مستقبل ۾ تبديل نه ٿيون ڪري سگھجن، ۽ صرف ٿريڊ جي عمل جي مدت تائين موجود رهنديون.
  • متوازي گند ڪچري جي ڪليڪٽر ڪارڪردگي بهتر ڪئي آهي جڏهن شين جي وڏين صفن سان ڪم ڪندي. اصلاح ان کي ممڪن بڻايو ڪجھ ٽيسٽن ۾ شين جي وڏين صفن سان ڪنهن شئي جي ڳولا شروع ڪرڻ کان پهريان دير کي گهٽائڻ لاءِ 20%.

اضافي طور تي، توهان نوٽ ڪري سگهو ٿا پليٽ فارم تي تازه ڪاري جي اشاعت هڪ گرافڪ انٽرفيس JavaFX 22 سان ايپليڪيشن ٺاهڻ لاءِ.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو