JavaRush /جاوا بلاگ /Random-SD /جاوا 11 جاري ڪيو: نئين خاصيتون ۽ صلاحيتون

جاوا 11 جاري ڪيو: نئين خاصيتون ۽ صلاحيتون

گروپ ۾ شايع ٿيل
اڳي، جاوا جا نوان نسخا نادر ۽ دير سان ظاهر ٿيا. ھاڻي Oracle ڪاميابيءَ سان ”ھر ڇھن مھينن ۾ نئين جاوا“ جي پنھنجي خود ترتيب واري تال کي برقرار رکي ٿي. تنهن ڪري ڪجهه ڏينهن اڳ، سختي سان شيڊول تي، اسان آخرڪار حاصل ڪيو جاوا SE 11 ۽ JDK (جاوا ڊولپمينٽ کٽ) جو نفاذ . جاوا 11 جاري ڪيو: نئين خاصيتون ۽ صلاحيتون - 1هميشه وانگر، نئون نسخو پراڻن سان گڏ هوندو، ۽ جاوا 11 جي حمايت ڊسمبر 2026 کان اڳ ختم نه ٿيندي.

جاوا SE 11 ۾ نيون خاصيتون (ڊولپرز کي نظر اچن ٿا)

ياد رهي ته جاوا ۾، JEP "JDK وڌائڻ واري تجويز" جي عمل درآمد جي ذريعي تبديليون ڪيون ويون آهن. JEP هڪ تجويز آهي OpenJDK کي بهتر ڪرڻ لاءِ ۽ ٿي سگهي ٿي منظور، دير، يا رد. اهو آهي، جوهر ۾، JEPs جو هڪ مجموعو OpenJDK لاءِ هڪ ترقياتي حڪمت عملي آهي. نئين ”فيچر“ کان اڳ چورس بریکٹ ۾ اسان لاڳاپيل JEP جو تعداد ظاهر ڪنداسين. [323] Local-variable Syntax for Lambda parameters - var syntax for lambda parameters Java 10 var لفظ متعارف ڪرايو، جنهن کي ممڪن بڻايو ته مقامي متغير جي قسم کي واضح طور تي بيان نه ڪيو وڃي. هن ڪوڊ کي آسان بڻائي ڇڏيو. JEP 323 هن نحو جي استعمال کي لامبڊا اظهار سان وڌائي ٿو. سادو مثال:
list.stream ()
                 .map ((var s) -> s.toLowerCase ())
                 .collect (Collectors.toList ());
جيئن سائمن ريٽر ، هڪ مشهور جاوا مبشر، لکي ٿو، هڪ تجربيڪار جاوا پروگرامر اهو نوٽ ڪندو ته هن معاملي ۾ var استعمال ڪرڻ غير ضروري ٿي سگهي ٿو، ڇاڪاڻ ته مٿي ڏنل ڪوڊ کي هيٺين سان تبديل ڪري سگهجي ٿو:
list.stream ()
                  .map (s -> s.toLowerCase ())
                  .collect (Collectors.toList ());
ڇو، پوء، حمايت var؟ هتي صرف هڪ خاص ڪيس آهي - جڏهن توهان هڪ تشريح شامل ڪرڻ چاهيو ٿا ليمبڊا پيٽرول تي. اهو بغير ڪنهن قسم جي شامل ٿيڻ کان سواء نٿو ٿي سگهي، ۽ واضح قسم کي استعمال ڪرڻ کان بچڻ لاء، اسان var استعمال ڪندي هر شيء کي آسان بڻائي سگهون ٿا:
list.stream ()
                 .map ((@ Notnull var s) -> s.toLowerCase ())
                 .collect (Collectors.toList ());
