JavaRush /جاوا بلاگ /Random-SD /جاوا 14: نئون ڇا آهي؟

جاوا 14: نئون ڇا آهي؟

گروپ ۾ شايع ٿيل
دنيا جا مسئلا دنيا جا مسئلا آهن، ۽ نئين جاوا شيڊول تي آهي. اهو آهي، بلڪل هر ڇهن مهينن ۾ هڪ ڀيرو. جاوا 14 جو رليز ورزن 17 مارچ تي جاري ڪيو ويو، ۽ ڊولپرز جي مقصد لاءِ ٻولي ۾ ڪيتريون ئي دلچسپ جدتون متعارف ڪرايون ويون. انهن ۾ شامل آهن رڪارڊجاوا 14: نئون ڇا آهي؟  - 1 ڪي ورڊ لاءِ تجرباتي سپورٽ ، ” انسٽانس آف “ آپريٽر ۾ نمونن جي ميلاپ لاءِ سپورٽ، وڌيڪ صارف دوست NullPointerExceptions ، وڌايل ”پريويونگ“ ٽيڪسٽ بلاڪز ، هڪ اپڊيٽ ڊيفالٽ سوئچ ، ۽ گهڻو ڪجهه. اچو ته توهان کي ياد ڏياريون ته جاوا ۾ سڀ جدت واڌ جي تجويزن سان شروع ٿينديون آهن ( JEP، Java Enhancement Proposals ). ڊولپرز تبديلين جي تجويز پيش ڪن ٿا، انهن جو جائزو ورتو ويو آهي "سرڪاري" جاوا والدين، ۽ پوء انهن مان ڪجهه تبديلين کي قبول ڪيو ويو آهي، جنهن کان پوء اهي JDK جو حصو بڻجي ويندا آهن. ۽ هاڻي - ترتيب ۾ هر شيء جي باري ۾.

JEP 359: رڪارڊ

ريڪارڊ، رڪارڊس جي نالي سان پڻ سڃاتل آهن، JDK 14 لاءِ پريويو موڊ ۾ موجود آهن، ۽ اهو جاوا لاءِ مڪمل طور تي نئون آهي. حقيقت ۾، اسان وٽ اسان کان اڳ هڪ نئين قسم آهي جيڪا والهلا پروجيڪٽ جي دوران ترقي ڪئي وئي هئي . رڪارڊ ڳڻپيوڪر سان ملندڙ جلندڙ آهن ۽ توهان کي توهان جي ڪوڊ کي آسان ڪرڻ جي اجازت ڏين ٿا. لازمي طور تي، اهي طبقن کي تبديل ڪن ٿا جن وٽ رياست آهي پر ڪو به رويو ناهي. سادي لفظ ۾، اتي فيلڊ آهن، نه طريقا. ڪلاسن جي صورت ۾، اسان کي ڪڏهن ڪڏهن تمام گهڻو بار بار ڪوڊ لکڻو پوندو آهي جيڪو هميشه ضروري نه هوندو آهي: constructors, accessors, equals(), hashCode(), toString(), وغيره. هن بار بار ڪوڊ کان بچڻ لاءِ، جاوا پلان رڪارڊ استعمال ڪرڻ لاء. هتي کلاسي نسخو آهي:
final class Triangle {
 	public final int x;
public final int y;
public final int z;

