Java SE 17 መለቀቅ

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

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

በጃቫ 17 ውስጥ አዲስ ባህሪያት የሚከተሉትን ያካትታሉ:

  • በ “መቀየሪያ” አገላለጾች ውስጥ የስርዓተ-ጥለት ማዛመጃ የሙከራ ትግበራ ቀርቧል ፣ ይህም በ “ጉዳይ” መለያዎች ውስጥ ትክክለኛ እሴቶችን መጠቀም ያስችላል ፣ ግን በአንድ ጊዜ ተከታታይ እሴቶችን የሚሸፍኑ ተጣጣፊ አብነቶች ፣ ለዚህም ቀደም ሲል ከባድ መጠቀም አስፈላጊ ነበር። "ከሆነ ... ሌላ" መግለጫዎች ሰንሰለቶች. በተጨማሪም "ማብሪያ" NULL እሴቶችን የመቆጣጠር ችሎታ አለው. ነገር o = 123L; ሕብረቁምፊ ቅርጸት = ማብሪያ (o) { case Integer i -> String.format("int %d", i); መያዣ ረጅም l -> String.format("ረጅም %d", l); መያዣ ድርብ d -> String.format ("ድርብ% f", d); case String s -> String.format("ሕብረቁምፊ %s", s); ነባሪ -> o.toString (); };
  • ለታሸጉ ክፍሎች እና መገናኛዎች የተረጋጋ ድጋፍ፣ ይህም በሌሎች ክፍሎች እና በይነገጾች አተገባበሩን ለመውረስ፣ ለማራዘም ወይም ለመሻር መጠቀም አይቻልም። የታሸጉ ክፍሎች ለማራዘሚያ የተፈቀዱትን ንዑስ ክፍሎችን በግልፅ በመዘርዘር የሱፐር መደብ አጠቃቀምን ከመዳረሻ ማስተካከያዎች ለመገደብ የበለጠ ገላጭ መንገድን ይሰጣሉ። ጥቅል com.example.ጂኦሜትሪ; በሕዝብ የታሸገ ክፍል ቅርጽ com.example.polar.ክበብ፣ com.example.quad.አራት ማዕዘን፣ com.example.quad.ቀላል.ካሬ {…} ይፈቅዳል።
  • ሁለተኛ የቬክተር ኤፒአይ ቅድመ እይታ ቀርቧል፣ ይህም በ x86_64 እና AArch64 ፕሮሰሰር ላይ የቬክተር መመሪያዎችን በመጠቀም ለሚፈጸሙ የቬክተር ስሌቶች ተግባራትን የሚሰጥ እና ክዋኔዎችን ለብዙ እሴቶች (ሲኤምዲ) በአንድ ጊዜ እንዲተገበር ያስችላል። የስክላር ኦፕሬሽኖችን በራስ ሰር ቬክተራይዜሽን ለማድረግ በሆትስፖት ጂአይቲ ኮምፕሌተር ውስጥ ከሚቀርቡት ችሎታዎች በተለየ፣ አዲሱ ኤፒአይ ለትይዩ መረጃ ሂደት ቬክተራይዜሽንን በግልፅ ለመቆጣጠር ያስችላል።
  • መተግበሪያዎች ከጃቫ አሂድ ጊዜ ውጭ ከኮድ እና ዳታ ጋር መስተጋብር እንዲፈጥሩ የሚያስችል የውጭ ተግባር እና ማህደረ ትውስታ ኤፒአይ ቅድመ እይታ ታክሏል። አዲሱ ኤፒአይ የJVM ያልሆኑ ተግባራትን በብቃት እንዲደውሉ እና በJVM የማይተዳደር ማህደረ ትውስታን እንዲያገኙ ይፈቅድልዎታል። ለምሳሌ፣ ከውጪ የተጋሩ ቤተ-መጻሕፍት ተግባራትን መጥራት እና JNI ሳትጠቀም የሂደት ውሂብ ማግኘት ትችላለህ።
  • የJava 2D ኤፒአይን የሚያንቀሳቅሰው የማክሮስ ማሳያ ሞተር፣ እሱም በተራው ስዊንግ ኤፒአይን የሚያንቀሳቅሰው፣ የብረታ ብረት ግራፊክስ ኤፒአይን ለመጠቀም ተስተካክሏል። የማክኦኤስ መድረክ በነባሪ OpenGL መጠቀሙን ቀጥሏል፣ እና የብረታ ብረት ድጋፍን ማንቃት "-Dsun.java2d.metal=true" ማቀናበር እና ቢያንስ macOS 10.14.xን ማስኬድ ይጠይቃል።
  • ለ macOS/AArch64 መድረክ (በአዲሱ አፕል ኤም 1 ቺፕስ ላይ የተመሰረቱ አፕል ኮምፒተሮች) ወደብ ታክሏል። የወደቡ ልዩ ባህሪ W^X (Write XOR Execute) የማህደረ ትውስታ ጥበቃ ዘዴ ድጋፍ ነው, ይህም የማህደረ ትውስታ ገፆች ለመጻፍ እና ለመፈፀም በአንድ ጊዜ ሊገኙ አይችሉም. (ኮድ መፃፍ ከተሰናከለ በኋላ ብቻ ሊተገበር ይችላል ፣ እና ወደ ማህደረ ትውስታ ገጽ መጻፍ የሚቻለው አፈፃፀም ከተሰናከለ በኋላ ብቻ ነው)።
  • ለተንሳፋፊ ነጥብ መግለጫዎች ጥብቅfp ትርጉምን ብቻ ወደ መጠቀም ተመለሰ። ጃቫ 1.2 ከተለቀቀበት ጊዜ ጀምሮ የሚገኘው “ነባሪ” የትርጉም ጽሑፍ ድጋፍ ተቋርጧል፣ በጣም ያረጁ የ x87 ሒሳብ ኮርፖሬሽኖች ባሉባቸው ስርዓቶች ላይ ለመስራት ቀለል ያሉ ነገሮችን ጨምሮ (የ SSE2 መመሪያዎች ከመጡ በኋላ የተጨማሪ ትርጓሜ አስፈላጊነት ጠፋ)።
  • አዲስ የኢንተርኔት አይነቶች ወደ የውሸት ራንደም ቁጥር ማመንጫዎች ተተግብረዋል፣ እና ለተሻለ የዘፈቀደ ቁጥሮች ተጨማሪ ስልተ ቀመሮች ተተግብረዋል። አፕሊኬሽኖች የውሸት ቁጥሮችን ለማመንጨት ስልተ ቀመር እንዲመርጡ እድል ተሰጥቷቸዋል። የዘፈቀደ የነገር ዥረቶችን ለመፍጠር የተሻሻለ ድጋፍ።
  • እንደ sun.misc.Unsafe ካሉ ወሳኝ ኤፒአይዎች በስተቀር የሁሉንም JDK የውስጥ አካላት ጥብቅ ማሸግ ተገድዷል። ጥብቅ ኢንካፕሌሽን ከኮድ ወደ ውስጣዊ ክፍሎች፣ ዘዴዎች እና መስኮች ለመድረስ ሙከራዎችን ያግዳል። ከዚህ ቀደም የ"--illegal-access=ፍቃድ" አማራጭን በመጠቀም ጥብቅ የማቀፊያ ሁነታን ማሰናከል ይቻላል፣ነገር ግን ይህ ተቋርጧል። የውስጥ ክፍሎችን፣ ስልቶችን እና መስኮችን ማግኘት የሚያስፈልጋቸው መተግበሪያዎች --add-opens የሚለውን አማራጭ ወይም የአድ-ክፍት ባህሪን በአንጸባራቂ ፋይሉ ውስጥ መግለፅ አለባቸው።
  • አፕሊኬሽኖች የውሂብን ማጥፋት ማጣሪያዎችን የመግለጽ ችሎታ ተሰጥቷቸዋል፣ ይህም አውድ-ስሱ እና በተለዋዋጭነት በተወሰኑ የዲሴሪያላይዜሽን ስራዎች ላይ በመመስረት ሊመረጡ ይችላሉ። የተገለጹት ማጣሪያዎች ለጠቅላላው ቨርቹዋል ማሽን (JVM-wide) ተፈጻሚ ይሆናሉ፣ ማለትም። አፕሊኬሽኑን ብቻ ሳይሆን በመተግበሪያው ውስጥ ጥቅም ላይ የዋሉ የሶስተኛ ወገን ቤተ-መጻሕፍትንም ይሸፍኑ።
  • ስዊንግ በከፍተኛ ዲፒአይ ስክሪኖች ላይ UI ለማሻሻል ትላልቅ አዶዎችን ለመጫን javax.swing.filechooser.FileSystemView.getSystemIcon ዘዴን አክሏል።
  • የ java.net.DatagramSocket API የተለየ java.net.MulticastSocket API ሳያስፈልገው ወደ መልቲካስት ቡድኖች ለመገናኘት ድጋፍ ይሰጣል።
  • የ IGV (Ideal Graph Visualizer) መገልገያ ተሻሽሏል፣ ይህም በHotSpot VM C2 JIT ኮምፕሌተር ውስጥ የመሃከለኛ ኮድ ውክልና በይነተገናኝ እይታን ያቀርባል።
  • በJavaDoc, ከጃቫክ ኮምፕሌተር ጋር በማመሳሰል, ስህተት በሚወጣበት ጊዜ, በምንጭ ፋይሉ ውስጥ ያለው ችግር ያለበት መስመር ቁጥር እና ስህተቱ ያለበት ቦታ አሁን ይገለጻል.
  • የሥርዓተ-ቁምፊ ኢንኮዲንግ (UTF-8፣ koi8-r፣ cp1251፣ ወዘተ) ስም የሚያንፀባርቅ native.encoding ንብረቱ ታክሏል።
  • የ java.time.InstantSource በይነገጽ ተጨምሯል፣ ይህም የሰዓት ሰቅን ሳይጠቅስ የጊዜ አጠቃቀምን ይፈቅዳል።
  • ወደ ሄክሳዴሲማል ውክልና ለመቀየር java.util.HexFormat ኤፒአይ ታክሏል እና በተቃራኒው።
  • የብላክሆል ሁነታ ወደ ማቀናበሪያው ተጨምሯል, ይህም የሞተ ኮድን የማስወገድ ስራዎችን ያሰናክላል, ይህም የአፈፃፀም ሙከራዎችን ሲያካሂድ ጥቅም ላይ ሊውል ይችላል.
  • ምዝግብ ማስታወሻዎችን በማይመሳሰል ሁነታ ለመቅዳት "-Xlog:async" አማራጭ ወደ Runtime ታክሏል.
  • ደህንነታቸው የተጠበቁ ግንኙነቶችን በሚፈጥሩበት ጊዜ፣ TLS 1.3 በነባሪነት ነቅቷል (ከዚህ ቀደም TLS 1.2 ጥቅም ላይ ውሏል)።
  • በአሳሹ ውስጥ የጃቫ አፕሊኬሽኖችን ለማስኬድ ያገለገለው ከዚህ ቀደም የተገለጸው ጊዜው ያለፈበት አፕልት ኤፒአይ (java.applet.Applet*፣javax.swing.JApplet) ወደ ተወገደበት ምድብ ተወስዷል (ከድጋፉ ማብቂያ በኋላ ጠቀሜታው ጠፍቷል። ለጃቫ ፕለጊን ለአሳሾች)።
  • ከረጅም ጊዜ ጀምሮ ጠቃሚነቱን ያጣው እና የአሳሽ ፕለጊን ድጋፍ ካለቀ በኋላ የይገባኛል ጥያቄ ያልቀረበበት የደህንነት አስተዳዳሪ፣ እንዲወገዱ በታቀዱ ሰዎች ምድብ ተወስዷል።
  • የ RMI ማግበር ዘዴ ተወግዷል፣ ጊዜው ያለፈበት፣ በጃቫ 8 ውስጥ ወደሚገኘው አማራጭ ምድብ ወርዷል እና በዘመናዊ አሰራር በጭራሽ ጥቅም ላይ አይውልም።
  • ቨርቹዋል ማሽኑን ከመጀመርዎ በፊት የጃቫ ኮድ ለሆትስፖት JVM ለተለዋዋጭ ማጠናቀር JIT (በጊዜው ላይ) የሚደግፍ የሙከራ ማጠናከሪያ ፣ እንዲሁም የማሽን ኮድ ውስጥ ያሉትን ክፍሎች የሚጠባበቅ ማጠናቀር ዘዴ (AOT ፣ ከጊዜ በፊት) ፣ ከኤስዲኬ ተወግዷል። አቀናባሪው የተፃፈው በጃቫ ሲሆን በግራል ፕሮጀክት ስራ ላይ የተመሰረተ ነው። የማጠናቀቂያ ጥገና ብዙ ጉልበት የሚጠይቅ መሆኑ የሚታወቅ ሲሆን ይህም ከገንቢዎች ምንም ፍላጎት በማይኖርበት ጊዜ ትክክል አይደለም.

ምንጭ: opennet.ru

አስተያየት ያክሉ