[330] سنگل فائل سورس-ڪوڊ پروگرام لانچ ڪريو جاوا لانچر کي وڌائڻ لاءِ جاوا سورس ڪوڊ سان هڪ واحد فائل طور پروگرام لانچ ڪرڻ جاوا اڪثر ڪري تنقيد ڪئي ويندي آهي ان جي وربوز نحو ۽ ملٽي اسٽيپ “تقريب” کي شروع ڪرڻ جي لاءِ به هڪ معمولي ايپليڪيشن. ڪڏهن ڪڏهن اهو نون ماڻهن کي خوفزده ڪري ٿو. هڪ ايپليڪيشن لکڻ لاءِ جيڪو صرف پرنٽ ڪري ٿو " هيلو ورلڊ! " "، توهان کي هڪ ڪلاس لکڻ جي ضرورت آهي عوامي جامد voidمکيه طريقي سان ۽ استعمال ڪريو System.out.println. ائين ڪرڻ کان پوء، توهان کي ڪوڊ گڏ ڪرڻ گهرجي javac استعمال ڪندي . آخرڪار، ان کان پوء، توهان ايپليڪيشن کي لانچ ڪري سگهو ٿا، جيڪا خراب قسمت سلام ڏيکاريندي (يقينا، مربوط ترقي وارو ماحول، ٻئي IDEA ۽ هڪ JavaRush ۾ ٺهيل آهي ، اهو "ايپ لانچ جادو" پنهنجو پاڻ تي انجام ڏئي ٿو - ايڊيٽر جو نوٽ ). اچو ته ايماندار ٿي وڃو: اڪثر پروگرامنگ ٻولين ۾، پروگرامن کي هلائڻ جي حقيقي رسم الخط تمام سادو نظر اچي ٿو. JEP 330 هڪ واحد فائل ايپليڪيشن کي گڏ ڪرڻ جي ضرورت کي ختم ڪري ٿو، تنهنڪري هاڻي جيڪڏهن توهان ڪمانڊ لائن استعمال ڪريو، صرف ٽائپ ڪريو
java HelloWorld.java
جاوا لانچر اهو معلوم ڪندو ته فائل ۾ جاوا سورس ڪوڊ آهي ۽ ڪوڊ کي گڏ ڪرڻ کان پهريان ان کي ڪلاس فائل ۾ مرتب ڪيو. توھان ماخذ ڪوڊ فائل جي نالي کان پوءِ يا ان کان اڳ پيٽرول رکي سگھو ٿا. جيڪي نالي پٺيان رکيا ويا آهن انهن کي پيٽرولر طور منظور ڪيو ويو آهي جڏهن ايپليڪيشن تي عمل ڪيو ويندو آهي. جيڪي نالي جي اڳيان رکيا ويا آهن اهي ڪوڊ مرتب ٿيڻ کان پوءِ جاوا لانچر ڏانهن پيرا ميٽر طور گذري ويا آهن. مرتب ڪرڻ لاءِ مخصوص آپشنز (جهڙوڪ ڪلاس پاٿ) به پاس ڪيا ويندا javac ڏانهن . مثال. لائن:
java -classpath / home / foo / java Hello.java Bonjour
انهن لائينن جي برابر هوندي:
javac -classpath / home / foo / java Hello.java
java -classpath / home / foo / java Hello Bonjour
[321] HTTP ڪلائنٽ (معياري) - HTTP ڪلائنٽ API سپورٽ کي معياري ڪيو ويو آهي JDK 9 HTTP ڪلائنٽ پروٽوڪول (JEP 110) کي سپورٽ ڪرڻ لاءِ هڪ نئون API متعارف ڪرايو . جتان JDK 9 پڻ متعارف ڪرايو جاوا پليٽ فارم ماڊل سسٽم (JPMS) ، هي API هڪ انڪيوبيٽر ماڊل طور شامل ڪيو ويو هو (اهي ماڊلز آهن ڊولپرز کي نوان APIs مهيا ڪرڻ لاءِ جيڪي اڃا تائين جاوا SE ۾ معياري نه ٿيا آهن، جڏهن ته ”لائيو“ APIs ٿي رهيا آهن. ختم ڪرڻ لاءِ تيار - ڊولپرز نوان APIs آزمائي سگھن ٿا ۽ موٽ ڏيڻ جي ڪوشش ڪري سگھن ٿا). هڪ دفعو ضروري تبديليون ڪيون وينديون آهن (هي API JDK 10 ۾ اپڊيٽ ڪيو ويو آهي)، API معيار جو حصو بڻجي سگهي ٿو. تنهن ڪري، HTTP ڪلائنٽ API هاڻي سرڪاري طور تي Java SE 11 ۾ شامل آهي . هي JDK، java.net.http لاءِ هڪ نئون ماڊل ۽ پيڪيج متعارف ڪرايو آهي . مکيه نوان قسم آهن: HttpClient HttpRequest HttpResponse WebSocket هي API استعمال ڪري سگهجي ٿو هم وقت سازي يا هم وقت سازي سان. هم وقت ساز موڊ ۾، ۽ استعمال ٿيل آهن . [320] Java EE ۽ CORBA ماڊلز کي هٽايو جاوا جي نائين ورزن ۾ جاوا پليٽ فارم ماڊل سسٽم (JPMS) جي تعارف سان ، اهو ممڪن ٿيو ته monolithic rt.jar فائل کي ڪيترن ئي ماڊلز ۾ ورهايو وڃي. ان کان علاوه، JPMS توهان کي جاوا رن ٽائم ماحول ٺاهڻ جي اجازت ڏئي ٿو جنهن ۾ صرف ماڊل شامل آهن جيڪي توهان جي ايپليڪيشن لاء گهربل آهن، ان جي سائيز کي تمام گهڻو گھٽائي ٿو. شفاف طور تي بيان ڪيل ماڊل جي حدن سان، جاوا API جي پراڻن حصن کي هٽائڻ تمام آسان آهي - اهو ئي JEP 320 ڪندو آهي. java.se.ee metamodule ۾ ڇهه ماڊل شامل آهن جيڪي جاوا SE 11 معيار جو حصو نه هوندا ۽ شامل نه هوندا. JDK ۾: CompletionFuturesCompletionStages
  • ڪوربا
  • ٽرانزيڪشن
  • چالو ڪرڻ
  • xml.bind
  • xml.ws
  • xml.ws.annotation
