Java SE 14 නිකුතුව

මාස හයක සංවර්ධනයෙන් පසුව, ඔරකල් නිදහස් වේදිකාව ජාවා එස්ඊ 14 (Java Platform, Standard Edition 14), විවෘත මූලාශ්‍ර OpenJDK ව්‍යාපෘතිය යොමු ක්‍රියාත්මක කිරීමක් ලෙස භාවිතා කරයි. Java SE 14 ජාවා වේදිකාවේ පෙර නිකුතු සමඟ පසුගාමී අනුකූලතාවයක් පවත්වා ගෙන යයි; Java SE 14 ගොඩනැගීම් ස්ථාපනය කිරීමට සූදානම් (JDK, JRE සහ Server JRE) සකස් කර ඇත Linux (x86_64), Windows සහ macOS සඳහා. OpenJDK ව්‍යාපෘතිය මගින් සංවර්ධනය කරන ලද විමර්ශන ක්‍රියාත්මක කිරීම ජාවා 14 GPLv2 බලපත්‍රය යටතේ සම්පූර්ණයෙන්ම විවෘත මූලාශ්‍ර වේ, GNU ClassPath ව්‍යතිරේක සමඟ වාණිජ නිෂ්පාදන සමඟ ගතික සම්බන්ධ වීමට ඉඩ සලසයි.

Java SE 14 නිත්‍ය ආධාරක නිකුතුවක් ලෙස වර්ග කර ඇති අතර මීළඟ නිකුතුව තෙක් යාවත්කාලීන කිරීම් දිගටම ලැබෙනු ඇත. දිගු කාලීන ආධාරක (LTS) ශාඛාව Java SE 11 විය යුතු අතර, එය 2026 දක්වා යාවත්කාලීන කිරීම් දිගටම ලැබෙනු ඇත. Java 8 හි පෙර LTS ශාඛාව 2020 දෙසැම්බර් දක්වා සහය දක්වයි. මීළඟ LTS නිකුතුව 2021 සැප්තැම්බර් සඳහා සැලසුම් කර ඇත. Java 10 නිකුතුවෙන් පටන් ගෙන, ව්‍යාපෘතිය නව සංවර්ධන ක්‍රියාවලියකට මාරු වූ අතර, නව නිකුතු සෑදීම සඳහා කෙටි චක්‍රයක් ඇඟවුම් කර ඇති බව අපි ඔබට මතක් කරමු. නිරන්තරයෙන් යාවත්කාලීන කරන ලද එක් ප්‍රධාන ශාඛාවක නව ක්‍රියාකාරිත්වය දැන් සංවර්ධනය කර ඇති අතර, එයට සූදානම් කළ වෙනස්කම් ඇතුළත් වන අතර නව නිකුතු ස්ථාවර කිරීම සඳහා සෑම මාස හයකට වරක් ශාඛා ශාඛා බෙදනු ලැබේ.

