Java SE 15 መለቀቅ

ከስድስት ወር የእድገት እድገት በኋላ, Oracle ተለቀቀ መድረክ ጃቫ SE 15 (Java Platform፣ Standard Edition 15)፣ ክፍት ምንጭ የሆነውን የOpenJDK ፕሮጀክትን እንደ ማጣቀሻ ትግበራ የሚጠቀም። Java SE 15 ከቀደምት የጃቫ ፕላትፎርም ከተለቀቁት ጋር የኋሊት ተኳኋኝነትን ያቆያል፣ እና ሁሉም ቀደም ሲል የተፃፉ የጃቫ ፕሮጀክቶች በአዲሱ ስሪት ሲጀመር ምንም ለውጥ ሳይኖር ይሰራሉ። Java SE 15 ግንቦችን ለመጫን ዝግጁ (JDK፣ JRE እና Server JRE) ተዘጋጅቷል ለሊኑክስ (x86_64)፣ ዊንዶውስ እና ማክሮስ። በOpenJDK ፕሮጀክት የተሰራ የማጣቀሻ ትግበራ ጃቫ 15 ሙሉ በሙሉ ክፍት ምንጭ በ GPLv2 ፈቃድ ከጂኤንዩ ክፍልፓዝ ልዩ የንግድ ምርቶች ጋር ተለዋዋጭ ግንኙነት እንዲኖር ያስችላል።

Java SE 15 እንደ አጠቃላይ የድጋፍ ልቀት የተከፋፈለ ሲሆን እስከሚቀጥለው ልቀት ድረስ ዝማኔዎችን ማግኘቱን ይቀጥላል። የረጅም ጊዜ ድጋፍ (LTS) ቅርንጫፍ Java SE 11 መሆን አለበት፣ ይህም እስከ 2026 ማሻሻያዎችን ማግኘቱን ይቀጥላል። የቀደመው LTS የጃቫ 8 ቅርንጫፍ እስከ ዲሴምበር 2020 ድረስ ይደገፋል። የሚቀጥለው LTS ልቀት ለሴፕቴምበር 2021 መርሐግብር ተይዞለታል። ከጃቫ 10 መለቀቅ ጀምሮ ፕሮጀክቱ ወደ አዲስ የእድገት ሂደት መቀየሩን እናስታውስዎታለን ይህም ለአዳዲስ ልቀቶች ምስረታ አጠር ያለ ዑደትን ያሳያል። አዲስ ተግባር አሁን በየጊዜው በዘመነ ዋና ቅርንጫፍ ውስጥ ተዘጋጅቷል፣ እሱም ዝግጁ የተደረጉ ለውጦችን ያካተተ እና አዳዲስ የተለቀቁትን ለማረጋጋት በየስድስት ወሩ ቅርንጫፎች የሚከፈቱት።