اهي ماڊلز JDK 9 ۾ ختم ڪيا ويا هئا ۽ ڊفالٽ طور تاليف يا عمل ۾ شامل نه هئا. ان جو مطلب اهو آهي ته جيڪڏهن توهان هڪ ايپليڪيشن کي گڏ ڪرڻ يا هلائڻ جي ڪوشش ڪئي جيڪا JDK 9 يا JDK 10 تي اهي ماڊل APIs استعمال ڪري ٿي، اهو ناڪام ٿيو. جيڪڏهن توهان پنهنجي ڪوڊ ۾ انهن ماڊلز جا API استعمال ڪندا آهيو، توهان کي انهن کي هڪ الڳ ماڊل يا لائبريري طور مهيا ڪرڻ جي ضرورت پوندي.

نئون APIs

JDK 11 ۾ نئين APIs جو وڏو تعداد ظاهر ٿيو HTTP ڪلائنٽ ۽ فلائيٽ رڪارڊر ماڊلز کي ٻوليءَ جي معيار ۾ شامل ڪرڻ جي مهرباني . APIs جي مڪمل فهرست لاءِ، ڏسو JDK جي مختلف ورزن جو ھيٺ ڏنل جامع مقابلو ، مرتب ڪيل گننار مورلنگ. ۽ هن نوٽ ۾ اسان ڪجهه نوان طريقا ٻڌائينداسين جيڪي java.net.http ، jdk.jfr ۽ java.security ماڊلز ۾ شامل نه آهن . java.lang.String يقينن JDK 11 API ۾ اسٽرنگ ۾ سڀ کان اهم تبديلين مان هڪ آهي، اتي ڪيترائي مفيد نوان طريقا آهن.
  • boolean isBlank (): واپسي صحيح آھي جيڪڏھن اسٽرنگ خالي آھي يا صرف اسپيس تي مشتمل آھي، ٻي صورت ۾ غلط.

  • Stream lines(): هن اسٽرنگ مان ڪڍيل لائنن جو هڪ وهڪرو واپس ڪري ٿو، ليڪ ٽرمينيٽرز طرفان الڳ ڪيل.

  • String repeat (int): هڪ اسٽرنگ ڏي ٿو جنهن جي قيمت ان اسٽرنگ جي ڪنٽينٽيشن آهي بار بار int ڀيرا.

  • String strip (): پهرين غير اسپيس اکر کان اڳ يا پوءِ ختم ٿيل سڀني اسپيس سان اسٽرنگ ڏي ٿو.

  • String stripLeading (): هٽايل پهرين غير خلائي ڪردار تائين سڀني اسپيس سان هڪ اسٽرنگ ڏي ٿو.

  • String stripTrainling (): سڀني اسپيس سان هڪ اسٽرنگ ڏي ٿو جيڪو آخري غير خلائي ڪردار کي هٽائڻ کان پوء ٿئي ٿو.
strip()طريقو اڳ ۾ ئي ڪجهه ساڳيو ڪيو آهي trim ()، پر خالن جي ذريعي اهي طريقا مختلف شيون آهن. صورت ۾، trim()صرف اسپيس ڪٽيل آهن، ۽ ان ۾ strip()- پڻ خاص اکر، جهڙوڪ ٽيب. java.lang.StringBuffer java.lang.StringBuilder انهن ٻنهي طبقن ۾ هڪ نئون طريقو آهي compareTo ()جيڪو قبول ڪري ٿو StringBuffer/ StringBuilder۽ واپسي ٿو int. لغوي مقابلي جو طريقو نئين طريقي سان ملندڙ جلندڙ آهي compareTo() CharSequence. java.io.ByteArrayOutputStream
  • void writeBytes (byte []): java.io.FileReader آئوٽ پٽ اسٽريم تي پيٽرول جا سڀ بائيٽ لکي ٿو