    public Triangle(int x, int y, int z) {
         this.x = x;
         this.y = y;
    this.z = z;
    }
    // equals, hashCode, toString
اچو ته جاوا 14 ڏانهن وڃو ۽ رڪارڊ استعمال ڪريو:
public record Triangle(int x, int y, int z){}
اهو ئي سڀ ڪجهه آهي. مهرباني ڪري نوٽ ڪريو ته رڪارڊنگ في الحال پريويو فارم ۾ موجود آهي، تنهن ڪري انهن کي عملي طور تي آزمائي توهان کي jdk14 ڊائون لوڊ ڪرڻ جي ضرورت آهي ۽ حڪم داخل ڪريو:
javac —enable-preview —release 14 Triangle.java
رڪارڊ ڪلاس آھن، جيتوڻيڪ حدن سان. اهي ٻين طبقن کي وڌائي نٿا سگهن يا شعبن جو اعلان ڪري سگهن ٿا (سواءِ پرائيويٽ فائنل جيڪي رياستي اعلان جي اجزاء سان ملن ٿا). رڪارڊ واضح طور تي حتمي آهن ۽ خلاصا نٿا ٿي سگهن. رڪارڊز باقاعده طبقن کان مختلف آهن ته اهي پنهنجي API کي ان جي نمائندگي کان الڳ نٿا ڪري سگهن. پر آزادي جي نقصان جي تلافي ڪئي وئي آهي وڌايل درستگي سان. رڪارڊ جا حصا پڻ واضح طور تي حتمي آهن.

JEP 305: نمونن جي ميلاپ لاءِ مثال (پريويو)

پيٽرن ميچنگ فيچر ، جاوا 14 ۾ پريويو ۾ متعارف ڪرايو ويو آهي، ڪنهن شئي جي قسم کي جانچڻ ۽ ان جي بدلي کي آپريٽر جي مثال ۾ گڏ ڪرڻ لاءِ ٺهيل آهي. ٻين لفظن ۾، جاوا 14 کان اڳ اتي هجي ها، مثال طور، هيٺ ڏنل ڪوڊ:
Object object = Violin;

if (object instanceof Instrument) {
    Instrument instrument = (Instrument) object;
    System.out.println(instrument.getMaster());
}
جيئن توهان ڏسي سگهو ٿا، اسان کي لازمي طور تي اعتراض کي ڪلاس ڏانهن اڇلائڻ گهرجي جنهن جا طريقا اسان استعمال ڪرڻ چاهيون ٿا. ھاڻي جاوا 14 ۽ ڳنڍيل پيٽرن ميچنگ فيچر توھان کي ھيٺ ڏنل ڪوڊ کي گھٽائڻ جي اجازت ڏئي ٿو:
Object object = Violin;

if (object instanceof Instrument instrument){
    System.out.println(instrument.getMaster());
}

JEP 343: پيڪيجنگ جو اوزار (Incubator)

JDK 8 وٽ JavaFX لاءِ ٺهيل جاوا پيڪيجر جو اوزار هو . جڏهن ته، JDK 11 جي ڇڏڻ سان جاوا کان JavaFX جي جدائي جي پٺيان، مشهور جاوا پيڪيجر هاڻي موجود نه هو. Javapackager هڪ پيڪيجنگ اوزار هو. اهو اجازت ڏئي ٿو جاوا ايپليڪيشنن کي پيڪيج ڪرڻ جي اهڙي طريقي سان ته جيئن اهي نصب ٿي سگهن ٻين سڀني "عام" پروگرامن وانگر. مثال طور، ونڊوز استعمال ڪندڙن لاءِ exe فائلون ٺاهيون ۽ انسان وانگر جاوا ايپليڪيشن لانچ ڪريو - ڊبل ڪلڪ سان. يقينن، اهڙي اوزار جي سخت کوٽ آهي، تنهن ڪري JEP 343 هڪ نئون اوزار متعارف ڪرايو، jpackage ، جيڪو هڪ جاوا ايپليڪيشن کي هڪ پليٽ فارم-مخصوص پيڪيج ۾ پيڪيج ڪري ٿو جنهن ۾ تمام ضروري انحصار شامل آهن. هڪ مخصوص پليٽ فارم لاءِ سپورٽ ٿيل پيڪيج فارميٽ:
  • لينڪس: ڊيب ۽ آر پي ايم
  • macOS: pkg ۽ dmg
  • ونڊوز: MSI ۽ EXE

JEP 345: NUMA-Aware Memory Allocation for G1

JEP 345 صرف NUMA (غير يونيفارم ميموري رسائي) سپورٽ کي لاڳو ڪرڻ لاءِ ڪم ڪري ٿو. هي هيٽروجنيئس ميموري رسائي آرڪيٽيڪچرز آهن، هڪ مائڪرو پروسيسر ڪلستر کي هڪ ملٽي پروسيسر سسٽم ۾ قائم ڪرڻ جو هڪ طريقو جنهن ۾ ميموري کي مقامي طور تي ورهائي سگهجي ٿو: هر پروسيسر ڪور کي ٿوري مقدار ۾ مقامي ميموري ملي ٿي، جڏهن ته ٻيا ڪور ان تائين پهچن ٿا. JEP 345 منصوبابندي ڪري ٿو G1 ڪچري جي ڪليڪٽر کي ليس ڪرڻ لاءِ اهڙن فن تعمير کي فائدو ڏيڻ لاءِ. ٻين شين مان، هي طريقو تمام طاقتور مشينن تي ڪارڪردگي بهتر ڪرڻ ۾ مدد ڪري ٿو.

JEP 349: JFR ايونٽ اسٽريمنگ

Java Flight Recorder (JFR) هاڻي OpenJDK جو حصو آهي ۽ تنهن ڪري آزاد طور تي دستياب آهي. JDK 14 JFR واقعن جي اڏامندڙ ٽريڪنگ (JDK فلائيٽ رڪارڊر) لاءِ هڪ API شامل ڪري ٿو، خاص طور تي فعال ۽ غير فعال ايپليڪيشنن جي مسلسل نگراني کي منظم ڪرڻ لاءِ. ساڳيا واقعا رڪارڊ ڪيا ويا آهن نان اسٽريمنگ آپشن لاءِ، 1٪ کان گهٽ جي مٿي سان. هن طريقي سان واقعا هڪ ئي وقت نشر ڪيا ويندا جيئن نان اسٽريمنگ آپشن. بهرحال، JEP 349 کي لازمي طور تي لاڳاپيل صارف لاءِ هم وقت ساز ڪال بڪ جي اجازت نه ڏيڻ گهرجي. جيتوڻيڪ وچولي ياداشت ۾ ذخيرو ٿيل رڪارڊ مان ڊيٽا تائين رسائي نه هجڻ گهرجي. ٽيڪنيڪل طور تي، jdk.jfr.consumer پيڪيج ۾ jdk.jfr ماڊل کي ڪارڪردگي سان وڌايو ويندو واقعن تائين غير مطابقت واري رسائي لاءِ.

JEP 352: نان وولٽائل ميپڊ بائيٽ بفرز

جئين توھان ڄاڻو ٿا، جاوا NIO (نئون IO) فائل API جي چوڌاري JDK 1.4 کان وٺي آھي، ۽ پوء ھڪڙو نئون واڌارو متعارف ڪرايو ويو رستو سڏيو ويندو آھي. پاٿ ھڪڙو انٽرفيس آھي جيڪو java.io.File ڪلاس کي ھڪڙي فائل يا ڊاريڪٽري جي نمائندگي طور تبديل ڪري ٿو جڏھن اسان جاوا NIO ۾ ڪم ڪندا آھيون. JEP 352 وڌايو MappedByteBuffer فائل ڊيٽا جو هڪ حصو لوڊ ڪرڻ لاءِ غير غير مستحڪم ميموري (NVM) ۾. هي ڪمپيوٽر ميموري، جنهن ۾ ڊيٽا گم نه ٿيندي جيتوڻيڪ پاور بند (اڪثر ڪري صرف پڙهڻ لاءِ ميموري سڏيو ويندو آهي)، ڊيٽا کي مستقل طور تي ذخيرو ڪرڻ لاءِ استعمال ڪيو ويندو آهي. هي Java واڌارو پروپوزل JDK API لاءِ هڪ نئون ماڊل ۽ ڪلاس مهيا ڪري ٿو: jdk.nio.mapmode ماڊل، جيڪو NVM جي حوالي سان ميپ ٿيل بائيٽ بفرز (MappedByteBuffer) ٺاهڻ لاءِ نوان موڊس (READ_ONLY_SYNC, WRITE_ONLY_SYNC) پيش ڪري ٿو.

JEP 358: مددگار NullPointerExceptions

NullPointerExceptions ھاڻي وڌيڪ پروگرامر دوست ھوندا. ان لحاظ کان ته استثناءَ جو بيان اڳي کان گهڻو وڌيڪ معلوماتي هوندو. اهو ئي سبب آهي ته JVM کي سيکاريو ويو آهي وڌيڪ صحيح طريقي سان تجزيو ڪرڻ لاءِ پروگرام bytecode هدايتون، ۽ اهو ظاهر ڪري سگهي ٿو ته ڪهڙو متغير صفر قدر ڏانهن وڃي ٿو. اچو ته چئو ته اسان وٽ ڪوڊ آهي:
a.getMessage().getUserInfo().getName()
ڪنهن به جديد جاوا ۾، اسان کي معمولي غلطي لاگ ملنداسين، جيڪو ان سوال جو جواب نٿو ڏئي ته ڪير بلڪل null آهي:
Exception in thread "main" java.lang.NullPointerException
	at Main.main(Main.java:12)
۽ ھتي آھي ڇا جاوا 14 توھان کي ڏيندو جيڪڏھن توھان فيصلو ڪيو ته ھن ڏيک واري خصوصيت کي آزمائي:
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "UserInfo().getName()" because the return value of "Message().getUserInfo()" is null
	at Main.main(Main.java:12)
هي زنجير گهڻو وڌيڪ سمجھڻ وارو آهي ۽ توهان کي غلطي کي تيزيء سان حل ڪرڻ جي اجازت ڏئي ٿو.

JEP 361: ايڪسپريس کي تبديل ڪريو (معياري)

اپڊيٽ ٿيل سوئچ آپريٽر اڳوڻي جاوا 12 ۽ 13 ۾ موجود هو، پر صرف هڪ ڏيک خصوصيت جي طور تي، اهو آهي، اهو ڊفالٽ طرفان فعال نه ڪيو ويو آهي. هاڻي JDK 14 ۾ هر شي دٻي مان ڪم ڪري ٿي. Java 14 متعارف ڪرايو سوئچ بلاڪ جو نئون آسان فارم ڪيس L -> ... ليبل سان. نئون فارم ڪجهه ڪيسن ۾ ڪوڊ کي آسان بڻائي ٿو. هتي ڪجهه مثال آهن. اچو ته اسان وٽ ھڪڙو اينيم آھي جيڪو بيان ڪري ٿو هفتي جا ڏينھن. اسان کلاسک ڪوڊ لکي سگھون ٿا (پري جاوا 14):
switch (day) {
    case MONDAY:
    case FRIDAY:
    case SUNDAY:
        System.out.println(6);
        break;
    case TUESDAY:
        System.out.println(7);
        break;
    case THURSDAY:
    case SATURDAY:
        System.out.println(8);
        break;
    case WEDNESDAY:
        System.out.println(9);
        break;
}
۽ هتي جاوا 14 استعمال ڪندي هڪ اختيار آهي:
switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
    case TUESDAY                -> System.out.println(7);
    case THURSDAY, SATURDAY     -> System.out.println(8);
    case WEDNESDAY              -> System.out.println(9);
}
توھان پڻ لکي سگھوٿا ملٽي لائين بلاڪ ۽ ھڪ قدر واپس آڻيو نئين پيداوار جي لفظ سان:
int result = switch (s) {
    case "Working from Home" -> 1;
    case "Working from Office" -> 2;
    default    -> {
        System.out.println("Neither Home nor Office… Cafe? Car? Park?...");
        yield 0;
    }
};
نئين سوئچ استعمال ڪرڻ وقت ذهن ۾ رکڻ لاءِ ڪجھ وڌيڪ اهم شيون آهن . خاص طور تي، توهان کي ياد رکڻ جي ضرورت آهي ته اختيارن کي مڪمل هجڻ گهرجي. اھو آھي، سڀني ممڪن قدرن لاء ھڪڙو لاڳاپيل سوئچ ليبل ھئڻ گھرجي. جيئن ته yield هاڻي هڪ لفظ آهي، جاوا 14 ۾ yield نالي هڪ ڪلاس ممڪن آهي. عام طور تي، جيڪڏهن توهان سکڻ چاهيو ٿا ته اپ ڊيٽ ٿيل سوئچ ڪيئن استعمال ڪجي، ته وڃو JEP 361 ۽ پڙهو. اتي تمام دلچسپ معلومات آهي.

JEP 362: سولاريس ۽ اسپارڪ بندرگاهن کي ختم ڪريو

اهو ممڪن ناهي ته اسان جي ڪيترن ئي پڙهندڙن کي سولاريس آپريٽنگ سسٽم بابت ياد هجي . هي UNIX تي ٻڌل آپريٽنگ سسٽم، جاوا جي والدين طرفان ٺاهيل، سن مائڪرو سسٽم، بنيادي طور تي استعمال ڪيو ويو سرورز لاءِ SPARC آرڪيٽيڪچر تي... گھڻا اڻڄاتل لفظ في چورس سينٽي ميٽر؟ ڪابه وڏي ڳالهه ناهي: JEP 362 شمسي / SPARC، Solaris / x64، ۽ لينڪس / SPARC پليٽ فارمن جي حمايت ختم ڪري ٿي. اهو آهي، انهن جي بندرگاهن کي هاڻي ختم ڪيو ويو آهي، ۽ مستقبل ۾ اهي گهڻو ڪري OpenJDK مان هٽايو ويندو. بهرحال، جاوا جا پراڻا ورجن (JDK 14 کان اڳ) Solaris/SPARC، Solaris/x64 ۽ Linux/SPARC بندرگاهن کي بغير ترميم جي ڪم ڪرڻ گهرجي. جيڪڏهن توهان تاريخ جا شوقين آهيو ۽ ماضيءَ جي دور جي ٽيڪنالاجيز ۾ دلچسپي رکو ٿا، وڪيپيڊيا تي وڃو ۽ SPARС آرڪيٽيڪچر بابت پڙهو .

