جاوا SE 17 رليز

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

Java SE 17 هڪ ڊگهي مدت جي سپورٽ (LTS) رليز جي طور تي درجه بندي ڪئي وئي آهي، جيڪا 2029 تائين تازه ڪاريون حاصل ڪندي رهندي. پوئين جاوا 16 سنگ ميل رليز لاءِ تازه ڪاريون بند ڪيون ويون آھن. جاوا 11 جي پوئين LTS برانچ 2026 تائين سپورٽ ڪئي ويندي. ايندڙ LTS رليز سيپٽمبر 2024 لاءِ شيڊول ڪئي وئي آهي. اچو ته توهان کي ياد ڏياريون ته جاوا 10 جي رليز سان شروع ڪندي، پروجيڪٽ هڪ نئين ترقياتي عمل ڏانهن تبديل ڪيو، نئين رليز جي ٺهڻ لاء هڪ ننڍڙو چڪر جو مطلب. نئين ڪارڪردگي ھاڻي ھڪڙي مسلسل اپڊيٽ ٿيل ماسٽر برانچ ۾ ترقي ڪئي وئي آھي، جنھن ۾ تيار ڪيل تبديليون شامل آھن ۽ جن مان شاخون شاخون آھن ھر ڇھن مھينن ۾ نئين رليز کي مستحڪم ڪرڻ لاءِ.

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

  • "سوئچ" جي اظهار ۾ نموني جي ميلاپ جي تجرباتي عمل جي تجويز پيش ڪئي وئي آهي، جيڪا "ڪيس" ليبلز ۾ صحيح قدر نه استعمال ڪرڻ جي اجازت ڏئي ٿي، پر لچڪدار ٽيمپليٽس هڪ ئي وقت ۾ قدرن جي هڪ سيريز کي ڍڪيندي، جنهن لاءِ اڳ ۾ استعمال ڪرڻ ضروري هو. "جيڪڏهن...ٻيو" اظهار جي زنجير. ان کان علاوه، "سوئچ" وٽ NULL قدرن کي سنڀالڻ جي صلاحيت آھي. اعتراض o = 123L؛ اسٽرنگ فارميٽ = سوئچ (o) { ڪيس انٽيجر i -> String.format("int %d"، i)؛ ڪيس ڊگهو l -> String.format("long %d", l)؛ ڪيس Double d -> String.format("double %f", d); ڪيس اسٽرنگ s -> String.format("String %s", s); ڊفالٽ -> o.toString()؛ }؛
  • سيل ٿيل طبقن ۽ انٽرفيس لاءِ مستحڪم سپورٽ، جيڪي ٻين طبقن ۽ انٽرفيس پاران استعمال نه ٿي ڪري سگھجن ته ان کي ورثي ۾ آڻڻ، وڌائڻ يا ان کي ختم ڪرڻ لاءِ. سيل ٿيل ڪلاس پڻ هڪ وڌيڪ بياني طريقو مهيا ڪن ٿا سپر ڪلاس جي استعمال کي محدود ڪرڻ لاءِ رسائي موڊيفائرز جي بجاءِ، واضح طور تي لسٽ ڪرڻ جي بنياد تي، جنهن کي وڌائڻ جي اجازت ڏني وئي آهي. پيڪيج com.example.geometry؛ عوامي مهربند ڪلاس شڪل اجازتون com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {…}
  • ویکٹر API جو هڪ ٻيو ڏيک پيش ڪيو ويو آهي، جيڪو ویکٹر جي حسابن لاءِ فنڪشن مهيا ڪري ٿو جيڪي x86_64 ۽ AArch64 پروسيسرز تي ویکٹر هدايتون استعمال ڪندي عمل ڪيا وڃن ٿا ۽ عملن کي اجازت ڏين ٿا ته هڪ ئي وقت ڪيترن ئي قدرن (SIMD) تي لاڳو ٿين. HotSpot JIT ڪمپلر ۾ مهيا ڪيل صلاحيتن جي برعڪس اسڪيلر آپريشنز جي آٽو ویکٹرائيزيشن لاءِ، نئون API ان کي ممڪن بڻائي ٿو واضح طور تي ویکٹرائيزيشن کي ڪنٽرول ڪرڻ لاءِ متوازي ڊيٽا پروسيسنگ لاءِ.
  • فارين فنڪشن ۽ ميموري API جو هڪ ڏيک شامل ڪيو ويو، جيڪو ايپليڪيشنن کي اجازت ڏئي ٿو ڪوڊ ۽ ڊيٽا سان رابطو ڪرڻ جي جاوا رن ٽائم کان ٻاهر. نئون API توهان کي غير JVM افعال کي موثر طريقي سان ڪال ڪرڻ ۽ غير JVM-منظم ٿيل ياداشت تائين رسائي جي اجازت ڏئي ٿو. مثال طور، توھان ڪال ڪري سگھو ٿا ڪم ڪارن کي ٻاهرين شيئر ڪيل لائبريرين مان ۽ رسائي جي ڊيٽا تائين رسائي بغير JNI استعمال ڪرڻ جي.
  • macOS رينڊرنگ انجڻ جيڪو طاقت ڏئي ٿو Java 2D API، جيڪو بدلي ۾ Swing API کي طاقت ڏئي ٿو، ميٽل گرافڪس API استعمال ڪرڻ لاءِ ترتيب ڏنو ويو آهي. macOS پليٽ فارم ڊفالٽ طور OpenGL استعمال ڪرڻ جاري رکي ٿو، ۽ Metal support کي فعال ڪرڻ لاءِ سيٽنگ جي ضرورت آهي "-Dsun.java2d.metal=true" ۽ گهٽ ۾ گهٽ MacOS 10.14.x هلائڻ.
  • macOS/AArch64 پليٽ فارم لاءِ پورٽ شامل ڪيو ويو (ايپل ڪمپيوٽرن تي ٻڌل نئين ايپل M1 چپس). بندرگاهه جي هڪ خاص خصوصيت W^X (Write XOR Execute) ميموري تحفظ واري ميڪانيزم لاءِ سپورٽ آهي، جنهن ۾ ميموري صفحن کي لکڻ ۽ عمل ڪرڻ لاءِ هڪ ئي وقت تائين رسائي نه ٿي سگهي. (ڪوڊ صرف لکڻ جي بند ٿيڻ کان پوءِ ئي عمل ڪري سگهجي ٿو، ۽ ميموري واري صفحي تي لکڻ ممڪن آهي صرف عمل جي بند ٿيڻ کان پوءِ).
  • فلوٽنگ پوائنٽ ايڪسپريسز لاءِ صرف سخت ايف پي سيمينٽڪس استعمال ڪرڻ لاءِ واپس ڪيو ويو. جاوا 1.2 جي رليز ٿيڻ کان پوءِ موجود ”ڊفالٽ“ سيمينٽڪس جي سپورٽ بند ڪئي وئي آهي، جنهن ۾ تمام پراڻي x87 ميٿ ڪوپروسيسر سان سسٽم تي ڪم ڪرڻ لاءِ آسانيون شامل آهن (SSE2 هدايتن جي اچڻ کان پوءِ، اضافي سيمينٽڪس جي ضرورت غائب ٿي وئي).
  • pseudorandom نمبر جنريٽرن لاءِ نوان قسم جا انٽرفيس لاڳو ڪيا ويا آهن، ۽ بي ترتيب نمبرن جي بهتر نسل لاءِ اضافي الگورتھم لاڳو ڪيا ويا آهن. ايپليڪيشنن کي pseudorandom نمبر ٺاهڻ لاءِ هڪ الگورٿم چونڊڻ جو موقعو ڏنو ويو آهي. بي ترتيب واري شئي اسٽريمز ٺاهڻ لاءِ بهتر سپورٽ.
  • سڀني JDK اندرونين جي سخت انڪپسوليشن لاڳو ڪئي وئي، استثنا سان نازڪ APIs جهڙوڪ sun.misc.Unsafe. سخت encapsulation بلاڪ ڪوڊ کان ڪوششون اندروني طبقن، طريقن، ۽ شعبن تائين رسائي حاصل ڪرڻ لاء. اڳي، "--illegal-access=permit" اختيار استعمال ڪندي سخت encapsulation موڊ کي بند ڪري سگھجي ٿو، پر ھاڻي ان کي ختم ڪيو ويو آھي. ايپليڪيشنون جيڪي اندروني طبقن، طريقن ۽ شعبن تائين رسائي جي ضرورت هونديون آهن انهن کي واضح طور تي استعمال ڪندي وضاحت ڪرڻ گهرجي --add-opens آپشن يا مينيفيسٽ فائل ۾ Add-Opens وصف.
  • ايپليڪيشنن کي ڊيٽا ڊيسيريلائيزيشن فلٽر جي وضاحت ڪرڻ جي صلاحيت ڏني وئي آهي، جيڪي مخصوص ڊيسيريلائيزيشن عملن جي بنياد تي حساس ۽ متحرڪ طور تي چونڊيل هوندا. بيان ڪيل فلٽر پوري ورچوئل مشين تي لاڳو ٿين ٿا (JVM-wide)، يعني. نه رڳو ايپليڪيشن کي ڍڪيندي، پر ايپليڪيشن ۾ استعمال ٿيندڙ ٽئين پارٽي جي لائبريرين کي پڻ.
  • Swing شامل ڪيو آهي javax.swing.filechooser.FileSystemView.getSystemIcon طريقو وڏيون آئڪن لوڊ ڪرڻ لاءِ ته جيئن اعليٰ DPI اسڪرين تي UI کي بهتر بڻائي سگهجي.
  • java.net.DatagramSocket API ڌار ڌار java.net.MulticastSocket API جي ضرورت کان سواءِ ملٽي ڪاسٽ گروپن سان ڳنڍڻ لاءِ مدد فراهم ڪري ٿي.
  • IGV (Ideal Graph Visualizer) افاديت کي بهتر ڪيو ويو آهي، HotSpot VM C2 JIT ڪمپلر ۾ وچولي ڪوڊ جي نمائندگي جي انٽرايڪٽو بصري کي مهيا ڪندي.
  • JavaDoc ۾، javac compiler سان قياس ڪندي، جڏهن هڪ غلطي آئوٽ آهي، ماخذ فائل ۾ مسئلو واري لائن جو تعداد ۽ غلطي جو مقام هاڻي اشارو ڪيو ويو آهي.
  • شامل ڪيو native.encoding ملڪيت، سسٽم جي ڪردار جي انڪوڊنگ جي نالي کي ظاهر ڪندي (UTF-8، koi8-r، cp1251، وغيره).
  • java.time.InstantSource انٽرفيس شامل ڪيو ويو آھي، ٽائيم زون جي حوالي کانسواءِ وقت جي ڦيرڦار جي اجازت ڏئي ٿو.
  • شامل ڪيو ويو java.util.HexFormat API hexadecimal نمائندگي ۾ تبديل ڪرڻ ۽ ان جي برعڪس.
  • ڪمپيلر ۾ هڪ بليڪ هول موڊ شامل ڪيو ويو آهي، جيڪو ڊيڊ-ڪوڊ جي خاتمي جي عملن کي غير فعال ڪري ٿو، جيڪو استعمال ڪري سگهجي ٿو جڏهن ڪارڪردگي جاچ ڪرڻ وقت.
  • شامل ڪيو ويو “-Xlog:async” آپشن کي رن ٽائم ڪرڻ لاءِ لاگ ان کي رڪارڊ ڪرڻ لاءِ asynchronous mode.
  • جڏهن محفوظ ڪنيڪشن قائم ڪري رهيا آهن، TLS 1.3 ڊفالٽ طور تي فعال آهي (اڳ ۾ TLS 1.2 استعمال ڪيو ويندو هو).
  • اڳوڻو اعلان ڪيل ناگزير ايپلٽ API (java.applet.Applet*, javax.swing.JApplet)، جيڪو برائوزر ۾ جاوا ايپليڪيشنن کي هلائڻ لاءِ استعمال ڪيو ويندو هو، کي هٽائڻ لاءِ سليٽ جي درجي ۾ منتقل ڪيو ويو آهي (سپورٽ ختم ٿيڻ کان پوءِ لاڳاپو وڃائي ڇڏيو جاوا پلگ ان لاءِ برائوزرز لاءِ).
  • سيڪيورٽي مئنيجر، جيڪو ڊگهي عرصي کان پنهنجي لاڳاپي کي وڃائي چڪو آهي ۽ برائوزر پلگ ان جي حمايت ختم ٿيڻ کان پوء غير دعوي نه ڪيو ويو آهي، انهن کي هٽائڻ لاء مقرر ڪيل درجي ۾ منتقل ڪيو ويو آهي.
  • RMI ايڪٽيويشن ميڪانيزم کي هٽايو ويو آهي، جيڪو پراڻو آهي، جاوا 8 ۾ هڪ اختيار جي درجي ۾ شامل ڪيو ويو آهي ۽ تقريبا ڪڏهن به جديد عمل ۾ استعمال نه ڪيو ويو آهي.
  • هڪ تجرباتي ڪمپلر جيڪو سپورٽ ڪري ٿو JIT (صرف وقت ۾) جاوا ڪوڊ جي متحرڪ تاليف لاءِ HotSpot JVM لاءِ، انهي سان گڏ ورچوئل مشين کي شروع ڪرڻ کان پهريان مشين ڪوڊ ۾ ڪلاسن جي متوقع تاليف (AOT، وقت کان اڳ) جو طريقو ، SDK مان هٽايو ويو آهي. مرتب ڪندڙ جاوا ۾ لکيو ويو ۽ گرال پروجيڪٽ جي ڪم جي بنياد تي. اهو نوٽ ڪيو وڃي ٿو ته ڪمپيلر جي سار سنڀال تمام گهڻي محنت جي ضرورت آهي، جيڪو صحيح ناهي جڏهن ڊولپرز کان ڪو به مطالبو نه آهي.

جو ذريعو: opennet.ru

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