هتي ٻه نوان تعمير ڪندڙ آهن جيڪي توهان کي وضاحت ڪرڻ جي اجازت ڏين ٿا Charset. java.io.FileWriter چار نوان ٺاھيندڙ جيڪي توھان کي وضاحت ڪرڻ جي اجازت ڏين ٿا Charset. java.io.InputStream
  • io.InputStream nullInputStream (): واپسي InputStream، جيڪو ڪو به بائيٽ نٿو پڙهي. هي طريقو ڪيئن استعمال ڪجي؟ توھان ان کي ڪجھ سمجھي سگھو ٿا جھڙوڪ /dev/null ٻاھر ڪڍڻ لاءِ جنھن جي توھان کي ضرورت ناھي، يا ان پٽ کي انجڻ ڪرڻ لاءِ جيڪو ھميشه صفر بائٽس موٽائي.
java.io.OutputStream
  • io.OutputStream nullOutputStream ()
java.io.Reader
  • io.Reader nullReader ()
java.io.Writer
  • io.Writer nullWriter ()
java.lang. ڪردار
  • String toString (int): هي هڪ موجوده طريقي جو اوورلوڊ آهي، پر چار جي بدران int استعمال ڪري ٿو.
java.lang.CharSequence
  • int compare (CharSequence, CharSequence): لغت جي لحاظ کان ٻن مثالن جو مقابلو ڪري ٿو CharSequence. هڪ منفي قدر، صفر، يا هڪ مثبت قدر ڏي ٿو جيڪڏهن پهريون تسلسل لغت جي لحاظ سان ترتيب سان ٻئي کان گهٽ، برابر، يا وڌيڪ آهي.
java.lang.ref.Reference
    lang.Object clone (): جاوا مبشر سائمن ريٽر تسليم ڪيو ته اهو طريقو هن کي پريشان ڪري ٿو. ڪلاس Referenceهڪ انٽرفيس کي لاڳو نٿو ڪري Cloneable۽ اهو طريقو هميشه هڪ استثنا اڇلائي ڇڏيندو CloneNotSupportedException. بهرحال، ماهر مشورو ڏئي ٿو ته اهو طريقو مستقبل ۾ ڪنهن شيء لاء مفيد ٿيندو.
java.lang.Runtime java.lang.System هتي ڪي نوان طريقا نه آهن. اچو ته صرف اهو ذڪر ڪريون ته طريقو runFinalizersOnExit ()انهن ٻنهي طبقن مان هٽايو ويو آهي، جيڪو شايد مطابقت جي مسئلن جو سبب بڻائين. java.lang.Thread ڪي به اضافي طريقا نه آهن، اسان صرف اهو ذڪر ڪنداسين ته destroy ()انهن کي stop (Throwable)هٽايو ويو. بهرحال stop ()، جيڪو ڪو به دليل نه وٺندو آهي، اڃا تائين موجود آهي. مھرباني ڪري ھن کي ذهن ۾ رکو جيئن مطابقت جا مسئلا ٿي سگھن ٿا. java.nio.ByteBuffer java.nio.CharBuffer java.nio.DoubleBuffer java.nio.FloatBuffer java.nio.LongBuffer java.nio.ShortBuffer انهن سڀني طبقن ۾، ٻولي ڊولپرز هڪ طريقو شامل ڪيو mismatch ()جيڪو ڳولهي ٿو ۽ واپسي جي لاڳاپيل انڊيڪس هن بفر ۽ ڏنل بفر جي وچ ۾ پهرين بي ميل. java.nio.channels.SelectionKey
  • int interestOpsAnd (int)

  • int interestOpsOr (int)
java.nio.channels.Selector
  • int select (java.util.function.Consumer, long): چونڊيو ۽ عمل ڪري ٿو هڪ عمل تي چابيون جن جا لاڳاپيل چينل I/O عملن لاءِ تيار آهن. ڊگھو پيٽرول ھڪڙو وقت ختم آھي.

  • int select (java.util.function.Consumer): مٿي ڏنل طريقي وانگر ڪم ڪري ٿو، پر وقت ختم ٿيڻ کان سواء.

  • int selectNow (java.util.function.Consumer): مٿي ڏنل طريقي وانگر ڪم ڪري ٿو، صرف اهو غير بلاڪنگ آهي.

