جاوا 11
var (لیمبڈا میں)
اب سے، ہم لیمبڈا پیرامیٹرز کی قسمیں بتا سکتے ہیں یا لیمبڈا ایکسپریشن لکھتے وقت ان کو چھوڑ سکتے ہیں (ماضی سے ٹائپ شدہ لیمبڈا ایکسپریشن):Function<String, String> append = (var string) -> string + " Text";
String appendedString = append.apply("Some");
System.out.println(appendedString);
آپ مکمل متغیر قسم کا نام لکھے بغیر لیمبڈا پیرامیٹرز میں تشریحات بھی شامل کر سکتے ہیں:
Function<String, String> append = (@NonNull var string) -> string + " Text";
Z(ZGC)
ZGC ایک نیا کچرا جمع کرنے والا ہے جو کام نہیں کرتا ہے۔ یہ نئی میموری مختص کرتا ہے لیکن اسے دوبارہ شروع نہیں کرتا ہے۔ ZGC اعلی تھرو پٹ اور کم لیٹنسی کے ساتھ بڑی مقدار میں میموری کو منظم کرنے کا وعدہ کرتا ہے (ZGC صرف 64 بٹ پلیٹ فارم پر دستیاب ہے)۔ حوالہ رنگ کاری - ZGC پوائنٹر کلرنگ نامی تکنیک کے ساتھ 64 بٹ پوائنٹرز استعمال کرتا ہے۔ رنگین پوائنٹرز ڈھیر پر موجود اشیاء کے بارے میں اضافی معلومات محفوظ کرتے ہیں۔ جب میموری بکھر جاتی ہے، تو اس سے کارکردگی میں کمی سے بچنے میں مدد ملتی ہے جب GC کو نئے مختص کے لیے جگہ تلاش کرنے کی ضرورت ہوتی ہے۔ ZGC کا استعمال کرتے ہوئے کوڑا اٹھانا درج ذیل مراحل پر مشتمل ہے:- دنیا رک جاتی ہے: ہم ڈھیر پر موجود اشیاء تک پہنچنے کے لیے نقطہ آغاز تلاش کرتے ہیں (جیسے مقامی متغیرات یا جامد فیلڈز)؛
- روٹ لنکس سے شروع ہونے والے آبجیکٹ گرافس کا انٹرسیکشن۔ ہم ہر اس چیز کو نشان زد کرتے ہیں جس تک ہم پہنچتے ہیں (ZGC آبجیکٹ گراف کے ذریعے چلتا ہے اور دستیاب اشیاء کو نشان زد کرتے ہوئے رنگین مارکرز کا جائزہ لیتا ہے)؛
- کچھ کنارے کے معاملات کو سنبھالنا، جیسے کمزور روابط؛
- زندہ اشیاء کو منتقل کرنا، ڈھیر کے بڑے حصے کو خالی کرنا تاکہ مختص کو تیز کیا جا سکے۔
- جب حرکت کا مرحلہ شروع ہوتا ہے، ZGC ڈھیر کو صفحات میں تقسیم کرتا ہے اور ایک وقت میں ایک صفحہ کام کرتا ہے۔
- ZGC کسی بھی جڑ کی حرکت کو ختم کرتا ہے اور باقی حرکت ہوتی ہے۔
- ZGC کا ایک تعارف: ایک قابل توسیع اور تجرباتی کم تاخیر JVM کوڑا جمع کرنے والا
- اوپن جے ڈی کے کے لیے گھر کا کچرا جمع کرنے والا
- جاوا کا نیا Z گاربیج کلیکٹر (ZGC) بہت پرجوش ہے۔
ایپسیلون جی سی
Epsilon ایک کچرا جمع کرنے والا ہے جو میموری کی تخصیص کو سنبھالتا ہے لیکن کسی حقیقی میموری کی بحالی کے طریقہ کار کو نافذ نہیں کرتا ہے۔ دستیاب جاوا ہیپ ختم ہونے کے بعد، JVM بند ہو جائے گا۔ یعنی، اگر آپ اس کوڑا اٹھانے والے کے ساتھ کسی حوالہ کے پابند کیے بغیر لامحدود صف میں کوئی چیز بنانا شروع کر دیتے ہیں، تو ایپلیکیشن آؤٹ آف میموری ایرر کے ساتھ کریش ہو جائے گی (اور اگر کسی اور کے ساتھ ہو تو ایسا نہیں ہو گا، کیونکہ یہ بغیر حوالہ جات کے اشیاء کو صاف کر دے گا) . اس کی ضرورت کیوں ہے؟ یہاں کیوں ہے:- کارکردگی کی جانچ۔
- میموری پریشر ٹیسٹنگ۔
- VM انٹرفیس کی جانچ کرنا۔
- انتہائی مختصر کام۔
- آخری ڈراپ لیٹنسی میں بہتری۔
- آخری ڈراپ تھرو پٹ بہتری۔
- نیا جی سی ایپسیلون۔ جاوا میں کچرا جمع نہیں ہوسکتا ہے۔ جھٹکا احساس
- Epsilon GC کا تعارف: A No-Op تجرباتی کوڑا اٹھانے والا
ByteArrayOutputStream
ایک طریقہ ملا ہےvoid writeBytes(byte [])
جو دلیل سے لے کر تمام بائٹس کو لکھتا ہےOutputStream
۔FileReader
اورFileWriter
نئے کنسٹرکٹرز ملے جو آپ کو Charset کی وضاحت کرنے کی اجازت دیتے ہیں۔Path
دو نئے طریقے پکڑے، سٹرنگ آرگیومینٹ سے سٹرنگز کا ایک راستہ یا ترتیبof(String, String [])
واپس کرتا ہےPath
جو کہ مل کر پاتھ سٹرنگ بناتا ہے اورof(URI)
: URI سے پاتھ واپس کرتا ہے۔Pattern
— کو ایک ایسا طریقہ موصول ہواasMatchPredicate()
جو یہ جانچتا ہے کہ آیا دی گئی ان پٹ سٹرنگ دیے گئے پیٹرن سے میل کھاتی ہے (کیا یہ آپ کو ریگولر ایکسپریشن کا استعمال کرتے ہوئے پیش گوئی کرنے کی اجازت دیتا ہے تاکہ آپ، مثال کے طور پر، اسٹریم میں ڈیٹا فلٹر کر سکیں)۔String
میں نے بہت سے مفید طریقوں کو اٹھایا، جیسے:String strip()
: ہمیں ایک سٹرنگ واپس کرے گا جو یہ سٹرنگ ہے، جس میں سٹرنگ کے شروع اور آخر میں تمام خالی جگہیں ہٹا دی جائیں گی (ٹرم(ٹرم کی طرح)، لیکن خالی جگہوں کو مختلف طریقے سے بیان کرتا ہے)؛String stripLeading()
: ہمیں وہ سٹرنگ واپس کرے گا جو کہ یہ سٹرنگ ہے، سٹرنگ سے کسی بھی اہم جگہ کو ہٹا کر؛String stripTrailing()
: ہمیں وہ سٹرنگ واپس کرے گا جو یہ سٹرنگ ہے، سٹرنگ کے آخر میں کسی بھی خالی جگہ کو ہٹا کر؛Stream lines()
: ہمیں واپس کرے گا ، اس سٹرنگ سے نکالا گیا، لائن الگ کرنے والوں سے الگ کیا گیاStream
؛String
String repeat(int)
: ہمیں ایک سٹرنگ واپس کرے گا جو اس سٹرنگ کا ایک مجموعہ ہے، کئی بار دہرایا جاتا ہے۔boolean isBlank()
: اگر سٹرنگ خالی ہے یا صرف خالی جگہوں پر مشتمل ہے تو درست ہو جائے گا، دوسری صورت میں غلط۔
Thread
- طریقوں کو تباہ () اور روکنے (پھینکنے کے قابل) کو ہٹا دیا گیا ہے۔Files
کئی نئے طریقے ملے:String readString(Path)
: UTF-8 انکوڈنگ کا استعمال کرتے ہوئے بائٹس سے حروف کو ڈی کوڈ کرتے ہوئے، فائل سے تمام ڈیٹا کو سٹرنگ میں پڑھتا ہے۔String readString(Path, Charset)
: جیسا کہ اوپر کے طریقہ کار میں ہے، اس فرق کے ساتھ کہ بائٹس سے حروف کو ڈی کوڈنگ مخصوص چارسیٹ کا استعمال کرتے ہوئے ہوتی ہے۔Path writeString (Path, CharSequence, OpenOption [])
: ایک فائل میں حروف کی ترتیب لکھتا ہے۔ حروف کو UTF-8 انکوڈنگ کا استعمال کرتے ہوئے بائٹس میں انکوڈ کیا جاتا ہے۔Path writeString(Path, CharSequence,Charset, OpenOption [])
: اوپر جیسا ہی طریقہ، چارسیٹ میں مخصوص کردہ انکوڈنگ کا استعمال کرتے ہوئے صرف حروف کو بائٹس میں انکوڈ کیا جاتا ہے۔
جاوا 12
چھ مہینے گزر جاتے ہیں اور ہم جاوا کے ارتقاء کا اگلا مرحلہ دیکھتے ہیں۔ لہذا، یہ علم کا بیلچہ نکالنے اور کھودنے کا وقت ہے۔G1 کو اپ ڈیٹ کریں۔
G1 کے لیے درج ذیل اصلاحات کی گئی ہیں:-
غیر استعمال شدہ مختص میموری کا دوبارہ دعوی کریں۔
جاوا ہیپ میموری میں غیر استعمال شدہ میموری (یا دوسرے لفظوں میں غیر فعال) جیسی چیز ہوتی ہے۔ جاوا 12 میں انہوں نے اس مسئلے کو حل کرنے کا فیصلہ کیا، اب:
- G1 مکمل GC میں یا متوازی لوپ کے دوران ہیپ سے میموری واپس کرتا ہے۔ G1 مکمل GC کو روکنے کی کوشش کرتا ہے اور ہیپ ایلوکیشن کی بنیاد پر ایک متوازی لوپ شروع کرتا ہے۔ ہمیں G1 کو ڈھیر سے میموری واپس کرنے پر مجبور کرنا پڑے گا۔
یہ بہتری کارکردگی پر توجہ مرکوز کرتی ہے جب G1 استعمال میں نہ ہو تو ہیپ سے OS پر میموری کو خود بخود واپس کر دیتا ہے۔
-
جب وقفے کا وقت ختم ہو جائے تو مخلوط مجموعوں کو روکنا
کوڑا اٹھانے کے لیے درکار کام کی مقدار کو منتخب کرنے کے لیے G1 تجزیہ انجن کا استعمال کرتا ہے۔ یہ سیٹ کی وضاحت اور صفائی شروع کرنے کے بعد بغیر رکے زندہ اشیاء کو جمع کرتا ہے۔ اس کی وجہ سے کوڑا اٹھانے والا اپنے وقفے کے وقت کے ہدف سے تجاوز کر جاتا ہے۔ درحقیقت، یہ مسئلہ بہتری سے حل ہو جاتا ہے، کیونکہ اگر اگلے مرحلے پر عمل درآمد کا وقت معقول حد سے باہر ہو تو اس مرحلے میں خلل پڑ سکتا ہے۔
مائیکرو بینچ مارک
جاوا 12 نے مائیکرو بینچ مارکنگ ٹیسٹ متعارف کرائے تاکہ موجودہ بینچ مارکس کا استعمال کرتے ہوئے JVM کی کارکردگی کو آسانی سے جانچا جا سکے۔ یہ ان لوگوں کے لیے بہت مفید ہو گا جو خود JVM پر کام کرنا چاہتا ہے۔ اضافی ٹیسٹ جاوا مائیکرو بینچ مارک ہارنس (JMH) کا استعمال کرتے ہوئے بنائے گئے ہیں۔ یہ ٹیسٹ JVM پر مسلسل کارکردگی کی جانچ کی اجازت دیتے ہیں۔ JEP 230 تقریباً 100 ٹیسٹوں کے تعارف کی تجویز پیش کرتا ہے، جاوا کے نئے ورژن جاری ہونے پر نئے ٹیسٹ متعارف کرائے جاتے ہیں۔ یہاں شامل کیے جانے والے ٹیسٹوں کی ایک مثال ہے ۔شینندوہ
یہ کچرا جمع کرنے کا ایک الگورتھم ہے جس کا مقصد کم رسپانس ٹائم کی ضمانت دینا ہے (نچلی حد 10-500 ms ہے)۔ یہ جاوا تھریڈز کو چلانے کے ساتھ ساتھ صفائی کا کام کرتے وقت GC توقف کا وقت کم کرتا ہے۔ Shenandoah میں، وقفے کا وقت ڈھیر کے سائز سے آزاد ہے۔ اس کا مطلب ہے کہ وقفے کا وقت یکساں رہے گا قطع نظر اس کے کہ آپ کے ڈھیر کا سائز کچھ بھی ہو۔ یہ ایک تجرباتی خصوصیت ہے اور OpenJDK کی معیاری (Oracle) تعمیر میں شامل نہیں ہے۔سوئچ کو بہتر بنائیں
جاوا 12 نے پیٹرن میچنگ کے لیے سوئچ ایکسپریشنز کو بہتر بنایا ہے۔ ایک نیا نحو L → متعارف کرایا گیا تھا۔ یہاں نئے سوئچ کے اہم نکات کی فہرست ہے :- نیا نحو غلطیوں کو روکنے کے لیے وقفے کے بیان کی ضرورت کو ختم کرتا ہے۔
- سوئچ ایکسپریشنز اب ناکام نہیں ہوتے ہیں۔
- مزید برآں، ہم ایک ہی لیبل میں متعدد مستقل کی وضاحت کر سکتے ہیں۔
- ڈیفالٹ کیس اب سوئچ ایکسپریشنز میں درکار ہے۔
- بریک کو سوئچ ایکسپریشنز میں رجسٹر سے ہی اقدار واپس کرنے کے لیے استعمال کیا جاتا ہے (حقیقت میں، ایک سوئچ اقدار کو واپس کر سکتا ہے)۔
var result = switch (someDay) {
case "M", "W", "F" -> "MWF";
case "T", "TH", "S" -> "TTS";
default -> {
if(someDay.isEmpty())
break "Please insert a valid day.";
else
break "Looks like a Sunday.";
}
};
جاوا 13 میں تاثرات کو تبدیل کرنے کے لیے حتمی گائیڈ دیگر نئی خصوصیات:
-
String:
transform(Function f)
- فراہم کردہ فنکشن کو سٹرنگ پر لاگو کرتا ہے۔ نتیجہ ایک تار نہیں ہو سکتا.indent(int x)
- سٹرنگ میں x خالی جگہیں شامل کرتا ہے۔ اگر پیرامیٹر منفی ہے، تو معروف جگہوں کی اس تعداد کو ہٹا دیا جائے گا (اگر ممکن ہو)۔ -
Files
- ایک طریقہ پکڑا جیسے کہmismatch()
، جو بدلے میں، دو فائلوں کے مواد میں پہلے مماثل بائٹ کی پوزیشن کو تلاش کر کے واپس کرتا ہے، یا -1L اگر کوئی مماثلت نہیں ہے۔ -
ایک نئی کلاس نمودار ہوئی ہے -
CompactNumberFormat
اعشاریہ نمبر کو کمپیکٹ شکل میں فارمیٹ کرنے کے لیے۔ اس کمپیکٹ فارم کی ایک مثال 1,000,000 کے بجائے 1M ہے۔ اس طرح، نو حروف کی بجائے صرف دو دو درکار ہیں۔ -
ایک نیا بھی ہے
enum
،NumberFormatStyle
جس کی دو قدریں ہیں - LONG اور SHORT۔ -
InputStream
طریقہ ملاskipNBytes(long n)
: ان پٹ اسٹریم سے بائٹس کی نویں تعداد کو چھوڑ دیں۔
- جاوا 12 یہاں ہے: نیا کیا ہے؟
- جاوا 12 میں نیا کیا ہے۔
- جاوا 12 میں نیا کیا ہے (وِچر پروگرامر کے بلاگ نوٹس سے)
جاوا 13
دنیا ساکت نہیں رہتی، یہ حرکت کرتی ہے، ترقی کرتی ہے، بالکل جاوا - جاوا 13 کی طرح۔ٹیکسٹ بلاک
جب ڈور کی وضاحت کی بات آتی ہے تو جاوا کو ہمیشہ تھوڑا سا نقصان اٹھانا پڑتا ہے۔ اگر ہمیں اسپیس، لائن بریک، اقتباس یا کسی اور چیز کے ساتھ لائن کی وضاحت کرنے کی ضرورت ہے، تو اس کی وجہ سے کچھ مشکلات پیدا ہوئیں، اس لیے ہمیں خاص حروف کا استعمال کرنا پڑا: مثال کے طور پر، \n لائن کے وقفے کے لیے، یا کچھ لائن سے فرار خود اس سے کوڈ کی پڑھنے کی اہلیت نمایاں طور پر کم ہو جاتی ہے اور ایسی لائن لکھنے میں اضافی وقت لگتا ہے۔ یہ خاص طور پر اس وقت نمایاں ہو جاتا ہے جب وہ تار لکھتے ہیں جو JSON، XML، HTML وغیرہ کو ظاہر کرتے ہیں۔ نتیجے کے طور پر، اگر ہم ایک چھوٹا Json لکھنا چاہتے ہیں، تو یہ کچھ اس طرح نظر آئے گا:String JSON_STRING = "{\r\n" + "\"name\" : \"someName\",\r\n" + "\"site\" : \"https://www.someSite.com/\"\r\n" + "}";
اور پھر جاوا 13 منظر پر آتا ہے اور ہمیں ٹیکسٹ سے پہلے اور بعد میں ٹرپل ڈبل کوٹس کی شکل میں اس کا حل پیش کرتا ہے (جسے وہ ٹیکسٹ بلاک کہتے ہیں)۔ آئیے اس جدت کا استعمال کرتے ہوئے پچھلی json مثال کو دیکھیں:
String TEXT_BLOCK_JSON = """
{
"name" : "someName",
"site" : "https://www.someSite.com/"
}
""";
بہت آسان اور واضح، ہے نا؟ String
ان بلاکس کے انتظام کے لیے بالترتیب تین نئے طریقے بھی شامل کیے گئے:
stripIndent()
: سٹرنگ سے بے ترتیب خالی جگہوں کو ہٹاتا ہے۔ یہ مفید ہے اگر آپ ملٹی لائن سٹرنگز پڑھ رہے ہیں اور اسی قسم کے بے ترتیب وائٹ اسپیس اخراج کو لاگو کرنا چاہتے ہیں جو ایک واضح اعلان کے ساتھ ہوتا ہے (بنیادی طور پر بے ترتیب وائٹ اسپیس کو ہٹانے کے لیے کمپائلر کی نقل کرنا)؛formatted(Object... args )
: کی طرحformat(String format, Object... arg)
، لیکن ٹیکسٹ بلاکس کے لیے؛translateEscapes()
: فرار کی ترتیب کے ساتھ ایک تار لوٹاتا ہے (جیسے \r) متعلقہ یونیکوڈ قدر میں ترجمہ کیا گیا ہے۔
سوئچ کو بہتر بنائیں
سوئچ ایکسپریشن جاوا 12 میں متعارف کرائے گئے تھے، اور 13 ان کو بہتر بناتے ہیں۔ 12 میں آپ وقفے کا استعمال کرتے ہوئے واپسی کی قدروں کی وضاحت کرتے ہیں۔ 13 میں، واپسی کی قیمت کو پیداوار سے بدل دیا گیا۔ اب سوئچ ایکسپریشن جو ہمارے پاس جاوا 12 سیکشن میں تھا اسے اس طرح دوبارہ لکھا جا سکتا ہے:var result = switch (someDay) {
case "M", "W", "F" -> "MWF";
case "T", "TH", "S" -> "TTS";
default -> {
if(someDay.isEmpty())
yield "Please insert a valid day.";
else
yield "Looks like a Sunday.";
}
};
اگرچہ جاوا سے واقف پروگرامرز کے لیے وقفہ قبول کرنا معمول کی بات تھی، تاہم یہ کافی عجیب تھا۔ مجھے بتانے کی کوشش کر رہا ہے بریک سچ کیا ہے؟ نیا (نسبتاً نیا) حاصل شدہ مطلوبہ لفظ واضح ہے اور مستقبل میں دوسری جگہوں پر ظاہر ہو سکتا ہے جہاں قدریں واپس کی جاتی ہیں۔ ان لوگوں کے لیے جو اس موضوع میں گہری دلچسپی رکھتے ہیں، میں تجویز کرتا ہوں کہ آپ اپنے آپ کو ان مواد سے واقف کروائیں:
ڈائنامک سی ڈی ایس آرکائیوز
CDS - کلاس ڈیٹا شیئرنگ۔ آپ کو عام طور پر استعمال ہونے والی کلاسوں کے سیٹ کو آرکائیو میں پیک کرنے کی اجازت دیتا ہے جسے بعد میں متعدد JVM مثالوں کے ذریعے لوڈ کیا جا سکتا ہے۔ ہمیں اس کی ضرورت کیوں ہے؟ حقیقت یہ ہے کہ کلاسوں کو لوڈ کرنے کے عمل میں، JVM وسائل کے لحاظ سے بہت ساری کارروائیاں کرتا ہے، جیسے کہ کلاسز کو پڑھنا، انہیں اندرونی ڈھانچے میں محفوظ کرنا، پڑھنے والی کلاسوں کی درستگی کی جانچ کرنا، انحصار شدہ کلاسوں کو تلاش کرنا اور لوڈ کرنا وغیرہ۔ .، اور اس سب کے بعد ہی کلاسز کام کرنے کے لیے تیار ہیں۔ قابل فہم طور پر، بہت سارے وسائل ضائع ہوتے ہیں، کیونکہ JVM مثالیں اکثر ایک ہی کلاس کو لوڈ کر سکتی ہیں۔ مثال کے طور پر String، LinkedList، Integer۔ ٹھیک ہے، یا ایک ہی ایپلی کیشن کی کلاسز، اور یہ سب وسائل ہیں۔ اگر ہم تمام ضروری اقدامات صرف ایک بار انجام دیتے ہیں اور پھر دوبارہ ڈیزائن کی گئی کلاسز کو ایک آرکائیو میں رکھ دیتے ہیں جو کئی JVMs کی میموری میں لوڈ کی جا سکتی ہیں، تو یہ میموری کی جگہ کو نمایاں طور پر بچا سکتا ہے اور ایپلیکیشن شروع ہونے کا وقت کم کر سکتا ہے۔ درحقیقت، سی ڈی ایس صرف اس طرح کا آرکائیو بنانا ممکن بناتا ہے۔ Java 9 نے صرف سسٹم کلاسز کو آرکائیو میں شامل کرنے کی اجازت دی۔ جاوا 10 - آرکائیو میں ایپلیکیشن کلاسز شامل کریں۔ اس طرح کے محفوظ شدہ دستاویزات کی تخلیق پر مشتمل ہے:- درخواست کے ذریعے بھری ہوئی کلاسوں کی فہرست بنانا؛
- ہمیں ملنے والی کلاسوں کے ساتھ ایک انتہائی ضروری آرکائیو بنانا۔
ساکٹ API کو اپ ڈیٹ کریں۔
ساکٹ API ( java.net.Socket اور java.net.ServerSocket ) اپنے آغاز سے ہی بنیادی طور پر جاوا کا ایک لازمی حصہ ہے، لیکن ساکٹ کو پچھلے بیس سالوں میں کبھی اپ ڈیٹ نہیں کیا گیا۔ سی اور جاوا میں لکھے گئے، وہ بہت، بہت بھاری اور برقرار رکھنا مشکل تھے۔ لیکن جاوا 13 نے اس پورے معاملے میں اپنی ایڈجسٹمنٹ کرنے کا فیصلہ کیا اور بنیادی نفاذ کو تبدیل کیا۔ اب، PlainSocketImpl کے بجائے ، فراہم کنندہ انٹرفیس کو NioSocketImpl سے تبدیل کر دیا گیا ہے ۔ یہ نیا کوڈڈ نفاذ اسی بیک اینڈ انفراسٹرکچر پر مبنی ہے جیسا کہ java.nio ۔ بنیادی طور پر کلاس ہم آہنگی کے طریقوں کی بجائے java.util.concurrent بفر کیش اور لاکنگ میکانزم (جو سیگمنٹ پر مبنی ہیں) استعمال کرتی ہے۔ اب اسے مقامی کوڈ کی ضرورت نہیں ہے، جس سے مختلف پلیٹ فارمز پر پورٹ کرنا آسان ہو جاتا ہے۔ پھر بھی، ہمارے پاس PlainSocketImpl استعمال کرنے کا ایک طریقہ ہے ، لیکن اب سے NioSocketImpl بطور ڈیفالٹ استعمال ہوتا ہے ۔ZGC کے لیے میموری کی واپسی۔
جیسا کہ ہمیں یاد ہے، Z کوڑا کرکٹ جمع کرنے والے کو Java 11 میں کم تاخیر والے کوڑے کو جمع کرنے کے طریقہ کار کے طور پر متعارف کرایا گیا تھا تاکہ GC کا وقفہ کبھی بھی 10 ms سے زیادہ نہ ہو۔ لیکن ایک ہی وقت میں، دوسرے ورچوئل GC ہاٹ سپاٹ کے برعکس، جیسا کہ Shenandoah اور G1، یہ OS کو غیر استعمال شدہ ڈائنامک میموری واپس کر سکتا ہے۔ یہ ترمیم اس J صلاحیت کو ZGC میں شامل کرتی ہے۔ اس کے مطابق، ہمیں بہتر کارکردگی کے ساتھ ساتھ میموری کے نشانات میں کمی آتی ہے، اور ZGC اب آپریٹنگ سسٹم میں غیر متعین میموری کو بطور ڈیفالٹ واپس کرتا ہے جب تک کہ مخصوص کم از کم ہیپ سائز تک نہ پہنچ جائے۔ ایک اور چیز: ZGC کے پاس اب زیادہ سے زیادہ تعاون یافتہ ہیپ سائز 16 TB ہے۔ پہلے، 4TB کی حد تھی۔ دیگر اختراعات:javax.security
-jdk.sasl.disabledMechanisms
SASL میکانزم کو غیر فعال کرنے کے لیے ایک پراپرٹی شامل کی۔java.nio
- ایک طریقہ شامل کیا گیا ہےFileSystems.newFileSystem (Path, Map <String,?>)
- بالترتیب، ایک نئی فائل بنانے کے لیے۔- کلاسوں میں
java.nio
اب مطلق (رشتہ دار کے برخلاف)get
اورset
-طریقہ کار ہیں۔ وہ، بیس خلاصہ کلاس کی طرح ، بفر کے حصے کو بازیافت کرنے کاBuffer
طریقہ شامل کرتے ہیں ۔slice()
- DOM اور SAX فیکٹریوں کو شروع کرنے کے طریقے شامل کیے گئے
javax.xml.parsers
(نیم اسپیس سپورٹ کے ساتھ)۔ - یونیکوڈ سپورٹ کو ورژن 12.1 میں اپ ڈیٹ کر دیا گیا ہے۔
- جاوا 13: نئی خصوصیات
- جاوا 13 کے بارے میں سب کچھ: اپ ڈیٹس کی دنیا میں غوطہ لگانا
- JDK 13 میں 81 نئی خصوصیات اور APIs
GO TO FULL VERSION