ፈጠራዎች ጃቫ 15 ይችላል ምልክት ያድርጉ:

  • አብሮ የተሰራ ለ EdDSA (ኤድዋርድ-ከርቭ ዲጂታል ፊርማ ስልተ-ቀመር) ዲጂታል ፊርማ ፈጠራ ስልተ-ቀመር ድጋፍ RFC 8032). የታቀደው የኤዲኤስኤ ትግበራ በሃርድዌር መድረኮች ላይ የተመካ አይደለም፣ ከጎን ቻናል ጥቃቶች የተጠበቀ ነው (የሁሉም ስሌቶች ቋሚ ጊዜ ይረጋገጣል) እና በአፈጻጸም ላይ ካለው የ ECDSA ትግበራ በC ቋንቋ ከተፃፈ ተመሳሳይ የጥበቃ ደረጃ ጋር። ለምሳሌ፣ EdDSA ባለ 126-ቢት ቁልፍ ያለው ሞላላ ኩርባ በመጠቀም ከ ECDSA ጋር ተመሳሳይ አፈጻጸምን በሴክፕ256r1 ኤሊፕቲክ ከርቭ እና ባለ 128-ቢት ቁልፍ ያሳያል።
  • ታክሏል። ለታሸጉ ክፍሎች እና መገናኛዎች የሙከራ ድጋፍ፣ ይህም በሌሎች ክፍሎች እና በይነገጾች አተገባበሩን ለመውረስ፣ ለማራዘም ወይም ለመሻር መጠቀም አይቻልም። የታሸጉ ክፍሎች ለማራዘሚያ የተፈቀዱትን ንዑስ መደቦች በግልፅ በመዘርዘር፣ ከመዳረሻ ማስተካከያዎች ይልቅ የሱፐር መደብን አጠቃቀም ለመገደብ የበለጠ ገላጭ መንገድ ይሰጣሉ።

    ጥቅል com.example.ጂኦሜትሪ;

    የሕዝብ የታሸገ ክፍል ቅርጽ
    ፈቃዶች com.ለምሳሌ.ፖላር.ክበብ፣
    com.ምሳሌ.አራት.አራት ማዕዘን፣
    com.example.quad.simple.ካሬ {…}

  • ታክሏል። በሌሎች ክፍሎች ባይት ኮድ በቀጥታ ጥቅም ላይ መዋል ለማይችሉ የተደበቁ ክፍሎች ድጋፍ። የተደበቁ ክፍሎች ቁልፍ ዓላማ በተለዋዋጭ መንገድ ክፍሎችን በሚሰሩበት ጊዜ እና በተዘዋዋሪ በሚጠቀሙባቸው ማዕቀፎች ውስጥ መጠቀም ነው ። ነጸብራቅ. እንደነዚህ ያሉት ክፍሎች ብዙውን ጊዜ የተወሰነ የሕይወት ዑደት አላቸው ፣ ስለሆነም በስታቲስቲክስ ከሚመነጩ ክፍሎች እንዲደርሱባቸው ማቆየት ተገቢ አይደለም እና ወደ ማህደረ ትውስታ ፍጆታ መጨመር ብቻ ይዳርጋል። የተደበቁ ክፍሎች መደበኛ ያልሆነውን የኤፒአይ sun.misc.Unsafe::defineAnonymousClass አስፈላጊነትን ያስወግዳል፣ይህም ወደፊት እንዲወገድ የታቀደ ነው።
  • የ ZGC (Z ቆሻሻ ሰብሳቢ) የቆሻሻ አሰባሳቢ ተረጋግቶ ለሰፊ ጥቅም ዝግጁ እንደሆነ ይታወቃል። ZGC በፓሲቭ ሞድ ውስጥ ይሰራል፣ በተቻለ መጠን በቆሻሻ አሰባሰብ ምክንያት መዘግየትን ይቀንሳል (ZGC ሲጠቀሙ የሚቆዩበት ጊዜ ከ10 ሚሴ አይበልጥም) እና ከበርካታ መቶ ሜጋባይት እስከ ብዙ ቴራባይት ባለው መጠን ከትንሽ እና ግዙፍ ክምር ጋር አብሮ መስራት ይችላል።
  • የተረጋጋ እና ለአጠቃላይ ጥቅም ዝግጁ ሆኖ ተገኝቷል
    ቆሻሻ ሰብሳቢ Shenandoahበትንሹ ለአፍታ ማቆም (ዝቅተኛ-አፍታ-ጊዜ ቆሻሻ ሰብሳቢ) በመስራት ላይ። Shenandoah የተሰራው በቀይ ባርኔጣ ሲሆን ከጃቫ አፕሊኬሽኖች አፈፃፀም ጋር በትይዩ ማጽዳትን በማካሄድ በቆሻሻ አሰባሰብ ጊዜ የሚቆይበትን ጊዜ የሚቀንስ አልጎሪዝምን በመጠቀም ይታወቃል። በቆሻሻ አሰባሳቢው የገቡት መዘግየቶች መጠን ሊተነበይ የሚችል እና እንደ ክምር መጠን ላይ የተመካ አይደለም, ማለትም. ለ 200 ሜባ እና 200 ጂቢ ክምር መዘግየቶቹ ተመሳሳይ ይሆናሉ (አትውጣ ከ 50 ms በላይ እና አብዛኛውን ጊዜ በ 10 ms ውስጥ);

  • ድጋፍ ተረጋግቶ ወደ ቋንቋው ገብቷል። የጽሑፍ ብሎኮች - ባለብዙ መስመር የጽሑፍ ውሂብን በምንጭ ኮድ ውስጥ እንዲያካትቱ የሚያስችልዎ አዲስ የቃል በቃል ቁምፊ ማምለጥ እና በብሎክ ውስጥ የመጀመሪያውን የጽሑፍ ቅርጸት ሳይጠብቁ። እገዳው በሶስት ድርብ ጥቅሶች ተቀርጿል።

    ለምሳሌ, በኮድ ምትክ

    ሕብረቁምፊ html = " » +
    "\n\t" +" » +
    "\n\t\t" +" \"ጃቫ 1 እዚህ አለ!" » +
    "\n\t" +" » +
    "\n" +" ";

    መግለጽ ትችላለህ፡-

    ሕብረቁምፊ html = """


    ጃቫ 1
    እዚህ አለ!

    """;

  • በአዲስ መልክ ተዘጋጅቷል። Legacy DatagramSocket API። የ java.net.DatagramSocket እና java.net.MulticastSocket የድሮ ትግበራዎች ለማረም እና ለመጠገን ቀላል በሆነ ዘመናዊ ትግበራ ተተክተዋል እንዲሁም በፕሮጀክቱ ውስጥ ከተዘጋጁ ምናባዊ ዥረቶች ጋር ተኳሃኝ ናቸው የሚፈጥሩ. አሁን ካለው ኮድ ጋር ተኳሃኝ ካልሆነ፣ የድሮው ትግበራ አልተወገደም እና jdk.net.usePlainDatagramSocketImpl አማራጭን በመጠቀም ማንቃት ይቻላል።
  • ሁለተኛ የሙከራ ትግበራ ቀርቧል ስርዓተ-ጥለት ማዛመድ በ "አስተሳሰብ" ኦፕሬተር ውስጥ, ይህም የተረጋገጠውን እሴት ለመድረስ የአካባቢያዊ ተለዋዋጭ ወዲያውኑ እንዲገልጹ ያስችልዎታል. ለምሳሌ፣ ወዲያውኑ “ከሆነ (obj exampleof String s && s.length()> 5) {.. s.contains(...) ..}” በማለት “String s = (String) obj”ን በግልፅ ሳይገልጹ መጻፍ ይችላሉ።

    ነበር፡

    ከሆነ (የቡድን ምሳሌ) {
    የቡድን ቡድን = (ቡድን) obj;
    var ግቤቶች = group.getEntries ();
    }

    አሁን ያለ "ቡድን ቡድን = (ቡድን) obj" ትርጉም ማድረግ ይችላሉ:

    ከሆነ (የቡድን ቡድን ምሳሌ) {
    var ግቤቶች = group.getEntries ();
    }

  • የተጠቆመ "የቁልፍ ቃሉ ሁለተኛ ሙከራ"መዝገብ"፣ ክፍሎችን ለመለየት የታመቀ ቅጽ ያቀርባል፣ ይህም እንደ እኩል()፣ hashCode() እና toString() ያሉ የተለያዩ ዝቅተኛ ደረጃ ዘዴዎችን በግልፅ ከመግለጽ እንድትቆጠቡ የሚያስችልዎ መረጃ በባህሪያቸው በማይለወጥ መስኮች ብቻ በሚከማችበት ጊዜ። አንድ ክፍል የእኩል()፣ hashCode() እና toString() ስልቶች መደበኛ አተገባበርን ሲጠቀም ያለእነሱ ግልጽ ፍቺ ማድረግ ይችላል፡-

    የህዝብ መዝገብ BankTransaction (አካባቢያዊ ቀን ፣
    እጥፍ መጠን
    የሕብረቁምፊ መግለጫ) {}

    ይህ መግለጫ ከግንባታ እና መግጠሚያ ዘዴዎች በተጨማሪ የእኩል()፣ hashCode() እና toString() ስልቶች አተገባበርን በራስ ሰር ይጨምራል።

  • የቀረበ የJava መተግበሪያዎች አዲሱን የMemorySegment፣MemoryAddress እና MemoryLayout abstractions በመጠቀም ከጃቫ ክምር ውጭ የማህደረ ትውስታ ቦታዎችን ደህንነቱ በተጠበቀ ሁኔታ እና በብቃት እንዲደርሱ የሚያስችል የውጭ-የማስታወሻ መዳረሻ API ሁለተኛ እይታ።
  • ተሰናክሏል። እና ከላይ መቆለፍን ለመቀነስ በሆትስፖት JVM ውስጥ ጥቅም ላይ የዋለውን Biased Locking ማበልጸጊያ ቴክኒኩን አቋርጧል። ይህ ዘዴ በዘመናዊ ሲፒዩዎች የተሰጡ የአቶሚክ መመሪያዎች ባላቸው ስርዓቶች ላይ ያለውን ጠቀሜታ አጥቷል፣ እና በውስብስብነቱ ምክንያት ለመጠበቅ በጣም አድካሚ ነው።
  • አስታወቀ ጊዜው ያለፈበት ዘዴ RMI ማግበር, እሱም ወደፊት በሚለቀቅበት ጊዜ ይወገዳል. አርኤምአይ ማግበር ጊዜው ያለፈበት፣ በጃቫ 8 ውስጥ ወደሚገኘው አማራጭ ምድብ መውረዱ እና በዘመናዊ አሰራር ከሞላ ጎደል ጥቅም ላይ እንደማይውል ተጠቅሷል።
  • ተሰርዟል። ጃቫስክሪፕት ሞተር ናሾርንበጃቫ SE 11 የተቋረጠ።
  • ተወግዷል ወደቦች ለ Solaris OS እና SPARC ፕሮሰሰሮች (Solaris/SPARC፣ Solaris/x64 እና Linux/SPARC)። እነዚህን ወደቦች ማስወገድ ህብረተሰቡ የ Solaris እና SPARC ልዩ ባህሪያትን በመጠበቅ ጊዜ ሳያባክን የአዳዲስ የOpenJDK ባህሪያትን እድገትን ለማፋጠን ያስችላል።

ምንጭ: opennet.ru

አስተያየት ያክሉ