java.nio.file.Files
  • String readString (Path): فائل مان سمورو مواد پڙهي ٿو اسٽرنگ ۾، ڊيڪوڊنگ بائيٽ کي اکرن ۾ UTF-8 انڪوڊنگ استعمال ڪندي .

  • String readString (Path, Charset): مٿي ڏنل طريقي وانگر ڪم ڪري ٿو، پر استعمال ڪندي بائيٽ کي اکرن ۾ ڊيڪوڊ ڪري ٿو Charset.

  • Path writeString (Path, CharSequence, java.nio.file. OpenOption []): جيڪڏھن توھان اکرن جي ھڪڙي ترتيب کي CharSequenceھڪڙي فائل ۾ لکو، اھي اکر بائيٽ ۾ انڪوڊ ڪيا ويندا ( UTF-8 استعمال ڪندي ).

  • Path writeString (Path, CharSequence, java.nio.file. Charset, OpenOption []): مٿي ڏنل طريقي وانگر ڪم ڪري ٿو، صرف اکر استعمال ڪندي بائيٽ ۾ انڪوڊ ٿيل آهن Charset.
java.nio.file.Path
  • Path(String, String[]): رستو واپس ڪري ٿو، ھڪڙي رستي جي تارن کي تبديل ڪندي يا تارن جي تسلسل کي تبديل ڪري ٿو، جنھن کي گڏيل طور تي ھڪڙي رستي ٺاھيو وڃي.

  • رستو (net.URI): رستو واپس ڪري ٿو URI کي تبديل ڪندي.
java.util.Collection
  • Object [] toArray (java.util.function.IntFunction): واپسي سر کي ورهائڻ لاءِ مهيا ڪيل جنريٽر فنڪشن کي استعمال ڪندي، هن مجموعي ۾ موجود سڀني عنصرن تي مشتمل هڪ صف واپس ڪري ٿو.
java.util.concurrent.PriorityBlockingQueue java.util.PriorityQueue
  • void forEach (java.util.function.Consumer): بيان ڪيل عمل کي انجام ڏئي ٿو هر هڪ قابل عمل عنصر تي جيستائين سڀني عناصر تي عمل نه ڪيو وڃي يا عمل هڪ استثنا اڇلائي.

  • boolean removeAll (java.util.Collection): هن مجموعي جي سڀني عناصر کي هٽائي ٿو جيڪي پڻ مخصوص مجموعي ۾ شامل آهن (اختياري آپريشن).

  • boolean removeIf (java.util.function.Predicate): هن مجموعي جي سڀني عنصرن کي هٽائي ٿو جيڪي ڏنل پيشڪش کي پورو ڪن ٿا.

  • boolean retainAll (java.util.Collection): هن مجموعي ۾ صرف انهن عناصر کي محفوظ ڪري ٿو جيڪي مخصوص مجموعي ۾ شامل آهن (اختياري آپريشن).
java.util.concurrent.TimeUnit
  • long convert (java.time.Duration): وقت جي ڏنل مدت کي ھن يونٽ ۾ تبديل ڪري ٿو.
java.util.function.Predicate
  • Predicate not(Predicate): هڪ پيشڪش ڏي ٿو جيڪا ڏنل پيشڪش جي نفي آهي.
مثال طور، هيٺ ڏنل ڪوڊ:
lines.stream ()

.filter (s ->! s.isBlank ())
ھن کي تبديل ڪري سگھجي ٿو:
lines.stream ()

.filter (Predicate.not (String :: ISBLANK))
۽ جيڪڏھن اسان جامد درآمد استعمال ڪريون ٿا، پوء اھو اھو آھي جيڪو اسان حاصل ڪريون ٿا:
lines.stream ()
.filter (not(String :: ISBLANK))
java.util.Optional java.util.OptionalInt java.util.OptionalDouble java.util.OptionalLong
  • boolean isEmpty (): واپسي سچي جيڪڏھن ڪا قدر نه آھي ، ٻي صورت ۾ غلط .
java.util.regex.Pattern
  • Predicate asMatchPredicate (): جاوا ماهر سائمن رائٽر جو خيال آهي ته شايد هتي هڪ حقيقي JDK 11 API گيم لڪيل آهي. هي طريقو هڪ اڳڪٿي ٺاهي ٿو جيڪو چيڪ ڪري ٿو ته ڇا هي نمونو ڏنل ان پٽ اسٽرنگ سان ملندو آهي.