JEP 363: سمورو مارڪ سوائپ (CMS) گاربيج ڪليڪٽر کي هٽايو

CMS گاربيج ڪليڪٽر (Concurrent Mark Sweep) کي هٽائڻ لاءِ نشانو بڻايو ويو آهي ڇاڪاڻ ته ٻه سال اڳ ان کي پراڻو نشان لڳايو ويو هو ۽ ان کي برقرار نه رکيو ويو هو. بهرحال، CMS GC استعمال ڪندي جاوا جي پراڻن ورزن جا استعمال ڪندڙ سانس خارج ڪري سگھن ٿا - ھن JEP جو مقصد بلڊر کي اڳوڻي JDK رليز کان هٽائڻ نه آھي. ان کان علاوه، ParallelScavenge ۽ SerialOld گاربيج ڪليڪشن الگورتھم جو ميلاپ ("-XX:+UseParallelGC -XX:-UseParallelOldGC" اختيارن سان ھلندڙ) کي رد ڪيو ويو آھي.

JEP 364: ZGC macOS تي ۽ JEP 365: ZGC ونڊوز تي

اتي ھڪڙو دلچسپ ڪچرو ڪليڪٽر آھي جنھن کي Z Garbage Collector (ZGC) سڏيو ويندو آھي . اهو غير فعال موڊ ۾ ڪم ڪري ٿو، ۽ ڪچرو گڏ ڪرڻ جي ڪري دير کي گهٽائڻ جي ڪوشش ڪري ٿو: بند ٿيڻ جو وقت جڏهن ZGC استعمال ڪندي 10 ms کان وڌيڪ نه آهي. اهو ڪم ڪري سگھي ٿو ننڍڙن ڍڳن ۽ وشال وارن سان (جيڪي گھڻا ٽيرا بائيٽ کڻن ٿا). JEP 364 ۽ JEP 365 عملي طور تي جڙيل آهن. JEP 364 Z Garbage ڪليڪٽر کي MacOS تي آڻي ٿو. JEP جو حصو غير استعمال ٿيل ڊيوائس ميموري کي آزاد ڪرڻ لاءِ ڪليڪٽر جي ڪارڪردگي کي به بيان ڪري ٿو، جيئن JEP 351 ۾ بيان ڪيو ويو آهي ، اهو جاوا 13 کان ٿي رهيو آهي. macOS تي ZGC عملدرآمد جا ٻه حصا آهن:
  • macOS تي ملٽي ميپنگ ميموري سپورٽ
  • مسلسل ميموري رزرويشن لاءِ ZGC سپورٽ
