Java SE 18-ի թողարկում

Վեց ամիս մշակումից հետո Oracle-ը թողարկեց Java SE 18-ը (Java Platform, Standard Edition 18), որն օգտագործում է բաց կոդով OpenJDK նախագիծը որպես հղման իրականացում: Բացառությամբ որոշ հնացած գործառույթների հեռացման, Java SE 18-ը պահպանում է հետընթաց համատեղելիությունը Java պլատֆորմի նախորդ թողարկումների հետ. նախկինում գրված Java նախագծերի մեծ մասը կաշխատի առանց փոփոխությունների, երբ գործարկվի նոր տարբերակով: Java SE 18-ի (JDK, JRE և Server JRE) տեղադրման համար պատրաստ կառուցումները պատրաստված են Linux (x86_64, AArch64), Windows (x86_64) և macOS (x86_64, AArch64) համար: OpenJDK նախագծի կողմից մշակված Java 18 հղումների իրականացումը լիովին բաց կոդով է GPLv2 լիցենզիայի ներքո, GNU ClassPath բացառություններով, որոնք թույլ են տալիս դինամիկ կապ հաստատել առևտրային արտադրանքների հետ:

Java SE 18-ը դասակարգվում է որպես սովորական աջակցության թողարկում և կշարունակի թարմացումներ ստանալ մինչև հաջորդ թողարկումը: Երկարաժամկետ աջակցության (LTS) մասնաճյուղը պետք է լինի Java SE 17, որը կշարունակի թարմացումներ ստանալ մինչև 2029 թվականը: Հիշեցնենք, որ Java 10-ի թողարկումից սկսած՝ նախագիծն անցավ զարգացման նոր գործընթացի՝ ենթադրելով ավելի կարճ ցիկլ նոր թողարկումների ձևավորման համար։ Նոր ֆունկցիոնալությունն այժմ մշակվում է մեկ անընդհատ թարմացվող գլխավոր մասնաճյուղում, որը ներառում է պատրաստի փոփոխություններ և որից մասնաճյուղերը բաժանվում են յուրաքանչյուր վեց ամիսը մեկ՝ նոր թողարկումները կայունացնելու համար:

Java 18-ի նոր հնարավորությունները ներառում են.

  • Նախնական կոդավորումը UTF-8 է: Java API-ները, որոնք մշակում են տեքստային տվյալները՝ նիշերի կոդավորման հիման վրա, այժմ լռելյայն կօգտագործեն UTF-8 բոլոր հարթակներում՝ անկախ համակարգի կարգավորումներից և տեղայնացման կարգավորումներից: Հին վարքագծին վերադառնալու համար, որտեղ կոդավորումն ընտրվում է համակարգի տեղակայման հիման վրա, կարող եք օգտագործել «-Dfile.encoding=COMPAT» տարբերակը:
  • Փաթեթը ներառում է com.sun.net.httpserver փաթեթը, որը ներառում է jwebserver օգտակար և գրադարանային API՝ ստատիկ բովանդակություն սպասարկելու համար պարզ http սերվերի ներդրմամբ (CGI և servlet-ի նման մշակողները չեն աջակցվում): Ներկառուցված HTTP սերվերը օպտիմիզացված չէ աշխատանքային ծանրաբեռնվածության համար և չի աջակցում մուտքի վերահսկման և նույնականացմանը, քանի որ այն հիմնականում ուղղված է նախատիպերի, վրիպազերծման և փորձարկման նախագծերի զարգացման գործընթացում օգտագործմանը:
  • JavaDoc-ը աջակցություն է տրամադրում «@snippet» պիտակին՝ աշխատանքային օրինակները և կոդի հատվածները API-ի փաստաթղթերում տեղադրելու համար, որտեղ կարող եք օգտագործել վավերացման գործիքներ, շարահյուսական ընդգծում և IDE ինտեգրում:
  • Վերանախագծվել է java.lang.reflect API-ի (Core Reflection) ներդրումը, որը նախատեսված է մեթոդների, դաշտերի և դասերի կոնստրուկտորների մասին տեղեկություններ ստանալու, ինչպես նաև դասերի ներքին կառուցվածքի հասանելիության համար: java.lang.reflect API-ն ինքնին մնում է անփոփոխ, բայց այժմ իրականացվում է java.lang.invoke մոդուլի կողմից տրամադրված մեթոդի բռնակների միջոցով՝ բայթկոդերի գեներատորների փոխարեն: Փոփոխությունը թույլ տվեց մեզ միավորել java.lang.reflect և java.lang.invoke-ի իրականացումները և պարզեցնել դրանց սպասարկումը:
  • Առաջարկվել է Vector API-ի երրորդ նախադիտումը, որը տրամադրում է գործառույթներ վեկտորային հաշվարկների համար, որոնք կատարվում են x86_64 և AArch64 պրոցեսորների վրա վեկտորային հրահանգների միջոցով և թույլ են տալիս գործառնությունները միաժամանակ կիրառել բազմաթիվ արժեքների (SIMD) վրա: Ի տարբերություն HotSpot JIT կոմպիլյատորում տրված հնարավորությունների՝ սկալյար գործողությունների ավտոմատ վեկտորացման համար, նոր API-ն հնարավորություն է տալիս բացահայտորեն վերահսկել վեկտորացումը տվյալների զուգահեռ մշակման համար:
  • Ավելացվել է SPI ինտերֆեյս (ծառայություն-մատակարարի ինտերֆեյս)՝ հյուրընկալողների անունները և IP հասցեները լուծելու համար, ինչը թույլ է տալիս օգտագործել այլընտրանքային լուծիչներ java.net.InetAddress-ում, որոնք կապված չեն օպերացիոն համակարգի կողմից առաջարկվող մշակողների հետ:
  • Տրվում է Foreign Function & Memory API-ի երկրորդ նախադիտումը, որը թույլ է տալիս հավելվածներին փոխազդել կոդի և տվյալների հետ Java-ի գործարկման ժամանակից դուրս: Նոր API-ն թույլ է տալիս արդյունավետ կերպով զանգահարել ոչ JVM գործառույթներ և մուտք գործել ոչ JVM-ի կողմից կառավարվող հիշողություն: Օրինակ՝ կարող եք ֆունկցիաներ կանչել արտաքին ընդհանուր գրադարաններից և մուտք գործել գործընթացի տվյալներ՝ առանց JNI-ի օգտագործման:
  • Ավելացվել է «անջատիչ» արտահայտություններում օրինաչափությունների համընկնման երկրորդ փորձարարական իրականացումը, որը թույլ է տալիս օգտագործել ճկուն նախշեր «գործի» պիտակներում, այլ ոչ թե ճշգրիտ արժեքներ, որոնք ընդգրկում են միանգամից մի շարք արժեքներ, որոնց համար նախկինում անհրաժեշտ էր օգտագործել: «եթե... ուրիշ» արտահայտությունների ծանր շղթաներ: Օբյեկտ o = 123L; String formatted = switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); լռելյայն -> o.toString(); };
  • Վերջնականացման մեխանիզմը և դրա հետ կապված մեթոդները, ինչպիսիք են Object.finalize(), Enum.finalize(), Runtime.runFinalization() և System.runFinalization() հնացած են և կանջատվեն ապագա թողարկումում:
  • ZGC (Z Garbage Collector), SerialGC և ParallelGC աղբահավաքիչներն աջակցում են տողերի կրկնօրինակմանը:

Source: opennet.ru

Добавить комментарий