java.util.zip.Deflater
  • int deflate (ByteBuffer): ان پٽ ڊيٽا کي دٻائي ٿو ۽ بيان ڪيل بفر کي ڪمپريس ٿيل ڊيٽا سان ڀري ٿو.

  • int deflate (ByteBuffer, int): ان پٽ ڊيٽا کي دٻائي ٿو ۽ بيان ڪيل بفر کي ڪمپريس ٿيل ڊيٽا سان ڀري ٿو. compressed ڊيٽا جي حقيقي رقم واپسي.

  • void setDictionary (ByteBuffer): ڏنل بفر ۾ بائيٽ ۾ دٻائڻ لاءِ ڏنل ڊڪشنري سيٽ ڪري ٿي. هي هڪ موجوده طريقي جو هڪ اوورلوڊ آهي جيڪو هاڻي قبول ڪري سگهي ٿو a ByteBuffer، بجاءِ بائيٽ صف.

  • void setInput (ByteBuffer): سيٽ ڪري ٿو ان پٽ ڊيٽا کي دٻائڻ لاءِ. اهو پڻ هڪ موجوده طريقي جي اوور لوڊ آهي.
java.util.zip.Inflater
  • int inflate (ByteBuffer): مخصوص بفر ۾ بائٽس کي کوليو. غير ٺهڪندڙ بائٽس جو اصل تعداد واپس ڪري ٿو.

  • void setDictionary (ByteBuffer): ڏنل ڊڪشنري کي ڏنل بفر ۾ بائيٽس کي سيٽ ڪري ٿو. هڪ موجوده طريقي جي هڪ overloaded فارم آهي.

  • void setInput (ByteBuffer): decompression لاءِ ان پٽ ڊيٽا سيٽ ڪري ٿو. موجوده طريقي جو هڪ اوور لوڊ ٿيل فارم.
javax.print.attribute.standard.DialogOwner هي JDK 11 ۾ هڪ نئون ڪلاس آهي ۽ هڪ خاص ڪلاس آهي جيڪو پرنٽ يا ڪسٽمائيزيشن صفحي جي درخواستن کي سپورٽ ڪرڻ لاءِ استعمال ڪيو ويندو آهي سڀني ونڊوز يا مخصوص ونڊو جي مٿان ڏيکاريو وڃي. javax.swing.DefaultComboBoxModel javax.swing.DefaultListModel
  • void addAll (Collection): مجموعي ۾ موجود سڀني عنصرن کي شامل ڪري ٿو.

  • void addAll (int, Collection): مجموعي ۾ موجود سڀني عنصرن کي شامل ڪري ٿو، مقرر ڪيل انڊيڪس کان شروع ٿي.
javax.swing.ListSelectionModel
  • int [] getSelectedIndices (): چونڊيل ماڊل ۾ سڀني چونڊيل انڊيڪسز جي هڪ صف کي واپسي جي ترتيب ۾.

  • int getSelectedItemsCount (): چونڊيل شيون جو تعداد ڏي ٿو.
jdk.jshell.EvalException
  • shell.JShellException getCause (): هن EvalException پاران پيش ڪيل execution ڪلائنٽ ۾ اڇلڻ لائق سبب واپس ڪري ٿو، يا null جيڪڏھن سبب موجود نه آھي يا نامعلوم آھي.

جاوا 11 جي غير ڊولپر خاصيتون

[181] Nest-based Access Control Java ۽ ٻيون ٻوليون اندرين ڪلاسن ذريعي nested طبقن جي مدد ڪن ٿيون. ان لاءِ ڪم ڪرڻ لاءِ، مرتب ڪندڙ کي ضرور ڪجهه چالون انجام ڏيڻ گهرجن. مثال طور:
public class Outer {
    private int outerInt;

     class Inner {
       public void printOuterInt() {
         System.out.println("Outer int = " + outerInt);
       }
     }
   }
گڏ ڪرڻ وارو هن کي ترتيب ڏيڻ کان اڳ هيٺ ڏنل شيء پيدا ڪرڻ لاء تبديل ڪري ٿو:
public class Outer {
      private int outerInt;

      public int access$000() {
        return outerInt;
      }

    }


    class Inner$Outer {

      Outer outer;

      public void printOuterInt() {
        System.out.println("Outer int = " + outer.access$000());
      }
    }
