Pagkatapos ng anim na buwan ng pag-unlad, Oracle pinakawalan platform JavaSE 14 (Java Platform, Standard Edition 14), ang open-source na OpenJDK na proyekto ay ginagamit bilang isang reference na pagpapatupad. Ang Java SE 14 ay nagpapanatili ng backward compatibility sa mga nakaraang release ng Java platform; lahat ng naunang naisulat na mga proyekto ng Java ay gagana nang walang pagbabago kapag tumakbo sa ilalim ng bagong bersyon. Ready-to-install Java SE 14 build (JDK, JRE at Server JRE) nakahanda para sa Linux (x86_64), Windows at macOS. Pagpapatupad ng sanggunian na binuo ng proyekto ng OpenJDK Java 14 ay ganap na open source sa ilalim ng lisensya ng GPLv2, na may mga pagbubukod sa GNU ClassPath na nagpapahintulot sa dynamic na pag-link sa mga komersyal na produkto.
Ang Java SE 14 ay inuri bilang pangkalahatang release ng suporta at patuloy na makakatanggap ng mga update hanggang sa susunod na release. Ang sangay ng Long Term Support (LTS) ay dapat na Java SE 11, na patuloy na makakatanggap ng mga update hanggang 2026. Ang nakaraang LTS branch ng Java 8 ay susuportahan hanggang Disyembre 2020. Ang susunod na paglabas ng LTS ay naka-iskedyul para sa Setyembre 2021. Paalalahanan ka namin na simula sa paglabas ng Java 10, lumipat ang proyekto sa isang bagong proseso ng pag-unlad, na nagpapahiwatig ng mas maikling cycle para sa pagbuo ng mga bagong release. Ang bagong functionality ay binuo na ngayon sa isang patuloy na ina-update na master branch, na kinabibilangan ng mga handa nang pagbabago at kung saan ang mga branch ay sinasanga bawat anim na buwan upang patatagin ang mga bagong release.
ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° pagtutugma ng pattern sa operator na "instanceof", na nagbibigay-daan sa iyong agad na tukuyin ang isang lokal na variable upang ma-access ang nasuri na halaga. Halimbawa, maaari mong isulat kaagad ang βif (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}β nang hindi tahasang tinutukoy ang βString s = (String) objβ.
Ito ay:
kung (obj instanceof Group) {
Pangkat ng pangkat = (Pangkat) obj;
var entries = group.getEntries();
}
Magagawa mo na ngayon nang walang kahulugan na "Group group = (Group) obj":
if (obj instanceof Group group) {
var entries = group.getEntries();
}
ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° Β«talaan", na nagbibigay ng isang compact na form para sa pagtukoy ng mga klase, na nagbibigay-daan sa iyong iwasan ang tahasang pagtukoy sa iba't ibang mga mababang antas na pamamaraan tulad ng equals(), hashCode() at toString() sa mga kaso kung saan ang data ay nakaimbak lamang sa mga field na ang pag-uugali ay hindi nagbabago. Kapag ang isang klase ay gumagamit ng mga karaniwang pagpapatupad ng equals(), hashCode() at toString() na mga pamamaraan, magagawa nito nang wala ang kanilang tahasang kahulugan:
pampublikong record BankTransaction(LocalDate date,
dobleng halaga
Paglalarawan ng string) {}
Ang deklarasyon na ito ay awtomatikong magdaragdag ng mga pagpapatupad ng equals(), hashCode() at toString() na mga pamamaraan bilang karagdagan sa mga pamamaraan ng constructor at getter.
var log = switch (event) {
case PLAY -> Β«User has triggered the play buttonΒ»;
case STOP, PAUSE -> Β«User needs a breakΒ»;
default -> {
String message = event.toString();
LocalDateTime now = LocalDateTime.now();
yield Β«Unknown event Β» + message +
Β» logged on Β» + now;
}
};
Exception in thread Β«mainΒ» java.lang.NullPointerException: Cannot invoke Β«Location.getCity()Β»
because the return value of Β«User.getLocation()Β» is null
at NullPointerExample.main(NullPointerExample.java:5):5)