ИзданиС на Java SE 14

По ΡˆΠ΅ΡΡ‚ мСсСци Ρ€Π°Π·Π²ΠΎΡ˜, Oracle ослободСн ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Јава Π‘Π• 14 (Јава ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, стандардно ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ 14), ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ OpenJDK сС користи ΠΊΠ°ΠΊΠΎ Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°. Java SE 14 ΠΎΠ΄Ρ€ΠΆΡƒΠ²Π° компатибилност Π½Π°Π½Π°Π·Π°Π΄ со ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ изданија Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Java; ситС ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ напишани Java ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ќС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π±Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΊΠΎΠ³Π° ќС Π±ΠΈΠ΄Π°Ρ‚ лансирани спорСд Π½ΠΎΠ²Π°Ρ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°. ΠŸΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ Π·Π° ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Java SE 14 builds (JDK, JRE ΠΈ Server JRE) ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ Π·Π° Linux (x86_64), Windows ΠΈ macOS. Π Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Ρ€Π°Π·Π²ΠΈΠ΅Π½Π° ΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ OpenJDK Јава 14 Π΅ цСлосно со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†Π°Ρ‚Π° GPLv2, со исклучоци ΠΎΠ΄ GNU ClassPath ΠΊΠΎΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Π°Ρ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ со ΠΊΠΎΠΌΠ΅Ρ€Ρ†ΠΈΡ˜Π°Π»Π½ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ.

Java SE 14 Π΅ класифициран ΠΊΠ°ΠΊΠΎ ΠΎΠΏΡˆΡ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° ΠΈ ќС ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈ Π΄Π° Π΄ΠΎΠ±ΠΈΠ²Π° Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ° Π΄ΠΎ слСдното ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. Π€ΠΈΠ»ΠΈΡ˜Π°Π»Π°Ρ‚Π° Π·Π° Π΄ΠΎΠ»Π³ΠΎΡ€ΠΎΡ‡Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° (LTS) Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ Java SE 11, која ќС ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈ Π΄Π° Π΄ΠΎΠ±ΠΈΠ²Π° Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ° Π΄ΠΎ 2026 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠŸΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½Π°Ρ‚Π° LTS Π³Ρ€Π°Π½ΠΊΠ° Π½Π° Java 8 ќС Π±ΠΈΠ΄Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½Π° Π΄ΠΎ Π΄Π΅ΠΊΠ΅ΠΌΠ²Ρ€ΠΈ 2020 Π³ΠΎΠ΄ΠΈΠ½Π°. Π‘Π»Π΅Π΄Π½ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° LTS Π΅ Π·Π°ΠΊΠ°ΠΆΠ°Π½ΠΎ Π·Π° сСптСмври 2021 Π³ΠΎΠ΄ΠΈΠ½Π°. Π”Π° потсСтимС Π΄Π΅ΠΊΠ° ΠΏΠΎΡ‡Π½ΡƒΠ²Π°Ρ˜ΡœΠΈ ΠΎΠ΄ ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Java 10, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ сС ΠΏΡ€Π΅Ρ„Ρ€Π»ΠΈ Π½Π° Π½ΠΎΠ² Ρ€Π°Π·Π²ΠΎΠ΅Π½ процСс, ΡˆΡ‚ΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π° ΠΏΠΎΠΊΡ€Π°Ρ‚ΠΎΠΊ циклус Π·Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°ΡšΠ΅ Π½Π° Π½ΠΎΠ²ΠΈ изданија. Π‘Π΅Π³Π° Π΅ Ρ€Π°Π·Π²ΠΈΠ΅Π½Π° Π½ΠΎΠ²Π° функционалност Π²ΠΎ Π΅Π΄Π½Π° ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π½ΠΎ Π°ΠΆΡƒΡ€ΠΈΡ€Π°Π½Π° Π³Π»Π°Π²Π½Π° Π³Ρ€Π°Π½ΠΊΠ°, која Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° Π³ΠΎΡ‚ΠΎΠ²ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΈ ΠΎΠ΄ која Ρ„ΠΈΠ»ΠΈΡ˜Π°Π»ΠΈΡ‚Π΅ сС Ρ€Π°Π·Π³Ρ€Π°Π½ΡƒΠ²Π°Π°Ρ‚ Π½Π° сСкои ΡˆΠ΅ΡΡ‚ мСсСци Π·Π° Π΄Π° сС стабилизираат Π½ΠΎΠ²ΠΈΡ‚Π΅ изданија.

На ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ Јава 14 нСкој ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠ°Ρ€ΠΊΠ°:

  • Π”ΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ СкспСримСнтална ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° ΡΠΎΠ²ΠΏΠ°Ρ“Π°ΡšΠ΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚ Π²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΡ‚ β€žinstanceofβ€œ, кој Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° вСднаш Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ Π»ΠΎΠΊΠ°Π»Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π·Π° пристап Π΄ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π°Ρ‚Π° врСдност. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ вСднаш Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ β€žif (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}β€œ Π±Π΅Π· Сксплицитно Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΡšΠ΅ β€žString s = (String) objβ€œ.

    Π‘Π΅ΡˆΠ΅:

    if (obj instanceof Group) {
    Π“Ρ€ΡƒΠΏΠ° Π³Ρ€ΡƒΠΏΠ° = (Π“Ρ€ΡƒΠΏΠ°) obj;
    var записи = group.getEntries();
    }

    Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π±Π΅Π· Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Ρ‚Π° β€žΠ“Ρ€ΡƒΠΏΠ½Π° Π³Ρ€ΡƒΠΏΠ° = (Π“Ρ€ΡƒΠΏΠ°) objβ€œ:

    if (obj instanceof Group group) {
    var записи = group.getEntries();
    }

  • Π”ΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ СкспСримСнтална ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° Π½ΠΎΠ²ΠΈΠΎΡ‚ ΠΊΠ»ΡƒΡ‡Π΅Π½ Π·Π±ΠΎΡ€ "Ρ€Π΅ΠΊΠΎΡ€Π΄", кој ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π° Ρ„ΠΎΡ€ΠΌΠ° Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΡšΠ΅ класи, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Ρ˜ΡœΠΈ Π²ΠΈ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ Сксплицитно Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π½Π° ниско Π½ΠΈΠ²ΠΎ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС equals(), hashCode() ΠΈ toString() Π²ΠΎ случаи ΠΊΠΎΠ³Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ сС складираат само Π²ΠΎ полиња Ρ‡ΠΈΠ΅ ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅ Π½Π΅ сС ΠΌΠ΅Π½ΡƒΠ²Π°. Кога класата користи стандардни ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ equals(), hashCode() ΠΈ toString(), ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ Π±Π΅Π· Π½ΠΈΠ²Π½Π° Сксплицитна Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°:

    јавна Π΅Π²ΠΈΠ΄Π΅Π½Ρ†ΠΈΡ˜Π° Π½Π° банкарска Ρ‚Ρ€Π°Π½ΡΠ°ΠΊΡ†ΠΈΡ˜Π° (Π»ΠΎΠΊΠ°Π»Π΅Π½ Π΄Π°Ρ‚ΡƒΠΌ,
    двојна сума
    Опис Π½Π° Π½ΠΈΠ·Π°Ρ‚Π°) {}

    Оваа Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡ˜Π° автоматски ќС Π΄ΠΎΠ΄Π°Π΄Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ equals(), hashCode() ΠΈ toString() ΠΏΠΎΠΊΡ€Π°Ρ˜ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ конструктор ΠΈ getter.

  • Π‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΠΈ стандардно Π΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° Π½ΠΎΠ²Π° Ρ„ΠΎΡ€ΠΌΠ° Π½Π° ΠΈΠ·Ρ€Π°Π·ΠΈ β€žΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡β€œ, ΡˆΡ‚ΠΎ Π½Π΅ Π±Π°Ρ€Π° ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΡ‚ β€žΠΏΡ€Π΅ΠΊΠΈΠ½β€œ, Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈ ΠΎΠ·Π½Π°ΠΊΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи Π½Π΅ само Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ° Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, Ρ‚ΡƒΠΊΡƒ ΠΈ ΠΊΠ°ΠΊΠΎ ΠΈΠ·Ρ€Π°Π·ΡƒΠ²Π°ΡšΠ΅.

    var log = ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡ (настан) {
    ΡΠ»ΡƒΡ‡Π°Ρ˜ PLAY -> β€žΠšΠΎΡ€ΠΈΡΠ½ΠΈΠΊΠΎΡ‚ Π³ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° ΠΊΠΎΠΏΡ‡Π΅Ρ‚ΠΎ Π·Π° Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡ˜Π°β€œ;
    ΡΠ»ΡƒΡ‡Π°Ρ˜ БВОП, ΠŸΠΠ£Π—Π -> β€žΠΠ° корисникот ΠΌΡƒ Ρ‚Ρ€Π΅Π±Π° ΠΏΠ°ΡƒΠ·Π°β€œ;
    стандардно -> {
    Π‘Ρ‚Ρ€ΠΈΠ½Π³ ΠΏΠΎΡ€Π°ΠΊΠ° = настан.toString();
    LocalDateTime now = LocalDateTime.now();
    Π΄Π°Π²Π° β€žΠΠ΅ΠΏΠΎΠ·Π½Π°Ρ‚ Π½Π°ΡΡ‚Π°Π½β€œ + ΠΏΠΎΡ€Π°ΠΊΠ° +
    » најавСни » + сСга;
    }
    };

  • ΠŸΡ€ΠΎΡˆΠΈΡ€Π΅Π½Π° СкспСримСнтална ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° тСкстуални Π±Π»ΠΎΠΊΠΎΠ²ΠΈ - Π½ΠΎΠ²Π° Ρ„ΠΎΡ€ΠΌΠ° Π½Π° Π±ΡƒΠΊΠ²Π°Π»Π½ΠΈ ΠΆΠΈΡ†ΠΈ ΡˆΡ‚ΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° Π²ΠΊΠ»ΡƒΡ‡ΠΈΡ‚Π΅ повСќСлиниски тСкстуални ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π²ΠΎ ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π±Π΅Π· ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° бСгство Π½Π° Π·Π½Π°Ρ†ΠΈ ΠΈ Π·Π°Ρ‡ΡƒΠ²ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΡ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° тСкстот Π²ΠΎ Π±Π»ΠΎΠΊΠΎΡ‚. Π‘Π»ΠΎΠΊΠΎΡ‚ Π΅ Π²Ρ€Π°ΠΌΠ΅Π½ со Ρ‚Ρ€ΠΈ двојни Π½Π°Π²ΠΎΠ΄Π½ΠΈΡ†ΠΈ. Π’ΠΎ Java 14, тСкстуалнитС Π±Π»ΠΎΠΊΠΎΠ²ΠΈ сСга ја ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π°Π°Ρ‚ сСквСнцата Π·Π° бСгство β€ž\sβ€œ Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΡšΠ΅ Π½Π° СдинствСн простор ΠΈ β€ž\β€œ Π·Π° ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ со слСдната линија (ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π½ΠΎΠ²ΠΈΡ‚Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ³Π° Ρ‚Ρ€Π΅Π±Π° Π΄Π° испСчатитС ΠΌΠ½ΠΎΠ³Ρƒ Π΄ΠΎΠ»Π³Π° линија). На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, намСсто ΠΊΠΎΠ΄

    Низа html = " » +
    "\n\t" + " Β» +
    "\n\t\t" + " \"Java 1 Π΅ Ρ‚ΡƒΠΊΠ°!\" Β» +
    "\n\t" + " Β» +
    "\n" + " ";

    ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°Π²Π΅Π΄Π΅Ρ‚Π΅:

    Низа html = """


    »Јава 1\
    Π΅ Ρ‚ΡƒΠΊΠ°!

    """;

  • Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Π°Ρ‚Π° содрТина Π½Π° Π΄ΠΈΡ˜Π°Π³Π½ΠΎΡΡ‚ΠΈΠΊΠ° ΠΊΠΎΠ³Π° ΠΈΠΌΠ° исклучоци Π΅ ΠΏΡ€ΠΎΡˆΠΈΡ€Π΅Π½Π° NullPointerException. Π”ΠΎΠ΄Π΅ΠΊΠ° ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ ΠΏΠΎΡ€Π°ΠΊΠ°Ρ‚Π° Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ° сС ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡˆΠ΅ само Π½Π° Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° Π»ΠΈΠ½ΠΈΡ˜Π°Ρ‚Π°, сСга Ρ‚Π°Π° Π΄Π΅Ρ‚Π°Π»ΠΈΠ·ΠΈΡ€Π° кој ΠΌΠ΅Ρ‚ΠΎΠ΄ Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π» исклучокот. НапрСдната Π΄ΠΈΡ˜Π°Π³Π½ΠΎΡΡ‚ΠΈΠΊΠ° ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ Π΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½Π° само ΠΊΠΎΠ³Π° Π΅ стартувана со ΠΎΠ·Π½Π°ΠΊΠ°Ρ‚Π° β€ž-XX:+ShowCodeDetailsInExceptionMessagesβ€œ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΎΠ²Π° Π·Π½Π°ΠΌΠ΅, исклучок Π²ΠΎ Π»ΠΈΠ½ΠΈΡ˜Π°Ρ‚Π°

    var ΠΈΠΌΠ΅ = user.getLocation().getCity().getName();

    ќС Ρ€Π΅Π·ΡƒΠ»Ρ‚ΠΈΡ€Π° со ΠΏΠΎΡ€Π°ΠΊΠ°

    Π˜ΡΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π²ΠΎ Π½ΠΈΠ·Π°Ρ‚Π° β€žΠ³Π»Π°Π²Π½Π°β€œ java.lang.NullPointerException: НС ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΠΎΠ²ΠΈΠΊΠ° β€žLocation.getCity()β€œ
    бидСјќи ΠΏΠΎΠ²Ρ€Π°Ρ‚Π½Π°Ρ‚Π° врСдност Π½Π° β€žUser.getLocation()β€œ Π΅ Π½ΡƒΠ»Π°
    Π½Π° NullPointerExample.main(NullPointerExample.java:5):5)

    ΡˆΡ‚ΠΎ јасно ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π° Π΄Π΅ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΡ‚ Location.getCity() Π½Π΅ Π±ΠΈΠ» ΠΏΠΎΠ²ΠΈΠΊΠ°Π½ ΠΈ User.getLocation() Π²Ρ€Π°Ρ‚ΠΈΠ» Π½ΡƒΠ»Π°.

  • Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π° jpackage, која Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π·Π° ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡ˜Π½ΠΈ Java Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Алатката Π΅ Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° javapackager ΠΎΠ΄ JavaFX ΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ (msi ΠΈ exe Π·Π° Windows, pkg ΠΈ dmg Π·Π° macOS, deb ΠΈ rpm Π·Π° Linux). ΠŸΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Π³ΠΈ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Π°Ρ‚ ситС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ зависности.
  • Π”ΠΎ собирачот Π½Π° Ρ“ΡƒΠ±Ρ€Π΅ Π“1 Π΄ΠΎΠ΄Π°Π΄Π΅ Π½ΠΎΠ² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ Π·Π° распрСдСлба Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° кој Π³ΠΈ Π·Π΅ΠΌΠ° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ спСцификитС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ систСми со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° НОМА. Новиот распрСдСлувач Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° Π΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ со ΠΎΠ·Π½Π°ΠΊΠ°Ρ‚Π° β€ž+XX:+UseNUMAβ€œ ΠΈ ΠΌΠΎΠΆΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° Π³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ пСрформанситС Π½Π° NUMA систСмитС.
  • Π”ΠΎΠ΄Π°Π΄Π΅Π½ΠΎ API Π·Π° слСдСњС Π²ΠΎ Π»Π΅Ρ‚ Π½Π° настани JFR (JDK Flight Recorder), Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°ΡšΠ΅ ΠΊΠΎΠ½Ρ‚ΠΈΠ½ΡƒΠΈΡ€Π°Π½ΠΎ слСдСњС.
  • Π”ΠΎΠ΄Π°Π΄Π΅Π½ΠΎ jdk.nio.mapmode ΠΌΠΎΠ΄ΡƒΠ», кој Π½ΡƒΠ΄ΠΈ Π½ΠΎΠ²ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠΈ (READ_ONLY_SYNC, WRITE_ONLY_SYNC) Π·Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΌΠ°ΠΏΠΈΡ€Π°Π½ΠΈ Π±Π°Ρ˜Ρ‚ΠΈ Π±Π°Ρ„Π΅Ρ€ΠΈ (MappedByteBuffer) Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ€Π°ΡšΠ΅ Π½Π° нСиспарлива ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° (NVM).
  • Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° АПИ-Ρ‚ΠΎ Π·Π° пристап Π΄ΠΎ странски ΠΌΠ΅ΠΌΠΎΡ€ΠΈΠΈ, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Ρ˜ΡœΠΈ ΠΈΠΌ Π½Π° Java-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ ΠΈ Сфикасно Π΄Π° пристапуваат Π΄ΠΎ мСморискитС Ρ€Π΅Π³ΠΈΠΎΠ½ΠΈ Π½Π°Π΄Π²ΠΎΡ€ ΠΎΠ΄ Јава ΠΊΡƒΠΏΠΎΡ‚ со ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°ΡšΠ΅ со Π½ΠΎΠ²ΠΈΡ‚Π΅ апстракции Π½Π° MemorySegment, MemoryAddress ΠΈ MemoryLayout.
  • ОбјавСно застарСни ΠΏΠΎΡ€Ρ‚ΠΈ Π·Π° Solaris OS ΠΈ SPARC процСсоритС (Solaris/SPARC, Solaris/x64 ΠΈ Linux/SPARC) со Π½Π°ΠΌΠ΅Ρ€Π° Π΄Π° сС отстранат ΠΎΠ²ΠΈΠ΅ ΠΏΠΎΡ€Ρ‚ΠΈ Π²ΠΎ ΠΈΠ΄Π½ΠΈΠ½Π°. ΠžΡ‚ΡΡ‚Ρ€Π°Π½ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠ²ΠΈΠ΅ ΠΏΠΎΡ€Ρ‚ΠΈ ќС ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π½Π° Π·Π°Π΅Π΄Π½ΠΈΡ†Π°Ρ‚Π° Π΄Π° Π³ΠΎ Π·Π°Π±Ρ€Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜ΠΎΡ‚ Π½Π° Π½ΠΎΠ²ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° OpenJDK Π±Π΅Π· Π΄Π° Π³ΡƒΠ±ΠΈ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΠΎΠ΄Ρ€ΠΆΡƒΠ²Π°ΡšΠ΅ Π½Π° карактСристикитС спСцифични Π·Π° Solaris ΠΈ SPARC.
  • Π˜Π·Π±Ρ€ΠΈΡˆΠ°Π½ΠΎ собирачот Π½Π° Ρ“ΡƒΠ±Ρ€Π΅ CMS (Concurrent Mark Sweep), кој бСшС ΠΎΠ·Π½Π°Ρ‡Π΅Π½ ΠΊΠ°ΠΊΠΎ застарСн ΠΏΡ€Π΅Π΄ Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ остана Π½Π΅ΠΎΠ΄Ρ€ΠΆΡƒΠ²Π°Π½ (CMS бСшС Π·Π°ΠΌΠ΅Π½Π΅Ρ‚ ΠΎΠ΄Π°ΠΌΠ½Π° со собирачот Π½Π° Ρ“ΡƒΠ±Ρ€Π΅ G1). ОсвСн Ρ‚ΠΎΠ°, објави ја ΠΎΡ‚Ρ„Ρ€Π»ΠΈ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ˜Π° ΠΎΠ΄ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ Π·Π° ΡΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ“ΡƒΠ±Ρ€Π΅ ParallelScavenge ΠΈ SerialOld (ΠΈΠ·Π²Ρ€ΡˆΠ΅Π½Π° со ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ β€ž-XX:+UseParallelGC -XX:-UseParallelOldGCβ€œ).
  • ОбСзбСдСна Π΅ СкспСримСнтална ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° собирачот Π½Π° Ρ“ΡƒΠ±Ρ€Π΅ ZGC (Z Garbage Collector) Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈΡ‚Π΅ macOS ΠΈ Windows (ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ само Π½Π° Linux). ZGC Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²ΠΎ пасивСн Ρ€Π΅ΠΆΠΈΠΌ, ја ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π° латСнтноста ΠΏΠΎΡ€Π°Π΄ΠΈ ΡΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ“ΡƒΠ±Ρ€Π΅ ΡˆΡ‚ΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ повСќС (Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° Π·Π°ΡΡ‚ΠΎΡ˜ ΠΊΠΎΠ³Π° сС користи ZGC Π½Π΅ Π½Π°Π΄ΠΌΠΈΠ½ΡƒΠ²Π° 10 ms.) ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΈ со ΠΌΠ°Π»ΠΈ ΠΈ со ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΈ ΠΊΡƒΠΏΠΈΡˆΡ‚Π°, со Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° ΠΎΠ΄ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ стотици ΠΌΠ΅Π³Π°Π±Π°Ρ˜Ρ‚ΠΈ Π΄ΠΎ ΠΌΠ½ΠΎΠ³Ρƒ Ρ‚Π΅Ρ€Π°Π±Π°Ρ˜Ρ‚ΠΈ.
  • ΠžΡ‚ΡΡ‚Ρ€Π°Π½Π΅Ρ‚ΠΎ Алатник ΠΈ API Π·Π° ΠΊΠΎΠΌΠΏΡ€Π΅ΡΠΈΡ€Π°ΡšΠ΅ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ JAR со помош Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΡ‚ Pack200.

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€