جيتوڻيڪ منطقي طور تي اندروني ڪلاس ساڳئي ڪوڊ جو حصو آهي جيئن ٻاهرئين طبقي، اهو هڪ الڳ طبقي جي طور تي مرتب ڪيو ويو آهي. تنهن ڪري، هن آپريشن کي هڪ مصنوعي شامل ٿيڻ واري طريقي جي ضرورت آهي جيڪا لازمي طور تي ٺاهيل هجي ته جيئن ٻاهرئين طبقي جي نجي فيلڊ تائين رسائي فراهم ڪري. هي JEP nests جو تصور متعارف ڪرايو آهي، جتي هڪ ئي نسٽ جا ٻه ميمبر (اسان جي مثال ۾ ٻاهرين ۽ اندروني) nesting دوست آهن. ڪلاس فائل فارميٽ لاءِ ٻه نيون خاصيتون بيان ڪيون ويون آهن: NestHost ۽ NestMembers . اهي تبديليون ٻين ٻولين لاءِ ڪارآمد آهن جيڪي nested ڪلاسز ۽ bytecode کي سپورٽ ڪن ٿيون. هي فنڪشن java.lang.Class لاءِ ٽي نوان طريقا متعارف ڪرائي ٿو : ڪلاس getNestHost () ڪلاس [] getNestMembers () boolean isNestmateOf (Class) [309] متحرڪ ڪلاس-فائل ڪنسٽنٽ هي JEP نئين کي سپورٽ ڪرڻ لاءِ ڪلاس فائل فارميٽ ۾ واڌ جي وضاحت ڪري ٿو. مسلسل پول فارم CONSTANT_Dynamic. هڪ متحرڪ مستقل جو خيال هڪ آڪسيمورون وانگر لڳي ٿو، پر لازمي طور تي توهان ان کي جاوا 11 ۾ حتمي قدر سمجهي سگهو ٿا. پولنگ ڪانسٽنٽ جي قيمت مرتب وقت تي مقرر نه ڪئي وئي آهي (ٻين ثابتين جي برعڪس)، پر هڪ بوٽ اسٽريپ استعمال ڪري ٿو. ليڊ ٽائيم تي قدر جو تعين ڪرڻ جو طريقو. تنهن ڪري قيمت متحرڪ آهي، پر جيئن ته ان جي قيمت صرف هڪ ڀيرو مقرر ڪئي وئي آهي، اهو پڻ مسلسل آهي. هي خصوصيت بنيادي طور تي انهن ماڻهن لاءِ آهي جيڪي نئين ٻوليون ۽ مرتب ڪندڙ ترقي ڪن ٿيون جيڪي JVM تي هلائڻ لاءِ بائيٽ ڪوڊس ۽ ڪلاس فائلون آئوٽ پٽ طور ٺاهيندا. [315] Aarch64 Intrinsics کي بهتر ڪريو هي JEP ريڊ هيٽ ڪميونٽي طرفان تجويز ڪيل هئي. JVM ھاڻي وڌيڪ خاص ھدايتون استعمال ڪري سگھي ٿو جيڪي دستياب آھن Arm 64 ھدايت واري سيٽ ۾. خاص طور تي، ھي , طريقن ۽ java.lang.Mathsin () ڪلاس cos ()جي log ()ڪارڪردگي کي بھتر بڻائي ٿو . [318] Epsilon: A No-Op گاربيج ڪليڪٽر جيئن JEP 315 سان ، توهان ڪري سگهو ٿا ريڊ هيٽ جو شڪريو ادا ڪرڻ لاءِ ايپسيلون گاربيج ڪليڪٽر. Epsilon غير معمولي آهي ته اهو اصل ۾ ڪچرو گڏ نه ڪندو آهي! جڏهن نيون شيون ٺاهيندي، اهو ميموري کي مختص ڪري ٿو جيڪڏهن ضرورت هجي، پر غير رجسٽر ٿيل شين جي قبضي واري جاء کي ٻيهر دعوي نٿو ڪري. ” ڇا ڳالهه آهي؟ "، - توهان پڇو. اهو ظاهر ٿئي ٿو ته هي "کچري گڏ ڪرڻ" جا ٻه استعمال آهن:
  1. سڀ کان پهريان، هي ڪچرو ڪليڪٽر ان ڳالهه کي يقيني بڻائڻ لاءِ ٺاهيو ويو آهي ته نئين GC الگورٿم جو جائزو ورتو وڃي انهن جي ڪارڪردگيءَ جي اثر جي لحاظ کان. خيال آهي Epsilon سان نموني ايپليڪيشن هلائڻ ۽ ميٽرڪ جو هڪ سيٽ ٺاهي. نئون ڪچرو گڏ ڪرڻ وارو الگورٿم فعال ڪيو ويو آهي، ساڳيا ٽيسٽ هلايا ويندا آهن، ۽ پوءِ نتيجن جو مقابلو ڪيو ويندو آهي.

  2. تمام ننڍڙن ڪمن لاءِ (سوچو ڪلائوڊ ۾ سرور کان سواءِ افعال) جتي توھان گارنٽي ڏئي سگھو ٿا ته توھان ھيپ لاءِ مختص ڪيل ميموري کان وڌيڪ نه ٿيندا. هي ايپليڪيشن ڪوڊ ۾ اوور هيڊ (جنهن ۾ اهو فيصلو ڪرڻ لاءِ گهربل انگ اکر گڏ ڪرڻ سميت) ختم ڪري ڪارڪردگي بهتر ڪري سگهي ٿو. جيڪڏهن هيپ اسپيس ختم ٿي وئي آهي، JVM ٽن طريقن مان هڪ ۾ غلط ترتيب ڏئي سگهجي ٿي:
    • عام سڏيو ويندو آهي OutOfMemoryError.
    • هڪ هيپ ري سيٽ انجام ڏيو
    • JVM هارڊ ڊرائيو ناڪام ٿي وئي آهي ۽ ٿي سگهي ٿو ٻيو ڪم انجام ڏئي رهيو آهي (جهڙوڪ ڊيبگر شروع ڪرڻ).