සිට නවෝත්පාදන ජාවා 14 හැකි ලකුණ:

  • පර්යේෂණාත්මක සහාය එක් කරන ලදී රටා ගැලපීම "instanceof" ක්‍රියාකරු තුළ, පරීක්ෂා කළ අගයට ප්‍රවේශ වීමට දේශීය විචල්‍යයක් වහාම අර්ථ දැක්වීමට ඔබට ඉඩ සලසයි. උදාහරණයක් ලෙස, ඔබට වහාම "if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" "String s = (String) obj" පැහැදිලිව අර්ථ දැක්වීමකින් තොරව ලිවිය හැක.

    විය:

    නම් (සමූහයේ වස්තුව) {
    කණ්ඩායම් කණ්ඩායම = (කණ්ඩායම)obj;
    var ඇතුළත් කිරීම් = group.getEntries();
    }

    දැන් ඔබට "Group group = (Group) obj" යන අර්ථ දැක්වීමෙන් තොරව කළ හැක:

    නම් (සමූහ කණ්ඩායමේ වස්තුව) {
    var ඇතුළත් කිරීම් = group.getEntries();
    }

  • නව මූල පදය සඳහා පර්යේෂණාත්මක සහාය එක් කරන ලදී "වාර්තාව", එය පන්ති නිර්වචනය කිරීම සඳහා සංයුක්ත ආකෘතියක් සපයන අතර, හැසිරීම වෙනස් නොවන ක්ෂේත්‍රවල පමණක් දත්ත ගබඩා කර ඇති අවස්ථා වලදී සමාන(), hashCode() සහ toString() වැනි විවිධ පහත් මට්ටමේ ක්‍රම පැහැදිලිව නිර්වචනය කිරීම වළක්වා ගැනීමට ඔබට ඉඩ සලසයි. පන්තියක් සමාන (), hashCode() සහ toString() ක්‍රමවල සම්මත ක්‍රියාත්මක කිරීම් භාවිතා කරන විට, එය ඔවුන්ගේ පැහැදිලි අර්ථ දැක්වීමකින් තොරව කළ හැක:

    පොදු වාර්තා බැංකු ගනුදෙනු (දේශීය දින දිනය,
    ද්විත්ව මුදල
    තන්තු විස්තරය) {}

    මෙම ප්‍රකාශය මඟින් කන්ස්ට්‍රක්ටර් සහ ලබාගන්නා ක්‍රමවලට අමතරව සමාන (), hashCode() සහ toString() ක්‍රමවල ක්‍රියාත්මක කිරීම් ස්වයංක්‍රීයව එක් කරයි.

  • ප්‍රමිතිගත කර ඇත и включена по умолчанию поддержка новой формы выражений «switch», не требующей указания оператора «break», позволяющей объединять повторяющиеся метки и допускающей использование не только в форме оператора, но и как выражения.

    var log = ස්විචය (සිදුවීම) {
    කේස් PLAY -> “පරිශීලකයා ක්‍රීඩා බොත්තම ක්‍රියාත්මක කර ඇත”;
    නඩුව STOP, PAUSE -> "පරිශීලකයාට විවේකයක් අවශ්යයි";
    පෙරනිමිය -> {
    String පණිවිඩය = event.toString();
    LocalDateTime now = LocalDateTime.now();
    yield «Unknown event » + message +
    » logged on » + now;
    }
    };

  • පුළුල් කළ පර්යේෂණාත්මක සහාය පෙළ වාරණ - අක්ෂර ගැලවීම සහ බ්ලොක් එකේ මුල් පෙළ හැඩතල ගැන්වීම භාවිතා නොකර මූල කේතයට බහු-රේඛා පෙළ දත්ත ඇතුළත් කිරීමට ඔබට ඉඩ සලසන නව ආකාරයේ string Literals. බ්ලොක් ද්විත්ව උද්ධෘත තුනකින් රාමු කර ඇත. Java 14 හි, text blocks දැන් තනි ඉඩක් අර්ථ දැක්වීමට "\s" ගැලවීමේ අනුපිළිවෙලට සහ ඊළඟ පේළිය සමඟ සම්බන්ධ වීමට "\" සඳහා සහය දක්වයි (ඔබට ඉතා දිගු රේඛාවක් මුද්‍රණය කිරීමට අවශ්‍ය වූ විට නව රේඛා නොසලකා හරිමින්). උදාහරණයක් ලෙස, කේතය වෙනුවට

    String html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 මෙහි ඇත!\" » +
    "\n\t" + " » +
    "\n" +" ";

    ඔබට සඳහන් කළ හැකිය:

    String html = """


    »Java 1\
    මෙතන!

    """;

  • ව්යතිරේක සිදු වූ විට රෝග විනිශ්චය පිළිබඳ තොරතුරු අන්තර්ගතය පුළුල් කර ඇත NullPointerException. මීට පෙර දෝෂ පණිවිඩය රේඛා අංකයට පමණක් යොමු කර ඇති අතර, දැන් එය ව්‍යතිරේකයට හේතු වූ ක්‍රමය විස්තර කරයි. උසස් රෝග විනිශ්චය දැනට සබල කර ඇත්තේ “-XX:+ShowCodeDetailsInExceptionMessages” ධජය සමඟ දියත් කළ විට පමණි. උදාහරණයක් ලෙස, මෙම ධජය සඳහන් කරන විට, රේඛාවේ ව්යතිරේකය

    var name = user.getLocation().getCity().getName();

    පණිවිඩයක් ලබා දෙනු ඇත

    නූල් "ප්‍රධාන" java.lang.NullPointerException: "Location.getCity()" ආයාචනා කළ නොහැක
    මොකද "User.getLocation()" හි ප්‍රතිලාභ අගය ශුන්‍ය වේ
    NullPointerExample.main හි (NullPointerExample.java:5):5)

    Location.getCity() ක්‍රමය කැඳවා නැති බවත් User.getLocation() null ලබා දුන් බවත් එයින් පැහැදිලි වේ.

  • ක්‍රියාත්මක කළා ස්වයං අන්තර්ගත ජාවා යෙදුම් සඳහා පැකේජ සෑදීමට ඔබට ඉඩ සලසන jpackage උපයෝගීතාවයේ පෙරදසුනක්. උපයෝගීතාව JavaFX වෙතින් javapackager මත පදනම් වන අතර විවිධ වේදිකාවලට ආවේණික ආකෘතිවලින් පැකේජ නිර්මාණය කිරීමට ඔබට ඉඩ සලසයි (Windows සඳහා msi සහ exe, macOS සඳහා pkg සහ dmg, Linux සඳහා deb සහ rpm). පැකේජ වල අවශ්‍ය සියලු පරායත්තතා ඇතුළත් වේ.
  • В сборщик мусора G1 එකතු කළා новый механизм распределения памяти, учитывающий специфику работу на крупных системах, использующих архитектуру නුමා. නව මතක විබෙදුම "+XX:+UseNUMA" ධජය භාවිතයෙන් සබල කර ඇති අතර NUMA පද්ධතිවල කාර්ය සාධනය සැලකිය යුතු ලෙස වැඩිදියුණු කළ හැක.
  • එකතු කරන ලදී JFR (JDK Flight Recorder) සිදුවීම්වල පියාසර නිරීක්ෂණ සඳහා API, උදාහරණයක් ලෙස අඛණ්ඩ අධීක්ෂණය සංවිධානය කිරීම සඳහා.
  • එකතු කරන ලදී jdk.nio.mapmode මොඩියුලය, වාෂ්පශීලී නොවන මතකය (NVM) යොමු කරන සිතියම්ගත බයිට් බෆර (MappedByteBuffer) නිර්මාණය කිරීම සඳහා නව මාතයන් (READ_ONLY_SYNC, WRITE_ONLY_SYNC) පිරිනමයි.
  • ක්‍රියාත්මක කළා නව MemorySegment, MemoryAddress, සහ MemoryLayout වියුක්ත කිරීම් හසුරුවාලීමෙන් Java යෙදුම් වලට ආරක්ෂිතව සහ කාර්යක්ෂමව Java ගොඩෙන් පිටත මතක කලාප වෙත ප්‍රවේශ වීමට ඉඩ සලසන Foreign-Memory Access API හි පෙරදසුනකි.
  • නිවේදනය කළා අනාගතයේදී මෙම වරායන් ඉවත් කිරීමේ අරමුණින් Solaris OS සහ SPARC ප්‍රොසෙසර (Solaris/SPARC, Solaris/x64 සහ Linux/SPARC) සඳහා වරායන් අවලංගු කරන ලදී. මෙම වරායන් අවලංගු කිරීම Solaris- සහ SPARC-විශේෂිත විශේෂාංග පවත්වා ගනිමින් කාලය නාස්ති නොකර නව OpenJDK විශේෂාංග සංවර්ධනය වේගවත් කිරීමට ප්‍රජාවට ඉඩ සලසයි.
  • මකා දමන ලදී CMS (සමගාමී මාර්ක් ස්වීප්) කසළ එකතු කරන්නා, එය වසර දෙකකට පෙර යල්පැන ගිය බව සලකුණු කර නඩත්තු නොකළේය (CMS බොහෝ කලකට පෙර G1 කසළ එකතු කරන්නා විසින් ප්‍රතිස්ථාපනය කරන ලදී). ඊට අමතරව, නිවේදනය කළේය устаревшим применение комбинации алгоритмов сборки мусора ParallelScavenge и SerialOld (запуск с опциями «-XX:+UseParallelGC -XX:-UseParallelOldGC»).
  • Обеспечена экспериментальная поддержка сборщика мусора ZGC (Z Garbage Collector) на платформах macOS и Windows (ранее поддерживался только в Linux). ZGC работает в пассивном режиме, насколько это возможно минимизирует задержки из-за сборки мусора (время остановки при использовании ZGC не превышает 10 мс.) и может работать как с небольшими, так и с огромными кучами, размером от нескольких сотен мегабайт до многих терабайт.
  • ඉවත් කරන ලදී Pack200 ඇල්ගොරිතම භාවිතයෙන් JAR ගොනු සම්පීඩනය සඳහා මෙවලම් කට්ටලය සහ API.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න