د جاوا SE 22 پلیټ فارم خوشې کول او د OpenJDK 22 خلاص حواله پلي کول

د شپږو میاشتو پراختیا وروسته، اوریکل جاوا SE 22 (جاوا پلیټ فارم، معیاري نسخه 22) خپور کړ، کوم چې د OpenJDK خلاصې سرچینې پروژه د حوالې پلي کولو په توګه کاروي. د ځینې تخریب شوي ب featuresو لرې کولو استثنا سره ، جاوا SE 22 د جاوا پلیټ فارم پخوانیو ریلیزونو سره شاته مطابقت ساتي — ډیری دمخه لیکل شوي جاوا پروژې به لاهم د ترمیم پرته کار وکړي کله چې د نوي نسخې لاندې پرمخ ځي. د جاوا SE 22 (JDK، JRE، او Server JRE) د نصب کولو وړ جوړونه د لینکس (x86_64، AArch64)، وینډوز (x86_64)، او macOS (x86_64، AArch64) لپاره چمتو شوي. د OpenJDK پروژې لخوا رامینځته شوی ، د جاوا 22 حوالې پلي کول د GPLv2 جواز لاندې د GNU ClassPath استثنااتو سره په بشپړ ډول خلاص دی ترڅو سوداګریز محصولاتو ته متحرک لینک کولو ته اجازه ورکړي.

جاوا SE 22 د منظم ملاتړ ریلیز په توګه طبقه بندي شوی او تر راتلونکي خوشې کیدو پورې به تازه معلومات ترلاسه کولو ته دوام ورکړي. د اوږدې مودې ملاتړ (LTS) څانګه باید د Java SE 21 یا Java SE 17 وي، کوم چې به په ترتیب سره تر 2031 او 2029 پورې تازه معلومات ترلاسه کړي (عموما تر 2028 او 2026 پورې شتون لري). د جاوا SE 11 د LTS څانګې لپاره عامه ملاتړ تیر سپټمبر پای ته رسیدلی ، مګر تمدید شوی ملاتړ به تر 2032 پورې دوام وکړي. د جاوا SE 8 LTS څانګې لپاره پراخ شوی ملاتړ به تر 2030 پورې دوام وکړي.

اجازه راکړئ تاسو ته یادونه وکړو چې د جاوا 10 په خپرولو سره پیل کول، پروژه نوي پراختیایي پروسې ته بدله شوې، د نوي ریلیزونو رامینځته کولو لپاره لنډ دوره معنی لري. نوي فعالیت اوس په دوامداره توګه تازه شوي ماسټر برانچ کې رامینځته شوی ، کوم چې چمتو شوي بدلونونه پکې شامل دي او له هغې څخه څانګې په هرو شپږو میاشتو کې د نوي ریلیزونو ثبات لپاره شاخ کیږي.

په جاوا 22 کې نوې ځانګړتیاوې په لاندې ډول دي:

  • د G1 کثافاتو راټولونکي کې د سیمې پنینګ لپاره ملاتړ شامل دی ، کوم چې تاسو ته اجازه درکوي په لنډمهاله توګه د جاوا شیانو موقعیت په حافظه کې تنظیم کړئ ترڅو د کثافاتو راټولونکي لخوا د دوی له حرکت څخه مخنیوی وشي او د دې شیانو حوالې ته اجازه ورکړئ په خوندي ډول د جاوا او اصلي کوډ ترمینځ تیر شي. پنینګ تاسو ته اجازه درکوي چې ځنډ کم کړئ او د کثافاتو راټولولو غیر فعالولو څخه مخنیوی وکړئ کله چې د اصلي کوډ سره د JNI (جاوا اصلي انٹرفیس) مهمې سیمې اجرا کوئ (د دې برخو اجرا کولو پرمهال ، JVM باید د دوی سره تړلي مهم توکي حرکت نه کړي ترڅو د ریس شرایطو مخه ونیسي). پننګ کول د کثافاتو راټولونکي له لید څخه مهم توکي لرې کوي ، کوم چې کولی شي د ناپاکو سیمو پاکولو ته دوام ورکړي.
  • یو ابتدایی خصوصیت اضافه شوی ترڅو توضیحاتو ته اجازه ورکړي چې د سوپر (...) زنګ کولو دمخه په ساختمانونو کې مشخص شي ، د مورثي ټولګي جوړونکي څخه په څرګند ډول د والدین ټولګي جوړونکي ته زنګ وهلو لپاره کارول کیږي که چیرې دا څرګندونې د جوړونکي لخوا رامینځته شوي مثال ته اشاره ونه کړي. ټولګی بهرنی { باطل هیلو() { System.out.println("Hello"); } ټولګي داخلي { داخلي () { سلام (); super(); } } }
  • د FFM (بهرنی فعالیت او حافظه) API مستحکم شوی ، د بهرني کتابتونونو څخه د فنکشنونو په زنګ وهلو او د JVM بهر حافظې ته لاسرسي سره د بهرني کوډ او ډیټا سره د جاوا برنامو تعامل ته اجازه ورکوي ، پرته له دې چې د JNI (جاوا اصلي انٹرفیس) کارولو څخه کار واخلي.
  • د بې نومه متغیرونو او نمونو میچ کولو لپاره ملاتړ فعال شوی دی - د زنګ وهلو پر مهال د نه کارول شوي مګر اړین متغیرونو او نمونو پرځای ، تاسو اوس کولی شئ د "_" کرکټر مشخص کړئ. // د String pageName = سویچ (پاڼه) { قضیه GitHubIssuePage(var url, var منځپانګه، var لینکونه، int issueNumber) -> "مسله #" + مسله نمبر؛ ... } ; // اوس تاسو کولی شئ String pageName = switch (page) { case GitHubIssuePage(_, _, _, int issueNumber) -> "ISSUE #" + issueNumber; };
  • د کلاس فایل API لومړني پلي کول د جاوا کلاس فایلونو د پارس کولو ، تولید کولو او بدلولو لپاره وړاندیز شوی. ClassFile cf = ClassFile.of(); ClassModel classModel = cf.parse(bytes); byte[] newBytes = cf.build(classModel.thisClass().asSymbol()، classBuilder -> { د (ClassElement ce : classModel) لپاره { که (!(ce instanceof MethodModel mm && mm.methodName().stringValue(). startsWith("debug"))) { classBuilder.with(ce);
  • د جاوا یوټیلیټ د جاوا پروګرامونو چلولو وړتیا چمتو کوي، د څو کوډ فایلونو یا مخکې جوړ شوي ټولګي کتابتونونو په بڼه چمتو شوي، پرته له دې چې دا فایلونه په جلا توګه تالیف کړي او د جوړ سیسټم تنظیم کړي. نوی خصوصیت د پروګرامونو چلول اسانه کوي چې په کې د مختلف ټولګیو کوډ په جلا فایلونو کې جلا شوی وي. Prog.java: ټولګي Prog { عامه جامد باطل اصلي(String[] args) { Helper.run(); } } Helper.java: ټولګي مرسته کوونکی { static void run() { System.out.println("سلام!"); } }

    د مثال په توګه، د پروګرام چلولو لپاره چې دوه فایلونه لري "Prog.java" او "Helper.java" دا اوس د "java Prog.java" چلولو لپاره کافي دي، کوم چې به د پروګ ټولګي تالیف کړي، د مرستندویه ټولګي لپاره یوه حواله تعریف کړي، د مددگار فایل موندل او تالیف کړئ او اصلي میتود ته زنګ ووهئ.

  • د سټینګ ټیمپلیټونو دوهم لومړني پلي کول اضافه شوي ، د سټینګ لیکونو او متن بلاکونو سربیره پلي شوي. د سټینګ ټیمپلیټونه تاسو ته اجازه درکوي متن د حساب شوي بیانونو او متغیرونو سره د + آپریټر کارولو پرته یوځای کړئ. د بیانونو بدیل د بدیلونو په کارولو سره ترسره کیږي \{..}، او ځانګړي هینډلرونه د بدل شوي ارزښتونو د سموالي د چک کولو لپاره نښلول کیدی شي. د مثال په توګه، د SQL انجن هغه ارزښتونه چک کوي چې د SQL کوډ کې ځای پر ځای شوي او د محصول په توګه java.sql.Statement څیز بیرته راګرځوي، پداسې حال کې چې د JSON پروسیسر د JSON بدیلونو سمه څارنه کوي او JsonNode بیرته راګرځوي. د سټرینګ پوښتنه = "ټاکئ * له شخص څخه چیرته p." + ملکیت + " = '" + ارزښت + "'"; // د بیان پوښتنه وه = SQL." "" "SELECT * FROM Person p WHERE p.\{property} = '\{value}'"""; // شو
  • د ویکتور API اووم مخکتنه اضافه شوې ، د ویکتور محاسبې لپاره دندې چمتو کوي چې په x86_64 او AArch64 پروسیسرونو کې د ویکتور لارښوونو په کارولو سره ترسره کیږي او عملیاتو ته اجازه ورکوي چې په ورته وخت کې ډیری ارزښتونو (SIMD) ته پلي شي. د سکیلر عملیاتو د آټو ویکٹرائزیشن لپاره د HotSpot JIT کمپیلر کې چمتو شوي ظرفیتونو برخلاف ، نوی API دا ممکنه کوي چې د موازي ډیټا پروسس کولو لپاره په واضح ډول ویکٹرائزیشن کنټرول کړي.
  • د تمدید شوي سټریم API لومړني پلي کول اضافه شوي چې ستاسو د خپل مینځنیو عملیاتو تعریف کولو ملاتړ کوي ، کوم چې ممکن په هغه قضیو کې ګټور وي چیرې چې موجوده جوړ شوي منځګړي عملیات د مطلوب ډیټا بدلون لپاره کافي ندي. اصلي هینډلرونه د نوي منځمهاله عملیاتو Stream::gather (Gatherer) په کارولو سره وصل شوي ، کوم چې د کارونکي لخوا ټاکل شوي هینډلر پلي کولو سره د جریان عناصر پروسس کوي. jshell> Stream.of(1,2,3,4,5,6,7,8,9) راټول کړئ(نوی کړکۍ فکس شوی(3)).toList()$1 ==> [[1, 2, 3], [۴، ۵، ۶]، [۷، ۸، ۹]]
  • د ساختماني همغږي لپاره د تجربې API دوهمه نسخه د ازموینې لپاره وړاندیز شوې ، کوم چې د یو واحد بلاک په توګه په مختلف تارونو کې اجرا شوي ډیری دندو پروسس کولو سره د څو تارونو غوښتنلیکونو پراختیا ساده کوي.
  • د "اصلي" میتود په ښکاره ډول اعلان شوي ټولګیو او نامعلومو مثالونو دوهم لومړني پلي کول اضافه کړل ، کوم چې کولی شي د عامه / جامد اعالمیو سره توزیع کړي ، د دلیلونو لړۍ تیر کړي ، او د ټولګي اعالمیې سره تړلې نورې ادارې. // عامه طبقه وه HelloWorld { عامه static void main(String[] args) { System.out.println("سلام نړۍ!"); } } // اوس تاسو کولی شئ اصلي() { System.out.println("سلام، نړۍ!") باطل کړئ؛ }
  • د سکوپ شوي ارزښتونو دوهم مخکتنه پلي کول اضافه شوي، د بدلون وړ ډیټا ته اجازه ورکوي چې د تارونو په اوږدو کې شریک شي او ډیټا د ماشومانو د تارونو ترمینځ په مؤثره توګه تبادله شي (ارزښتونه په میراث شوي دي). سکوپ شوي ارزښتونه د تار - محلي متغیر میکانیزم ځای په ځای کولو لپاره رامینځته شوي او ډیر اغیزمن دي کله چې د ډیری لوی شمیر مجازی تارونو (زرګونو یا ملیونونو تارونو) کارولو سره. د Scoped Values ​​او thread-local variables ترمنځ اصلي توپیر دا دی چې پخواني یو ځل لیکل شوي، په راتلونکي کې نشي بدلیدلی، او یوازې د تار د اجرا کولو مودې لپاره شتون لري.
  • د موازي کثافاتو راټولونکي فعالیت ښه کړی کله چې د لویو شیانو سره کار کوي. اصلاح کول په ځینو ازموینو کې د شیانو لوی صفونو سره امکان لري ترڅو د 20٪ لخوا د شیانو لټون پیل کولو دمخه ځنډ کم کړي.

سربیره پردې ، تاسو کولی شئ د ګرافیکي انٹرفیس JavaFX 22 سره د غوښتنلیکونو رامینځته کولو لپاره پلیټ فارم ته د تازه خپرولو یادونه وکړئ.

سرچینه: opennet.ru

Add a comment