[328]: فلائيٽ رڪارڊر فلائيٽ رڪارڊر JVM لاءِ گھٽ-سطح ڊيٽا حاصل ڪرڻ وارو فريم ورڪ آھي. JDK 11 کان اڳ، هي هڪ تجارتي خصوصيت هئي Oracle JDK بائنري ۾. Oracle هاڻي Oracle JDK ۽ OpenJDK مان هڪ تعمير جي وچ ۾ فنڪشنل اختلافن کي ختم ڪري رهيو آهي. هتي اهو آهي ته فلائيٽ رڪارڊر ڇا ڪندو آهي :
  • ايونٽس جي طور تي ڊيٽا پيدا ڪرڻ ۽ استعمال ڪرڻ لاءِ API مهيا ڪري ٿي
  • مهيا ڪري ٿو بفر ميڪانيزم ۽ بائنري ڊيٽا فارميٽ
  • واقعن جي ڪسٽمائيزيشن ۽ فلٽرنگ جي اجازت ڏئي ٿي
  • OS، JVM HotSpot ۽ JDK لائبريرين لاءِ واقعا مهيا ڪريو
هتي ٻه نوان ماڊل آهن: jdk.jfr ۽ jdk.management.jfr . [329] ChaCha20 ۽ Poly1305 cryptographic algorithms هي JEP JDK پاران استعمال ڪيل سائفرز کي اپڊيٽ ڪرڻ بابت آهي . هي ڪيس ChaCha20 ۽ ChaCha20-Poly1305 انڪرپشن الگورٿمز کي لاڳو ڪري ٿو جيئن RFC 7539 ۾ بيان ڪيو ويو آهي. ChaCha20 نسبتاً نئون اسٽريم سائفر آهي جيڪو پراڻن، غير محفوظ RC4 سائفر کي بدلائي سگھي ٿو . [333] ZGC: هڪ اسپيبلبل گھٽ-لطيني گاربيج ڪليڪٽر هڪ تجرباتي اسپيبلبل گھٽ-لطيني گاربيج ڪليڪٽر. ايپليڪيشنن سان استعمال لاءِ ٺهيل آهي جيڪي وڏي (ملٽي گيگا بائيٽ) هيپ ۽ گهٽ ويڪرائي جي ضرورت هونديون آهن. اهو هڪ واحد نسل جي هيپ استعمال ڪري ٿو ۽ اڪثر ڪري ٿو (پر سڀ نه) ڪچرو گڏ ڪرڻ جو ڪم ساڳئي وقت ايپليڪيشن جي طور تي. [332] ٽرانسپورٽ پرت سيڪيورٽي (TLS) 1.3 TLS 1.3 (RFC 8446) TLS ٽرانسپورٽ پرت سيڪيورٽي پروٽوڪول لاء هڪ اهم پيچ آهي جيڪو اڳوڻي نسخن جي ڀيٽ ۾ اهم سيڪيورٽي ۽ ڪارڪردگي بهتري فراهم ڪري ٿو. JDK ھاڻي ھن پروٽوڪول ورزن کي سپورٽ ڪري ٿو. مواد سائمن رائٽر جي هڪ مضمون ۽ سرڪاري دستاويزن تي ٻڌل آهي .
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION