JavaRush /جاوا بلاگ /Random-UR /جاوا 12 یہاں ہے: نیا کیا ہے؟

جاوا 12 یہاں ہے: نیا کیا ہے؟

گروپ میں شائع ہوا۔
لہذا، جاوا نمبر 12 پر ظاہر ہوا۔ اور اگرچہ یہ ایل ٹی ایس ریلیز نہیں ہے (یعنی طویل مدتی سپورٹ نہیں ہے، ایسی ریلیز نہیں ہے جسے طویل عرصے تک سپورٹ کیا جائے گا۔ ورژن 11 کو آٹھ کے ساتھ پہلی ایل ٹی ایس ریلیز سمجھا جاتا ہے۔ سال کی معاونت کی مدت )، دلچسپ چیزیں اس کی تازہ کاری میں نمودار ہوئیں۔ آئیے ان میں سے سب سے اہم کو دیکھتے ہیں۔ یاد رہے کہ جاوا میں، تبدیلی کی تجاویز کو مختصراً jeps کہا جاتا ہے (JDK Enhancement Proposal سے)۔ جاوا 12 یہاں ہے: نیا کیا ہے؟  - 1

سب سے دلچسپ Jep کا JDK 12

189: شینانڈوہ: ایک کم توقف کے وقت کوڑا جمع کرنے والا (تجرباتی) کچرا جمع کرنے والا، شینانڈوہ ایک نیا الگورتھم استعمال کرتا ہے جو جاوا تھریڈز کو چلانے کے ساتھ ساتھ صاف کرکے رن ٹائم کو کم کرتا ہے۔ اس صورت میں، شینانڈوہ میں وقفہ کا وقت ڈھیر کے سائز سے قطع نظر ایک جیسا ہوگا۔ کسی وجہ سے، اوریکل نے اپنی "آفیشل" ریلیز کی تعمیر میں شینڈوہ کو شامل نہیں کیا، اس حقیقت کے باوجود کہ ڈویلپر اس خصوصیت کو نئی ریلیز میں سب سے اہم سمجھتے ہیں۔ لہذا اگر آپ جدید ترین گاربیج کلیکٹر کو آزمانے کا ارادہ رکھتے ہیں، تو آپ کو تیسرے فریق کی تعمیرات، جیسے Azul استعمال کرنے کی ضرورت ہے ۔ 230: Microbenchmark Suite Microbenchmark ایک مائیکرو بینچ مارک ہے جو کسی چھوٹے عنصر کی کارکردگی کو ماپتا ہے۔ جاوا میں، وہ JMH فریم ورک کا استعمال کرتے ہوئے لکھے اور چلائے جاتے ہیں۔ ورژن 12 کے بعد سے، JMH کو JDK میں شامل کر دیا گیا ہے، اور اس میں پہلے سے ہی ٹیسٹ لکھے ہوئے ہیں، جو ڈویلپرز کے لیے زندگی کو آسان بنا دیتے ہیں۔ 325: سوئچ ایکسپریشنز (پیش نظارہ) سوئچ اسٹیٹمنٹ کے ساتھ اظہار لکھنے کی ایک نئی شکل۔ فیچر کا صفحہ روایتی سوئچ کا استعمال کرتے ہوئے مثال کوڈ فراہم کرتا ہے، جہاں وقفے کا مسلسل استعمال اسے غیر ضروری طور پر لفظی بنا دیتا ہے، جس کی وجہ سے اکثر بے ترتیب غلطیاں ہوتی ہیں۔
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;
}
اپ ڈیٹ کے مصنفین نے سوئچ لیبل "کیس ایل ->" کی ایک نئی شکل متعارف کرانے کی تجویز پیش کی ہے تاکہ واضح طور پر اس بات کی نشاندہی کی جا سکے کہ اگر یہ لیبل موزوں ہے تو صرف لیبل کے دائیں طرف کا کوڈ ہی لاگو کیا جائے گا۔ اس طرح، اوپر دکھائے گئے کوڈ کو نئے نحو کا استعمال کرتے ہوئے نمایاں طور پر مختصر کیا جا سکتا ہے:
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);
}
334: JVM Constants API Constant pool میں نام نہاد لوڈ ایبل کنسٹینٹس ہوتے ہیں۔ یہ قدریں ہیں، مثال کے طور پر قسم کی String یا کسی بھی قدیم قسم کے ساتھ ساتھ رن ٹائم آرٹفیکٹس، جیسے کلاسز اور طریقے۔ کلاس فائلوں کے ساتھ کام کرتے وقت، پروگرامرز لوڈ ایبل کنسٹنٹ کو جوڑ توڑ کے لیے آسان ٹولز سے فائدہ اٹھائیں گے۔ اس jep کے مصنفین نے علامتی روابط کی نئی قدر پر مبنی قسمیں متعارف کروا کر اس مسئلے کو حل کرنا شروع کیا، جن میں سے ہر ایک مخصوص قسم کے مستقل کو بیان کرے گا۔ انوویشن کوڈ ۔ 340: ایک AArch64 پورٹ، دو نہیں یہ پیچیدہ نام جاوا 9 میں پیدا ہونے والے مسئلے کا حل چھپاتا ہے، جب اوریکل کی 64-بٹ اے آر ایم پورٹس اور ریڈ ہیٹ کی aarch64 ایک ہی وقت میں کٹ میں نمودار ہوئیں۔ مزید یہ کہ، JDK 11 کی ریلیز کے وقت، یہاں تک کہ خود اوریکل نے بھی اوریکل بندرگاہوں کے 64 بٹ ورژن کی حمایت نہیں کی۔ لہذا اب 64 بٹ اوریکل بندرگاہوں کو ہٹا دیا گیا ہے، 32 بٹ ARM32، اور 64 بٹ، زیادہ پیداواری، aarch64 کو چھوڑ کر۔ 341: ڈیفالٹ سی ڈی ایس آرکائیوز ایک بہت ہی عمدہ اپ ڈیٹ کیونکہ یہ واقعی ایپلی کیشن لانچ کو تیز کرتا ہے۔ یہ کوئی راز نہیں ہے کہ جب جاوا ایپلیکیشن شروع ہوتی ہے تو کلاسز کی ایک بڑی تعداد لوڈ ہونا شروع ہو جاتی ہے، اور یہ ایک طویل عمل ہے۔ سی ڈی ایس کا مطلب ہے کلاس ڈیٹا شیئرنگ، اور یہ فنکشن آپ کو ان تمام کلاسوں کو شروع کرنے کی اجازت دیتا ہے جو ان کلاسوں کی ڈیفالٹ فہرست کا استعمال کرتے ہوئے، ایک خصوصی کلاس ڈیٹا شیئرنگ آرکائیو میں شروع کی جاتی ہیں۔ نتیجے کے طور پر، ایپلیکیشن لانچ کی رفتار نمایاں طور پر بڑھ جاتی ہے۔ 344: Abortable Mixed Collections for G1 G1 ایک کوڑا اٹھانے والا ہے جو JDK 9 میں متوازی GC کی جگہ لے کر کوڑا اٹھانے والا اہم بن گیا۔ جاوا 10 میں، G1 نے متعدد دھاگوں میں کچرا جمع کرنا سیکھا۔ تاہم، ہر کوئی اپنے کام سے خوش نہیں تھا؛ اہم مسائل میں سے ایک طویل وقفہ تھا۔ اب وہ منسوخ ہو سکتے ہیں۔ G1، پروگرام کے رویے کے تجزیہ کی بنیاد پر، کام کی مقدار کا تعین کرتا ہے، اور پھر "لائیو" اشیاء کو کلیکشن سیٹ میں جمع کرتا ہے جب تک کہ یہ بغیر رکے، سب کچھ جمع نہ کر لے۔ اکثر G1 کام کی رقم کا حساب کتاب کرنے سے محروم رہتا ہے اور بہت لمبا کام کرتا ہے۔ ایک بار jep-344 کے لاگو ہونے کے بعد، G1 کوڑا کرکٹ کے بڑھتے ہوئے جمع کرنے پر سوئچ کر سکتا ہے اور اگر اگلا مرحلہ مناسب سے زیادہ مکمل ہونے میں زیادہ وقت لیتا ہے، تو اس قدم کو ختم کیا جا سکتا ہے۔ 346: G1 سے غیر استعمال شدہ کمٹڈ میموری کو فوری طور پر واپس کریں۔ اور مذکورہ G1 اسمبلر کے کیمپ میں کچھ اور اپ ڈیٹس۔ کبھی کبھی ایسا ہوا کہ جاوا ہیپ میموری کا ایک گروپ تھا، لیکن کسی نے اسے استعمال نہیں کیا، یہ میموری۔ جاوا 12 میں، آپ اب آپریٹنگ سسٹم میں غیر فعال میموری کو "واپس" کر سکتے ہیں۔ پہلے، یادداشت ترک کرنے کے لیے G1 حاصل کرنا بہت کم ہوتا تھا، لیکن اب سب کچھ آسان کر دیا گیا ہے۔ نئی خصوصیت کے ساتھ، ایپلیکیشن کو غیر فعال کے طور پر بیان کیا جاتا ہے اگر آخری تعمیر کے بعد کا وقفہ ختم ہو گیا ہو اور کوئی سمورتی سائیکل نہ ہو۔ دوسری صورت حال یہ ہے کہ اگر getloadavg() فنکشن، جس کی کچھ عرصے سے نگرانی کی گئی ہے، سیٹ قابل قبول حد سے نیچے بوجھ دکھاتا ہے۔ اگر دو واقعات میں سے ایک واقع ہوتا ہے تو، جزوی طور پر کوڑا اٹھانا شروع ہو جاتا ہے۔ جاوا 12 میں کیا نہیں ہے: Raw String Literals بہت سے ڈویلپرز اس خصوصیت میں دلچسپی رکھتے تھے، لیکن یہ اس ریلیز میں کبھی نظر نہیں آیا۔ اس کے مصنفین نے فیصلہ کیا کہ اسے ابھی بھی کام کی ضرورت ہے۔ لہذا، ہم امید کرنے کی جسارت کرتے ہیں کہ سٹرنگ لٹریلز کے ساتھ آسان کام کے لیے ایک فنکشن جاوا کے اگلے ورژن میں سے ایک میں ظاہر ہوگا۔ خام سٹرنگ لٹریلز کے لیے سپورٹ آپ کو زبان سے قطع نظر اسٹرنگ کی معلومات کے ساتھ کام کرنے کی اجازت دیتا ہے۔ اس سے شیلڈنگ کی ضرورت ختم ہوجاتی ہے۔ خاص طور پر ریگولر ایکسپریشنز میں مفید ہے، جہاں بیک سلیش بڑے پیمانے پر استعمال ہوتے ہیں، اور ونڈوز پاتھ میں، جہاں بیک سلیش کو حد بندی کے طور پر استعمال کیا جاتا ہے۔ یعنی ایسی تعمیرات سے بچنے کے لیے: C:\\My\\Test\\Pack\\
ہر پروگرامر کو اکثر اپنے کام میں ایک یا دوسری مشکل کا سامنا کرنا پڑتا ہے۔ کبھی کبھی وہ ڈویلپر کی ناتجربہ کاری کے ساتھ منسلک ہوتے ہیں، لیکن کبھی کبھی خود کے آلے کی خرابی کے ساتھ. جاوا ایک بہترین زبان ہے، لیکن یہ کامل سے بہت دور ہے۔ شاید آپ کو جاوا میں پہلے ہی کسی چیز کا سامنا کرنا پڑا ہے اور آپ جانتے ہیں کہ آپ اپنے "ٹول" (زبان) میں کیا تبدیل کرنا چاہتے ہیں؟ تبصرے میں اشتراک کریں!

نتائج

جاوا 12 میں کوئی انقلاب نہیں آیا۔ تاہم، کسی نے اس کی منصوبہ بندی نہیں کی. تاہم، متعدد اختراعات کا مقصد ایپلی کیشنز کے آپریشن کو بہتر بنانا اور کام کو تیز کرنا ہے، جو کہ اچھی خبر ہے۔ ویسے، IDEA پہلے ہی JDK 12 کو سپورٹ کرتا ہے، لہذا آپ اس کی صلاحیتوں کو آزما سکتے ہیں۔ بلاشبہ، چند اپ ڈیٹس براہِ راست ابتدائیوں کو متاثر کرتی ہیں، حالانکہ وہ لوگ جنہوں نے ابھی JavaRush سیکھنا شروع کیا ہے وہ نئے سوئچ کے ساتھ کھیل سکتے ہیں (--enable-preview جھنڈا سیٹ کرنے کے بعد)۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION