جاوا 8
فنڪشنل انٽرفيس
هي ڇا آهي؟ هڪ فنڪشنل انٽرفيس هڪ انٽرفيس آهي جنهن ۾ هڪ غير لاڳو ٿيل (خلاصو) طريقو شامل آهي. @FunctionalInterface هڪ اختياري تشريح آهي جيڪا اهڙي انٽرفيس جي مٿان رکيل آهي. چيڪ ڪرڻ جي ضرورت آهي ته ڇا اهو هڪ فنڪشنل انٽرفيس جي گهرجن کي پورو ڪري ٿو (صرف هڪ خلاصو طريقو آهي). پر هميشه وانگر، اسان وٽ ڪجهه احتياط آهن: ڊفالٽ ۽ جامد طريقا انهن گهرجن جي تحت نه ٿا اچن. تنهن ڪري، اهڙا ڪيترائي طريقا ٿي سگهن ٿا + هڪ خلاصو هڪ، ۽ انٽرفيس فنڪشنل ٿيندو. اهو شايد آبجیکٹ ڪلاس جا طريقا به شامل ڪري سگھن ٿا جيڪي انٽرفيس جي فعل جي تعريف کي متاثر نٿا ڪن. مان ڊفالٽ ۽ جامد طريقن بابت ڪجھ لفظ شامل ڪندس:-
ڊفالٽ موڊيفائر سان طريقا توهان کي اجازت ڏين ٿا ته توهان نوان طريقا شامل ڪرڻ جي انٽرفيس ۾ بغير ڪنهن موجوده عمل کي ٽوڙڻ جي.
public interface Something { default void someMethod { System.out.println("Some text......"); } }
ها، ها، اسان انٽرفيس ۾ لاڳو ٿيل طريقو شامل ڪندا آهيون، ۽ جڏهن هن طريقي تي عمل ڪيو وڃي، توهان ان کي ختم نه ٿا ڪري سگهو، پر ان کي وراثت طور استعمال ڪريو. پر جيڪڏهن ڪو ڪلاس ٻن انٽرفيس کي ڏنل طريقي سان لاڳو ڪري ٿو، ته اسان وٽ هڪ تالیف جي غلطي هوندي، ۽ جيڪڏهن اهو انٽرفيس کي لاڳو ڪري ٿو ۽ هڪ مخصوص هڪجهڙائي واري طريقي سان ڪلاس کي ورثي ۾ ڏئي ٿو، ته والدين طبقي جو طريقو انٽرفيس جي طريقن کي اوورليپ ڪندو ۽ استثنا ڪم نه ڪندو.
-
هڪ انٽرفيس ۾ جامد طريقا ڪم ڪن ٿا ساڳيا ڪلاس ۾ جامد طريقا. نه وساريو: توهان جامد طريقا وارث نٿا ڪري سگهو، جيئن توهان نسلي طبقي مان جامد طريقو نه ٿا سڏي سگهو.
-
صارف - ٽائيپ ٽائيپ جو دليل وٺندو آهي، ڪجھ به نه موٽائي ٿو (باطل).
مثال:
void someMethod(T t);
-
فراهم ڪرڻ وارو - ان پٽ جي طور تي ڪجھ به نه وٺندو آهي، پر ڪجهه قدر واپس ڪري ٿو T.
مثال:
T someMethod();
-
فنڪشن - ان پٽ جي طور تي ٽائپ جو هڪ پيٽرولر وٺي ٿو، آر جي قسم جي قيمت ڏي ٿو.
مثال:
R someMethod(T t);
-
UnaryOperator - هڪ T دليل وٺندو آهي ۽ ٽائيپ جي قيمت ڏي ٿو.
مثال:
T someMethod(T t);
Predicate - ڪجھ قدر T وٺي ٿو ھڪڙي دليل جي طور تي، موٽائي ٿو بوليان.
مثال:boolean someMethod(T t);
وهڪرو
اسٽريمز هڪ فنڪشنل انداز ۾ ڊيٽا جي جوڙجڪ کي سنڀالڻ جو هڪ طريقو آهي. عام طور تي اهي مجموعا آهن (پر توهان انهن کي ٻين، گهٽ عام حالتن ۾ استعمال ڪري سگهو ٿا). وڌيڪ سمجھڻ واري ٻولي ۾، اسٽريم ھڪڙو ڊيٽا اسٽريم آھي جنھن کي اسين پروسيس ڪريون ٿا ڄڻ ھڪڙي ئي وقت سڀني ڊيٽا سان ڪم ڪري رھيا آھيون، ۽ طاقت سان نه، جيئن ھر ھڪ لاءِ. اچو ته هڪ ننڍڙو مثال ڏسو. اچو ته چئو ته اسان وٽ انگن جو هڪ سيٽ آهي جنهن کي اسين فلٽر ڪرڻ چاهيون ٿا (50 کان گهٽ)، 5 کان وڌايو، ۽ پهرين 4 نمبرن کي آئوٽ ڪيو باقي انهن مان ڪنسول ڏانهن. اسان اڳ ۾ اهو ڪيئن ڪيو ها:List<Integer> list = Arrays.asList(46, 34, 24, 93, 91, 1, 34, 94);
int count = 0;
for (int x : list) {
if (x >= 50) continue;
x += 5;
count++;
if (count > 4) break;
System.out.print(x);
}
اتي گهڻو ڪوڊ نٿو لڳي، ۽ منطق اڳ ۾ ئي ٿورو پريشان آهي. اچو ته ڏسو ته اهو وهڪرو استعمال ڪندي ڪيئن نظر ايندو:
Stream.of(46, 34, 24, 93, 91, 1, 34, 94)
.filter(x -> x < 50)
.map(x -> x + 5)
.limit(4)
.forEach(System.out::print);
اسٽريمز زندگي کي تمام آسان بڻائي ٿو ڪوڊ جي مقدار کي گهٽائڻ ۽ ان کي وڌيڪ پڙهڻ جي قابل بڻائي. انهن لاءِ جيڪي هن موضوع تي وڌيڪ تفصيل سان غور ڪرڻ چاهيندا آهن، هتي هڪ سٺو آهي (مان به چوان ها ته شاندار) مضمون هن موضوع تي .
لمبدا
شايد سڀ کان اهم ۽ ڊگهي انتظار جي خصوصيت lambdas جي ظاهر آهي. lambda ڇا آهي؟ هي ڪوڊ جو هڪ بلاڪ آهي جنهن کي چوڌاري مختلف هنڌن تي منتقل ڪري سگهجي ٿو، تنهنڪري ان کي بعد ۾ عمل ڪري سگهجي ٿو جيترو وقت گهربل. آواز ڏاڍو مونجهارو، آهي نه؟ سادي لفظ ۾، lambdas استعمال ڪندي، توهان هڪ فنڪشنل انٽرفيس جو هڪ طريقو لاڳو ڪري سگهو ٿا (هڪ قسم جو هڪ گمنام طبقي تي عمل درآمد):Runnable runnable = () -> { System.out.println("I'm running !");};
new Thread(runnable).start();
اسان رن () طريقو تڪڙو ۽ غير ضروري ڳاڙهي ٽيپ جي بغير لاڳو ڪيو. ۽ ها: هلائڻ وارو هڪ فنڪشنل انٽرفيس آهي. مان لامبڊاس پڻ استعمال ڪريان ٿو جڏهن اسٽريمز سان ڪم ڪري رهيو آهيان (جيئن مٿين اسٽريمز سان مثالن ۾). اسان تمام گهڻي اونهائي نه وينداسين، ڇو ته توهان تمام گهڻي کوٽائي ڪري سگهو ٿا، مان ڪجهه لنڪس ڇڏي ڏيندس ته جيئن اهي ماڻهو جيڪي اڃا تائين دل کي کوٽي رهيا آهن اهي وڌيڪ کوٽي سگهن:
- Habré تي جاوا 8 ۾ lambda ايڪسپريسشن بابت مضمون
- اليگزينڊر ڪوساريف جي بلاگ تي جاوا ۾ لامبڊا ايڪسپريسز بابت مضمون
هر هڪ لاءِ
جاوا 8 وٽ ھڪڙو نئون اڳوڻو آھي جيڪو ڪم ڪري ٿو ھڪڙي ڊيٽا اسٽريم وانگر ھڪڙو وهڪرو. هتي هڪ مثال آهي:List<Integer> someList = Arrays.asList(1, 3, 5, 7, 9);
someList.forEach(x -> System.out.println(x));
(someList.stream().foreach(…))
طريقو حوالو
حوالا طريقا ھڪڙو نئون، مفيد نحو آھي جيڪو موجوده طريقن يا جاوا طبقن يا شين جي ٺاھيندڙن جو حوالو ڏيڻ لاءِ ٺاھيو ويو آھي:: طريقن جا حوالا چار قسمن ۾ اچن ٿا:-
ڊزائنر سان ڳنڍيل:
SomeObject obj = SomeObject::new
-
جامد طريقو حوالو:
SomeObject::someStaticMethod
-
هڪ خاص قسم جي اعتراض جي غير جامد طريقي جو حوالو:
SomeObject::someMethod
-
هڪ خاص اعتراض جي باقاعده (غير جامد) طريقي جو حوالو
obj::someMethod
someList.stream()
.map(String::toUpperCase)
.forEach(System.out::println);
انهن لاء جيڪي حوالن جي طريقن تي وڌيڪ معلومات چاهيندا آهن:
API وقت
تاريخن ۽ وقتن سان ڪم ڪرڻ لاءِ هڪ نئين لائبريري آهي - java.time. نئون API ڪنهن به جودا-وقت سان ملندڙ جلندڙ آهي. هن API جا سڀ کان اهم حصا آهن:- مقامي تاريخ هڪ مخصوص تاريخ آهي، مثال طور - 2010-01-09؛
- LocalTime - وقت جي حساب سان وقت زون - 19:45:55 (مقامي تاريخ جي مطابق)؛
- LocalDateTime - combo LocalDate + LocalTime - 2020-01-04 15:37:47؛
- ZoneId - وقت زون جي نمائندگي ڪري ٿو؛
- گھڙي - هن قسم کي استعمال ڪندي توهان موجوده وقت ۽ تاريخ تائين رسائي ڪري سگهو ٿا.
- جاوا ۽ وقت: حصو هڪ ۽ ٻه Habré تي
- جاوا 8 ۾ تاريخ/وقت API جو تعارف
اختياري
هي java.util پيڪيج ۾ هڪ نئون طبقو آهي ، هڪ قدر لفافي آهي جنهن جي چال اها آهي ته اهو پڻ محفوظ طور تي null تي مشتمل ٿي سگهي ٿو . اختياري وصول ڪرڻ: جيڪڏهن اسان Optional.ofOptional<String> someOptional = Optional.of("Something");
۾ null پاس ڪريون ٿا ، اسان حاصل ڪنداسين اسان جي پسنديده NullPointerException . اهڙين حالتن لاءِ اهي استعمال ڪن ٿا: - هن طريقي ۾ توهان کي نال کان ڊڄڻ جي ضرورت ناهي. اڳيون، شروعاتي طور تي خالي اختياري ٺاھيو: چيڪ ڪرڻ لاءِ ته اھو خالي آھي، استعمال ڪريو: اسان ڏانھن صحيح يا غلط موٽندو. ھڪڙي خاص عمل کي انجام ڏيو جيڪڏھن ھڪڙي قدر آھي، ۽ ڪجھ به نه ڪريو جيڪڏھن ڪو قدر نه آھي: ھڪڙو ريورس طريقو جيڪو منظور ٿيل قدر واپس ڪري ٿو جيڪڏھن اختياري خالي آھي (بڪ اپ پلان جي ترتيب): توھان جاري ڪري سگھو ٿا تمام گھڻو، تمام ڊگھي وقت ( خوشقسمتيءَ سان، اختياري ٻنهي سخاوت وارن هٿن سان طريقا شامل ڪيا آهن) پر اسان ان تي نه رهنداسين. اهو بهتر آهي ته منهنجي لاءِ شروع ڪرڻ وارن لاءِ ڪجهه لنڪ ڇڏي ڏيان: Optional<String> someOptional = Optional.ofNullable("Something");
Optional<String> someOptional = Optional.empty();
someOptional.isPresent();
someOptional.ifPresent(System.out::println);
System.out.println(someOptional.orElse("Some default content"));
- جاوا اختياري - هوليور جو پيءُ
- اختياري: جاوا 8 ۾ شروڊنگر جي ٻلي
- جاوا 8 ۾ نئون اختياري طبقو، NullPointerException لاءِ علاج ناهي
- جاوا 8 جون خاصيتون: جاوا رش لاءِ حتمي گائيڊ - حصو هڪ ۽ ٻه ؛
- Habré تي جاوا 8 ۾ نئون ؛
- مٿيان 10 جاوا 8 خاصيتون جيڪي ماڻهو نه ڳالهائيندا آهن ؛
- جاوا 8 سبق .
جاوا 9
تنهن ڪري، سيپٽمبر 21، 2017 تي، دنيا ڏٺو JDK 9. هي Java 9 خاصيتن جي هڪ ڀرپور سيٽ سان اچي ٿو. جڏهن ته ڪو به نئون ٻولي تصور نه آهي، نئين APIs ۽ تشخيصي حڪمن کي يقيني طور تي ڊولپرز لاء دلچسپي هوندي.JShell (REPL - read-eval-print loop)
هي هڪ انٽرفيس ڪنسول جو جاوا عمل آهي جيڪو ڪارڪردگي کي جانچڻ ۽ ڪنسول ۾ مختلف تعميرات استعمال ڪرڻ لاءِ استعمال ڪيو ويندو آهي، جهڙوڪ انٽرفيس، ڪلاس، اينيم، آپريٽر وغيره. JShell شروع ڪرڻ لاء ، توهان کي صرف ٽرمينل ۾ jshell لکڻ جي ضرورت آهي. پوءِ اسان لکي سگھون ٿا جيڪو ڪجھ اسان جي تخيل جي اجازت ڏئي ٿو: JShell استعمال ڪندي، توھان ٺاھي سگھوٿا اعليٰ سطحي طريقا ۽ انھن کي ساڳي سيشن ۾ استعمال ڪريو. طريقا جامد طريقن وانگر ڪم ڪندا، سواءِ ان جي ته جامد لفظ کي ختم ڪري سگھجي ٿو. وڌيڪ پڙھو Java 9 REPL (JShell) مينوئل ۾ .خانگي
جاوا جي ورزن 9 سان شروع ڪندي، اسان وٽ موقعا آھن پرائيويٽ طريقا استعمال ڪرڻ جو انٽرفيس ۾ (ڊفالٽ ۽ جامد طريقا، ڇاڪاڻ ته اسان صرف ناقص رسائي جي ڪري ٻين کي اوور رائڊ نٿا ڪري سگھون).private static void someMethod(){}
try-with-resources
ڪوشش سان گڏ وسيلن جي استثنا کي سنڀالڻ جي صلاحيت کي اپڊيٽ ڪيو ويو آهي:
BufferedReader reader = new BufferedReader(new FileReader("....."));
try (reader2) {
....
}
ماڊلرٽي ( Jigsaw )
هڪ ماڊل لاڳاپيل پيڪيجز ۽ وسيلن جو هڪ گروپ آهي جنهن سان گڏ هڪ نئين ماڊل وضاحت ڪندڙ فائل آهي. اهو طريقو استعمال ڪيو ويندو آهي ڪوڊ جي ملائڻ کي ختم ڪرڻ لاء. لوز ڪپلنگ ڪوڊ برقرار رکڻ ۽ وڌائڻ لاءِ هڪ اهم عنصر آهي. ماڊليت مختلف سطحن تي لاڳو ڪئي وئي آهي:- پروگرامنگ ٻولي.
- مجازي مشين.
- معياري جاوا API.
اڻ مٽ مجموعو
جاوا 9 ۾، اهو ممڪن ٿيو ته هڪ لڪير سان گڏ هڪ مجموعو ٺاهي ۽ ڀريو، جڏهن ته ان کي ناقابل عمل بڻائي (اڳ ۾، هڪ ناقابل قابل مجموعو ٺاهڻ لاء، اسان کي گڏ ڪرڻ جي ضرورت هئي، ان کي ڊيٽا سان ڀريو، ۽ هڪ طريقو ڪال ڪريو، مثال طور، Collections.unmodifiableList). اهڙي تخليق جو هڪ مثال:List someList = List.of("first","second","third");
ٻيا جدت:
- وڌايل اختياري (نئون طريقا شامل ڪيا ويا)؛
- ProcessHandle ۽ ProcessHandle انٽرفيس ظاهر ٿيا آپريٽنگ سسٽم جي عملن کي ڪنٽرول ڪرڻ لاءِ؛
- G1 - ڊفالٽ ڪچرو ڪليڪٽر؛
- HTTP ڪلائنٽ ٻنهي HTTP/2 پروٽوڪول ۽ ويب ساکٽ جي مدد سان؛
- وڌايل وهڪرو؛
- شامل ٿيل Reactive Streams API فريم ورڪ (رد عمل پروگرامنگ لاءِ)؛
- Habré تي جاوا 9 جو جائزو
- Java 9. نئون ڇا آهي؟
- جاوا 9: نئين خاصيتون
- جاوا 9 - ڇا توهان اڃا تائين اپڊيٽ ڪيو آهي؟ نه؟ ۽ اهو ضروري ناهي...!؟
- Sander Mak جاوا ماڊلز جي منتقلي تي
جاوا 10
تنهن ڪري، جاوا 9 جي ڇڏڻ کان ڇهه مهينا، مارچ 2018 ۾ (مون کي ياد آهي ته ڪالهه وانگر)، جاوا 10 منظر تي آيو.var
هاڻي اسان کي ڊيٽا جو قسم مهيا ڪرڻ جي ضرورت ناهي. اسان پيغام کي var طور نشان لڳايو ۽ مرتب ڪندڙ پيغام جو قسم طئي ڪري ٿو ساڄي پاسي موجود ابتدائي ڪندڙ جي قسم سان. هي خصوصيت صرف مقامي متغيرن لاءِ هڪ ابتدائي ڪندڙ سان موجود آهي: اهو طريقو دليلن، واپسي جي قسمن، وغيره لاءِ استعمال نٿو ڪري سگهجي، ڇاڪاڻ ته قسم جي وضاحت ڪرڻ لاءِ ڪو به ابتدائي ڪندڙ نه آهي. مثال var (اسٽرنگ جي قسم لاءِ):var message = "Some message…..";
System.out.println(message);
var هڪ لفظ نه آهي: اهو بنيادي طور تي هڪ محفوظ قسم جو نالو آهي، جهڙوڪ int . var جو فائدو وڏو آهي: قسم جا بيان تمام گهڻو ڌيان وٺندا آهن بغير ڪنهن فائدي جي، ۽ هي خاصيت وقت بچائيندو. پر ساڳئي وقت، جيڪڏهن هڪ متغير طريقن جي ڊگهي زنجير مان حاصل ڪيو وڃي، ڪوڊ گهٽ پڙهي سگهجي ٿو، ڇاڪاڻ ته اهو فوري طور تي واضح ناهي ته ڪهڙي قسم جو اعتراض آهي. انهن لاء وقف آهي جيڪي هن ڪارڪردگي سان وڌيڪ واقف ٿيڻ چاهيندا آهن:
- Java 10 LocalVariable Type-Inference
- جاوا 10 ۾ "var" سان پهريون رابطو
- 26 جاوا ۾ var قسم استعمال ڪرڻ جا طريقا
JIT مرتب ڪندڙ (GraalVM)
اڳتي وڌڻ جي بغير، مان توهان کي ياد ڏيان ٿو ته جڏهن توهان javac ڪمانڊ هلائيندا آهيو، جاوا ايپليڪيشن جاوا ڪوڊ مان JVM bytecode ۾ مرتب ڪئي وئي آهي، جيڪا ايپليڪيشن جي بائنري نمائندگي آهي. پر هڪ باقاعده ڪمپيوٽر پروسيسر صرف JVM بائيٽ ڪوڊ تي عمل نٿو ڪري سگهي. توھان جي JVM پروگرام کي ڪم ڪرڻ لاءِ، توھان کي ھن بائيٽ ڪوڊ لاءِ ھڪ ٻئي ڪمپلر جي ضرورت آھي، جيڪو مشين ڪوڊ ۾ تبديل ٿئي ٿو جيڪو پروسيسر اڳ ۾ ئي استعمال ڪرڻ جي قابل آھي. javac جي مقابلي ۾، هي ڪمپلر تمام گهڻو پيچيده آهي، پر پڻ اعلي معيار جي مشين ڪوڊ پيدا ڪري ٿو. في الحال، OpenJDK HotSpot ورچوئل مشين تي مشتمل آهي، جنهن جي نتيجي ۾ ٻه مکيه JIT مرتب ڪندڙ آهن. پهريون، C1 ( ڪلائنٽ ڪمپلر )، تيز رفتار آپريشن لاء ٺهيل آهي، پر ڪوڊ اصلاح جو شڪار آهي. ٻيو آهي C2 (سرور ڪمپلر). عمل جي رفتار متاثر ٿئي ٿي، پر ڪوڊ وڌيڪ بهتر آهي. جڏهن استعمال ڪيو ويندو آهي؟ C1 ڊيسڪ ٽاپ ايپليڪيشنن لاءِ وڏو آهي جتي ڊگهي JIT رڪاوٽون ناپسنديده آهن، ۽ C2 ڊگھي هلندڙ سرور پروگرامن لاءِ بهترين آهي جتي ڪمپليشن تي وڌيڪ وقت خرچ ڪرڻ بلڪل قابل برداشت آهي. ملٽي سطحي تاليف اهو آهي جڏهن تاليف پهريون ڀيرو C1 ذريعي ٿئي ٿو، ۽ نتيجو C2 ذريعي وڃي ٿو (وڌيڪ اصلاح لاءِ استعمال ٿيل). GraalVM ھڪڙو منصوبو آھي جيڪو مڪمل طور تي هٽ اسپاٽ کي تبديل ڪرڻ لاءِ ٺاھيو ويو آھي. اسان Graal بابت ڪيترن ئي لاڳاپيل منصوبن جي باري ۾ سوچي سگهون ٿا: هڪ نئين JIT مرتب ڪندڙ HotSpot لاءِ ۽ هڪ نئين پوليگلوٽ ورچوئل مشين. هن JIT ڪمپيلر جي خاص ڳالهه اها آهي ته اهو جاوا ۾ لکيل آهي. Graal compiler جو فائدو حفاظت آهي، اهو آهي، حادثي نه، پر استثنا، نه ميموري ليک. اسان وٽ پڻ سٺي IDE سپورٽ هوندي، ۽ اسان ڊيبگر، پروفائيلرز يا ٻيا آسان اوزار استعمال ڪرڻ جي قابل هوندا. ان کان علاوه، گڏ ڪرڻ وارو شايد HotSpot کان آزاد ٿي سگهي ٿو، ۽ اهو پنهنجو پاڻ جو هڪ تيز JIT-مرتب ٿيل نسخو ٺاهي سگهندو. کوٽائي ڪندڙن لاءِ:- نئين جاوا JIT ڪمپيلر ۾ گہرے غوطہ
- Graal: نئين JVM JIT ڪمپيلر کي حقيقي زندگي ۾ ڪيئن استعمال ڪجي
- ڪيئن Graal ڪم ڪري ٿو - Java JVM JIT مرتب ڪندڙ
متوازي G1
G1 گاربيج ڪليڪٽر ٿڌو آهي، ڪو شڪ ناهي، پر ان ۾ پڻ هڪ ڪمزور نقطو آهي: اهو هڪ واحد ڌاڳو مڪمل GC چڪر انجام ڏئي ٿو. هڪ دفعي جڏهن توهان کي هارڊويئر جي تمام طاقت جي ضرورت آهي ته توهان غير استعمال ٿيل شيون ڳولڻ لاء گڏ ڪري سگهو ٿا، اسان هڪ واحد سلسلي تائين محدود آهيون. اهو جاوا 10 ۾ طئي ڪيو ويو هو. هاڻي GC انهن سڀني وسيلن سان ڪم ڪري ٿو جيڪي اسان ان ۾ شامل ڪيون ٿا (يعني اهو ملٽي ٿريڊ ٿي وڃي ٿو). هن کي حاصل ڪرڻ لاءِ، ٻولي ڊولپرز GC کان مکيه ذريعن جي الڳ ٿيڻ کي بهتر ڪيو آهي، GC لاءِ هڪ سٺو صاف انٽرفيس ٺاهي. هن پياري جي ڊولپرز، OpenJDK، خاص طور تي ڪوڊ ۾ ڊمپ کي صاف ڪرڻو پيو ته نه رڳو ممڪن طور تي نئين GCs جي تخليق کي آسان بڻائي، پر اهو پڻ ممڪن آهي ته اسيمبلي مان غير ضروري GCs کي جلدي بند ڪرڻ. ڪاميابي جي بنيادي معيارن مان هڪ آهي انهن سڀني سڌارن کان پوءِ آپريٽنگ اسپيڊ ۾ گهٽتائي جي غير موجودگي. اچو ته پڻ ڏسو: ٻيا جدت:- ھڪڙو صاف ڪچرو ڪليڪٽر انٽرفيس متعارف ڪرايو ويو آھي. هي مختلف ڪچري جي جمع ڪندڙن کان ماخذ ڪوڊ جي الڳ ٿيڻ کي بهتر بڻائي ٿو، اهو ممڪن بڻائي ٿو ته متبادل گڏ ڪندڙن کي جلدي ۽ تڪليف سان ضم ڪرڻ؛
- JDK ذريعن کي هڪ مخزن ۾ گڏ ڪرڻ؛
- مجموعن کي هڪ نئون طريقو مليو آهي - ڪاپي آف (مجموعي) ، جيڪو هن مجموعن جي هڪ غير مٽائي ڪاپي موٽائي ٿو؛
- اختياري (۽ ان جي مختلف قسمن) ۾ ھڪڙو نئون طريقو آھي .orElseThrow() ;
- ھاڻي کان، JVMs کي خبر آھي ته اھي ھڪڙي ڊاکر ڪنٽينر ۾ ھلائي رھيا آھن ۽ ڪنٽينر جي مخصوص تشڪيل حاصل ڪندا بجاءِ پاڻ آپريٽنگ سسٽم کان پڇڻ جي.
- جاوا 10 ڏانهن ھدايت
- 10 JDK 10 خاصيتون جاوا ڊولپرز کي ڄاڻڻ گهرجي
- جاوا 10 ۾ نئون ڇا آهي: حصو هڪ ۽ ٻيو
GO TO FULL VERSION