JEP 365 ZGC لاءِ سپورٽ فراهم ڪري ٿو اڳ ۾ ئي ونڊوز تي، ۽ پڻ تجرباتي موڊ ۾. اهو هن ريت آهي:
  • ملٽي ميپنگ ميموري سپورٽ
  • ميموري ميپنگ لاءِ سپورٽ پيج فائل جي بنياد تي مخصوص ايڊريس اسپيس ۾
  • ڍير جي خودمختيار حصن جي نقشي سازي ۽ اڻ ميپنگ لاءِ سپورٽ
  • ڍير جي صوابديدي حصن کي انجام ڏيڻ ۽ غير ڪم ڪرڻ لاءِ سپورٽ

JEP 366: Deprecate ParallelScavenge + SerialOld GC Combination

هي JEP Parallel Scavenge ۽ Serial Old Garbage collection algorithms جي ميلاپ کي رد ڪري ٿو. ھن ميلاپ کي دستي طور ڪمانڊ لائن پيرا ميٽرز استعمال ڪندي چالو ڪيو ويو -XX: +UseParallelGC -XX: -UseParallelOldGC. ليکڪن جو خيال آهي ته ميلاپ تمام مخصوص آهي، پر پڻ اهم سار سنڀال جي ڪوشش جي ضرورت آهي. تنهن ڪري هاڻي -XX: UseParallelOldGC آپشن کي ختم ڪيو ويو آهي ۽ هڪ ڊيڄاريندڙ ظاهر ٿيندو جيڪڏهن استعمال ڪيو وڃي.

JEP 367: هٽايو Pack200 اوزار ۽ API

Pack200 هڪ آرڪائيو فارميٽ آهي جيڪو مرتب ڪيل جاوا ڪلاس فائلن کي محفوظ ڪرڻ لاءِ بهتر ڪيو ويو آهي. ھن ٽول کي جاوا 11 کان ختم ٿيل نشان لڳايو ويو آھي. pack200، unpack200، ۽ Pack200 API ٽولز ھاڻي سرڪاري طور java.util.jar پيڪيج مان ھٽايا پيا وڃن . هي ٽيڪنالاجي واپس متعارف ڪرايو ويو جاوا 5 ۾ تمام محدود بينڊوڊٿ (موڊيمس، اهو چوڻ ۽ ياد ڪرڻ لاءِ خوفناڪ آهي، 56k) ۽ هارڊ ڊرائيو تي اسٽوريج جي ڪافي جاءِ نه هجڻ جي ذريعي. ڪجهه وقت اڳ، جاوا 9 متعارف ڪرايو نئون کمپريشن اسڪيمون. ڊولپرز کي jlink استعمال ڪرڻ جي حوصلا افزائي ڪئي وئي آھي .

JEP 368: ٽيڪسٽ بلاڪ (ٻيو ڏيک)

ٽيڪسٽ بلاڪ پهريون ڀيرو جاوا 13 ۾ ظاهر ٿيا. اهي ملٽي لائن اسٽرنگ لٽريرل آهن جيڪي اڪثر فرار جي ترتيبن جي ضرورت کي روڪيندا آهن، خود بخود اسٽرنگ کي فارميٽ ڪندا آهن، ۽ ڊولپر کي پڻ اجازت ڏيندا آهن ته هو ضرورت هجي ته اسٽرنگ کي فارميٽ ڪري. ھي مفيد خصوصيت ھاڻي جاوا 14 (2nd Preview) ۾ موجود آھي. ٽيڪسٽ بلاڪ جو بنيادي مقصد ملٽي لائين لٽريچر کي الجھن ۾ رکڻ کي بهتر بڻائڻ آهي. اهو SQL سوالن، HTML ۽ XML ڪوڊ، ۽ JSON پڙهڻ ۽ لکڻ کي تمام گهڻو آسان بڻائي ٿو. مثال HTML بغير ٽيڪسٽ بلاڪ جي:
String html = "<html>\n" +
              "    <body>\n" +
              "        <p>Hello, JavaRush Student</p>\n" +
              "    </body>\n" +
              "</html>\n";
ٽيڪسٽ بلاڪ سان ساڳي نمائندگي ڪيئن ڪجي:
String html = """
              <html>
                  <body>
                      <p>Hello, JavaRush Student</p>
                  </body>
              </html>
              """;
اوپننگ ڊيليميٽر ٽن ڊبل اقتباس اکرن (""") جو هڪ تسلسل آهي، جنهن کان پوءِ صفر يا وڌيڪ اسپيس، ۽ پوءِ هڪ لڪير ڊيليميٽر. مواد پهرين حرف کان شروع ٿئي ٿو افتتاحي ڊيليميٽر جي لڪير جي حد کان پوءِ. بند ڪرڻ وارو ڊيليميٽر آهي . ٽن ڊبل اقتباس واري اکرن جو هڪ سلسلو " _ ) چونڊيو ويو ته جيئن اکر اڪيلانگ کان سواءِ ڏيکاري سگھجن، ۽ پڻ بصري طور تي متن بلاڪ کي اسٽرنگ لٽريچر کان ڌار ڪري سگھن. 2019 جي شروعات ۾، JEP 355 تجويز ڪيل ٽيڪسٽ بلاڪ JEP 326 (Raw String literals) جي تسلسل جي طور تي، پر انھن کي واپس ورتو ويو. انهي سال بعد ۾، JDK 13 متعارف ڪرايو ٽيڪسٽ بلاڪ پريويو فيچر، ۽ هاڻي جاوا 14 ٻه نوان فرار جي ترتيب شامل ڪيا آهن. هي هڪ ليڪ ٽرمينيٽر آهي، denoted \، ۽ ٻيو واحد اسپيس لاءِ آهي، denoted /s. ٽيڪسٽ بلاڪ کان سواءِ نيون لائينون استعمال ڪرڻ جو هڪ مثال:
String literal = "This is major Tom to Ground Control " +
"I am stepping through the door... " +
"Wait… What???";
۽ ھاڻي فرار جي تسلسل سان \<line-terminator>:
String text = """
                This is major Tom to Ground Control \
                I am stepping through the door... \
                WaitWhat???\
                """;
escape sequence \s استعمال ڪيو ويندو آھي حساب ڪتاب لاءِ trailing whitespace، جنھن کي ڊفالٽ طور مرتب ڪندڙ طرفان نظرانداز ڪيو ويندو آھي. اهو سڀ اڇو اسپيس محفوظ ڪري ٿو جيڪو ان جي اڳيان آهي. مثال:
String text1 = """
               line1
               line2 \s
               line3
               """;

String text2 = "line1\nline2 \nline3\n";
text1۽ text2هڪجهڙا آهن.

JEP 370: پرڏيهي-ميموري رسائي API (Incubator)

ڪيتريون ئي مشهور جاوا لائبريريون ۽ پروگرامن کي خارجي ياداشت تائين رسائي آهي. مثال طور، Ignite، MapDB، Memcached ۽ Netty ByteBuf API. ائين ڪرڻ ۾، اهي ڪچرو گڏ ڪرڻ سان لاڳاپيل لاڳت ۽ غير متوقعيت کان پاسو ڪري سگهن ٿا (خاص طور تي جڏهن وڏي ڪيچ جي خدمت ڪري رهيا آهن)، ڪيترن ئي عملن ۾ ميموري شيئر ڪن ٿا، ۽ ميموري ۾ فائلن کي ميپ ڪندي ميموري مواد کي سيريل ۽ ڊيسيريلائيز ڪري سگهن ٿا (مثال طور، mmap استعمال ڪندي). بهرحال، جاوا API اڃا تائين خارجي ياداشت تائين رسائي لاء مناسب حل نه آهي. JDK 14 ۾ فارين-ميموري رسائي API جو هڪ ڏيک شامل آهي ، جيڪا جاوا ايپليڪيشنن کي اجازت ڏئي ٿي محفوظ ۽ موثر طريقي سان ميموري علائقن تائين رسائي جي JVM هيپ کان ٻاهر نئين MemorySegment، MemoryAddress، ۽ MemoryLayout خلاصن کي استعمال ڪندي.

نتيجا

پوء توهان ڇا سوچيو؟ جاوا 13 جي مقابلي ۾، نئون جاوا 14 مختلف علائقن ۾ ڪيترائي وڌيڪ اهم سڌارا پيش ڪري ٿو. گهڻو ڪري، ڊولپرز لاء سڀ کان وڌيڪ اهم اپڊيٽ ٿيل سوئچ، وڌايل استثنا NullPointerExceptions ۽ رڪارڊ هوندا. يا نه؟... جاوا 14 جي نئين فيچرز کي آزمائڻ نه وساريو، اهو تمام ڪارائتو آهي جيتوڻيڪ نئين سکندڙن لاءِ. توهان جي پڙهائي سان سٺي قسمت!
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION