ืžื”ื“ื•ืจืช Java SE 16

ืœืื—ืจ ืฉื™ืฉื” ื—ื•ื“ืฉื™ื ืฉืœ ืคื™ืชื•ื—, ืื•ืจืงืœ ื”ื•ืฆื™ืื” ืืช Java SE 16 (Java Platform, Standard Edition 16), ื”ืžืฉืชืžืฉืช ื‘ืคืจื•ื™ืงื˜ OpenJDK ื‘ืงื•ื“ ืคืชื•ื— ื›ื™ื™ืฉื•ื ื™ื™ื—ื•ืก. Java SE 16 ืฉื•ืžืจ ืขืœ ืชืื™ืžื•ืช ืœืื—ื•ืจ ืขื ืžื”ื“ื•ืจื•ืช ืงื•ื“ืžื•ืช ืฉืœ ืคืœื˜ืคื•ืจืžืช Java; ื›ืœ ืคืจื•ื™ืงื˜ื™ Java ืฉื ื›ืชื‘ื• ื‘ืขื‘ืจ ื™ืคืขืœื• ืœืœื ืฉื™ื ื•ื™ื™ื ื›ืืฉืจ ื™ื•ืฉืงื• ืชื—ืช ื”ื’ืจืกื” ื”ื—ื“ืฉื”. ื’ืจืกืื•ืช ืžื•ื›ื ื•ืช ืœื”ืชืงื ื” ืฉืœ Java SE 16 (JDK, JRE ื•-Server JRE) ืžื•ื›ื ื•ืช ืขื‘ื•ืจ Linux (x86_64, AArch64), Windows ื•-macOS. ืžื™ืžื•ืฉ ื”ื”ืชื™ื™ื—ืกื•ืช ืฉืœ Java 16, ืฉืคื•ืชื— ืขืœ ื™ื“ื™ ืคืจื•ื™ืงื˜ OpenJDK, ื”ื•ื ืงื•ื“ ืคืชื•ื— ืœื—ืœื•ื˜ื™ืŸ ืชื—ืช ืจื™ืฉื™ื•ืŸ GPLv2, ืขื ื—ืจื™ื’ื™ื ืฉืœ GNU ClassPath ื”ืžืืคืฉืจื™ื ืงื™ืฉื•ืจ ื“ื™ื ืžื™ ืขื ืžื•ืฆืจื™ื ืžืกื—ืจื™ื™ื.

Java SE 16 ืžืกื•ื•ื’ ื›ื’ืจืกืช ืชืžื™ื›ื” ื›ืœืœื™ืช ื•ืชืžืฉื™ืš ืœืงื‘ืœ ืขื“ื›ื•ื ื™ื ืขื“ ื”ืžื”ื“ื•ืจื” ื”ื‘ืื”. ืขื ืฃ ื”ืชืžื™ื›ื” ืœื˜ื•ื•ื— ืืจื•ืš (LTS) ืฆืจื™ืš ืœื”ื™ื•ืช Java SE 11, ืฉื™ืžืฉื™ืš ืœืงื‘ืœ ืขื“ื›ื•ื ื™ื ืขื“ 2026. ืžื”ื“ื•ืจืช ื”-LTS ื”ื‘ืื” ืžืชื•ื›ื ื ืช ืœืกืคื˜ืžื‘ืจ 2021. ื ื–ื›ื™ืจ ืœื›ื ืฉื”ื—ืœ ืžื”ืฉื—ืจื•ืจ ืฉืœ Java 10, ื”ืคืจื•ื™ืงื˜ ืขื‘ืจ ืœืชื”ืœื™ืš ืคื™ืชื•ื— ื—ื“ืฉ, ืžื” ืฉืžืจืžื– ืขืœ ืžื—ื–ื•ืจ ืงืฆืจ ื™ื•ืชืจ ืœื”ื™ื•ื•ืฆืจื•ืช ืžื”ื“ื•ืจื•ืช ื—ื“ืฉื•ืช. ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื—ื“ืฉื” ืžืคื•ืชื—ืช ื›ืขืช ื‘ืกื ื™ืฃ ืžืืกื˜ืจ ืื—ื“ ื”ืžืชืขื“ื›ืŸ ื›ืœ ื”ื–ืžืŸ, ื”ื›ื•ืœืœ ืฉื™ื ื•ื™ื™ื ืžื•ื›ื ื™ื ื•ืžืžื ื• ืžืกืชืขืคื™ื ืกื ื™ืคื™ื ื›ืœ ื—ืฆื™ ืฉื ื” ื›ื“ื™ ืœื™ื™ืฆื‘ ืžื”ื“ื•ืจื•ืช ื—ื“ืฉื•ืช.

ืœืงืจืืช ื”ืžื”ื“ื•ืจื” ื”ื—ื“ืฉื”, ื”ืคื™ืชื•ื— ืขื‘ืจ ืžืžืขืจื›ืช ื‘ืงืจืช ื’ืจืกืื•ืช Mercurial ืœ-Git ื•ืœืคืœื˜ืคื•ืจืžืช ื”ืคื™ืชื•ื— ื”ืฉื™ืชื•ืคื™ืช GitHub. ื”ื”ื’ื™ืจื” ืฆืคื•ื™ื” ืœืฉืคืจ ืืช ื”ื‘ื™ืฆื•ืขื™ื ืฉืœ ืคืขื•ืœื•ืช ื”ืžืื’ืจ, ืœื”ื’ื‘ื™ืจ ืืช ื™ืขื™ืœื•ืช ื”ืื—ืกื•ืŸ, ืœืกืคืง ื’ื™ืฉื” ืœืฉื™ื ื•ื™ื™ื ืœืื•ืจืš ื”ื”ื™ืกื˜ื•ืจื™ื” ืฉืœ ื”ืคืจื•ื™ืงื˜, ืœืฉืคืจ ืืช ื”ืชืžื™ื›ื” ื‘ืกืงื™ืจืช ืงื•ื“ ื•ืœืืคืฉืจ ืœืžืžืฉืงื™ API ืœื”ืคื•ืš ื–ืจื™ืžื•ืช ืขื‘ื•ื“ื” ืœืื•ื˜ื•ืžื˜ื™ื•ืช. ื‘ื ื•ืกืฃ, ื”ืฉื™ืžื•ืฉ ื‘-Git ื•ื‘-GitHub ื”ื•ืคืš ืืช ื”ืคืจื•ื™ืงื˜ ืœืื˜ืจืงื˜ื™ื‘ื™ ื™ื•ืชืจ ืœืžืชื—ื™ืœื™ื ื•ืœืžืคืชื—ื™ื ื”ืžื•ืจื’ืœื™ื ื‘-Git.

ืชื›ื•ื ื•ืช ื—ื“ืฉื•ืช ื‘-Java 16 ื›ื•ืœืœื•ืช:

  • ื ื•ืกืฃ ืžื•ื“ื•ืœ ื ื™ืกื™ื•ื ื™ jdk.incubator.vector ืขื ื™ื™ืฉื•ื ืฉืœ ื”-Vector API, ื”ืžืกืคืง ืคื•ื ืงืฆื™ื•ืช ืœื—ื™ืฉื•ื‘ื™ื ื•ืงื˜ื•ืจื™ื™ื ื”ืžื‘ื•ืฆืขื™ื ื‘ืืžืฆืขื•ืช ื”ื•ืจืื•ืช ื•ืงื˜ื•ืจื™ื•ืช ื‘ืžืขื‘ื“ื™ x86_64 ื•-AArch64 ื•ืžืืคืฉืจื™ื ืœื”ื—ื™ืœ ืคืขื•ืœื•ืช ื‘ื•-ื–ืžื ื™ืช ืขืœ ืžืกืคืจ ืขืจื›ื™ื (SIMD). ื‘ื ื™ื’ื•ื“ ืœื™ื›ื•ืœื•ืช ื”ื ื™ืชื ื•ืช ื‘ืžื”ื“ืจ HotSpot JIT ืขื‘ื•ืจ ื•ืงื˜ื•ืจื™ื–ืฆื™ื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ืคืขื•ืœื•ืช ืกืงืœืจื™ื•ืช, ื”-API ื”ื—ื“ืฉ ืžืืคืฉืจ ืœืš ืœืฉืœื•ื˜ ื‘ืื•ืคืŸ ืžืคื•ืจืฉ ืขืœ ื•ืงื˜ื•ืจื™ื–ืฆื™ื” ืขื‘ื•ืจ ืขื™ื‘ื•ื“ ื ืชื•ื ื™ื ืžืงื‘ื™ืœื™.
  • ืงื•ื“ JDK ื•-VM HotSpot ืฉื ื›ืชื‘ ื‘-C++ ืžื•ืชืจ ืœื”ืฉืชืžืฉ ื‘ืชื›ื•ื ื•ืช ืฉื”ื•ืฆื’ื• ื‘ืžืคืจื˜ C++14. ื‘ืขื‘ืจ ื”ื•ืชืจื• ืชืงื ื™ C++98/03.
  • ื”-ZGC (Z Garbage Collector), ื”ืคื•ืขืœ ื‘ืžืฆื‘ ืคืกื™ื‘ื™ ื•ืžืžื–ืขืจ ืขื™ื›ื•ื‘ื™ื ืขืงื‘ ืื™ืกื•ืฃ ืืฉืคื” ื›ื›ืœ ื”ืืคืฉืจ, ื”ื•ืกื™ืคื• ืืช ื”ื™ื›ื•ืœืช ืœืขื‘ื“ ืขืจื™ืžื•ืช ื—ื•ื˜ื™ื ื‘ืžืงื‘ื™ืœ ืžื‘ืœื™ ืœื”ืฉื”ื•ืช ืฉืจืฉื•ืจื™ ื™ื™ืฉื•ืžื™ื. ืœ-ZGC ื™ืฉ ื›ืขืช ืจืง ืขื‘ื•ื“ื” ืฉื“ื•ืจืฉืช ื”ืฉืขื™ื”, ืฉื™ืฉ ืœื” ืขื™ื›ื•ื‘ื™ื ืงื‘ื•ืขื™ื, ื‘ื“ืจืš ื›ืœืœ ืœื ืขื•ืœื™ื ืขืœ ื›ืžื” ืžืื•ืช ืžื™ืงืจื•-ืฉื ื™ื•ืช.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ืขื‘ื•ืจ ืฉืงืขื™ ื™ื•ื ื™ืงืก (AF_UNIX) ืœืžื—ืœืงื•ืช SocketChannel, ServerSocketChannel ื•-java.nio.channels.
  • ืคื•ืจื˜ ื”ื•ื˜ืžืข ืขื‘ื•ืจ ื”ืคืฆืช ืœื™ื ื•ืงืก Alpine ืขื ืกืคืจื™ื™ืช C ื”ืกื˜ื ื“ืจื˜ื™ืช musl, ื”ืคื•ืคื•ืœืจื™ืช ื‘ืกื‘ื™ื‘ื•ืช ืœืžื›ื•ืœื•ืช, ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื, ืขื ืŸ ื•ืžืขืจื›ื•ืช ืžืฉื•ื‘ืฆื•ืช. ื”ื™ืฆื™ืื” ื”ืžื•ืฆืขืช ื‘ืกื‘ื™ื‘ื•ืช ื›ืืœื” ืžืืคืฉืจืช ืœืš ืœื”ืคืขื™ืœ ืชื•ื›ื ื™ื•ืช Java ื›ืžื• ื™ื™ืฉื•ืžื™ื ืจื’ื™ืœื™ื. ื‘ื ื•ืกืฃ, ื‘ืืžืฆืขื•ืช jlink, ื ื™ืชืŸ ืœื”ืกื™ืจ ืืช ื›ืœ ื”ืžื•ื“ื•ืœื™ื ืฉืื™ื ื ื‘ืฉื™ืžื•ืฉ ื•ืœื™ืฆื•ืจ ืกื‘ื™ื‘ื” ืžื™ื ื™ืžืœื™ืช ืžืกืคื™ืงื” ืœื”ืคืขืœืช ื”ืืคืœื™ืงืฆื™ื”, ื”ืžืืคืฉืจืช ืœื™ืฆื•ืจ ืชืžื•ื ื•ืช ืงื•ืžืคืงื˜ื™ื•ืช ืกืคืฆื™ืคื™ื•ืช ืœืืคืœื™ืงืฆื™ื”.
  • ืžื ื’ื ื•ืŸ Elastic Metaspace ื™ื•ืฉื, ื”ืžื™ื™ืขืœ ืืช ืคืขื•ืœื•ืช ื”ื”ืงืฆืื” ื•ื”ื—ื–ืจื” ืฉืœ ื–ื™ื›ืจื•ืŸ ืฉื ื›ื‘ืฉ ืขืœ ื™ื“ื™ ืžื˜ื-ื ืชื•ื ื™ื ืฉืœ ืžื—ืœืงื•ืช (metaspace) ื‘-JVM HotSpot. ื”ืฉื™ืžื•ืฉ ื‘- Elastic Metaspace ืžืคื—ื™ืช ืืช ืคื™ืฆื•ืœ ื”ื–ื™ื›ืจื•ืŸ, ืžืคื—ื™ืช ืืช ืชืงื•ืจื” ืฉืœ ืžื˜ืขื™ืŸ ื”ืžื—ืœืงื”, ื•ื’ื ืžืฉืคื™ืข ืœื˜ื•ื‘ื” ืขืœ ื”ื‘ื™ืฆื•ืขื™ื ืฉืœ ื™ื™ืฉื•ืžื™ ืฉืจืช ืืจื•ื›ื™ ื˜ื•ื•ื— ืขืงื‘ ื”ื—ื–ืจื” ืžื”ื™ืจื” ื™ื•ืชืจ ืฉืœ ื–ื™ื›ืจื•ืŸ ืฉื ื›ื‘ืฉ ืขืœ ื™ื“ื™ ืžื˜ื-ื ืชื•ื ื™ื ืฉืœ ืžื—ืœืงื•ืช ืœื ื‘ืฉื™ืžื•ืฉ ืœืžืขืจื›ืช ื”ื”ืคืขืœื”. ื›ื“ื™ ืœื‘ื—ื•ืจ ืืช ืžืฆื‘ ืฉื—ืจื•ืจ ื”ื–ื™ื›ืจื•ืŸ ืœืื—ืจ ืคืจื™ืงืช ืžื—ืœืงื•ืช, ืžื•ืฆืขืช ื”ืืคืฉืจื•ืช "-XX:MetaspaceReclaimPolicy=(balanced|aggressive|none)".
  • ื ื•ืกืคื” ื™ืฆื™ืืช JDK ืขื‘ื•ืจ ืžืขืจื›ื•ืช Windows ื”ืคื•ืขืœื•ืช ืขืœ ื—ื•ืžืจื” ืขื ืžืขื‘ื“ื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช AArch64.
  • ื”ื•ืฆืขื” ืชืฆื•ื’ื” ืžืงื“ื™ืžื” ืฉืœื™ืฉื™ืช ืฉืœ ื”-API ืฉืœ Foreign-Memory Access, ื”ืžืืคืฉืจืช ืœื™ื™ืฉื•ืžื™ Java ืœื’ืฉืช ื‘ืฆื•ืจื” ืžืื•ื‘ื˜ื—ืช ื•ื™ืขื™ืœื” ืœืื–ื•ืจื™ ื–ื™ื›ืจื•ืŸ ืžื—ื•ืฅ ืœืขืจืžืช Java ืขืœ ื™ื“ื™ ืžื ื™ืคื•ืœืฆื™ื” ืฉืœ ื”ื”ืคืฉื˜ื•ืช ื”ื—ื“ืฉื•ืช ืฉืœ MemorySegment, MemoryAddress ื•-MemoryLayout.
  • ื”ื•ื˜ืžืข ืžืžืฉืง API ื ื™ืกื™ื•ื ื™ ืฉืœ Foreign Linker, ื”ืžืกืคืง ื’ื™ืฉื” ืžื’'ืื•ื•ื” ืœืงื•ื“ ืžืงื•ืจื™. ื™ื—ื“ ืขื ื”-Foreign-Memory API, ืžืžืฉืง ื”ืชื›ื ื•ืช ื”ื—ื“ืฉ ืžืงืœ ื‘ื”ืจื‘ื” ืขืœ ื™ืฆื™ืจืช ืขื˜ื™ืคื•ืช ืขืœ ืคื ื™ ืกืคืจื™ื•ืช ืžืฉื•ืชืคื•ืช ืงื•ื ื‘ื ืฆื™ื•ื ืœื™ื•ืช.
  • ื”ื•ืกืคื” ืืช ื›ืœื™ ื”ืฉื™ืจื•ืช jpackage, ื”ืžืืคืฉืจ ืœืš ืœื™ืฆื•ืจ ื—ื‘ื™ืœื•ืช ืขื‘ื•ืจ ื™ื™ืฉื•ืžื™ Java ืขืฆืžืื™ื™ื. ื›ืœื™ ื”ืฉื™ืจื•ืช ืžื‘ื•ืกืก ืขืœ javapackager ืž-JavaFX ื•ืžืืคืฉืจ ืœื™ืฆื•ืจ ื—ื‘ื™ืœื•ืช ื‘ืคื•ืจืžื˜ื™ื ืžืงื•ืจื™ื™ื ืœืคืœื˜ืคื•ืจืžื•ืช ืฉื•ื ื•ืช (msi ื•-exe ืขื‘ื•ืจ Windows, pkg ื•-dmg ืขื‘ื•ืจ macOS, deb ื•-rpm ืขื‘ื•ืจ Linux). ื”ื—ื‘ื™ืœื•ืช ื›ื•ืœืœื•ืช ืืช ื›ืœ ื”ืชืœื•ืช ื”ื ื“ืจืฉืช.
  • ืื ืงืคืกื•ืœืฆื™ื” ืงืคื“ื ื™ืช ืฉืœ ื›ืœ ื”ื—ืœืงื™ื ื”ืคื ื™ืžื™ื™ื ืฉืœ JDK ืžื•ืคืขืœืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืœืžืขื˜ ืžืžืฉืงื™ API ืงืจื™ื˜ื™ื™ื ื›ื’ื•ืŸ sun.misc.Unsafe. ื”ืขืจืš ืฉืœ ื”ืืคืฉืจื•ืช "--illegal-access" ืžื•ื’ื“ืจ ื›ืขืช ืœ-"deny" ื‘ืžืงื•ื "permit" ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืžื” ืฉื™ื—ืกื•ื ื ื™ืกื™ื•ื ื•ืช ืžืงื•ื“ ืœื’ื™ืฉื” ืœืจื•ื‘ ื”ืžื—ืœืงื•ืช, ื”ืฉื™ื˜ื•ืช ื•ื”ืฉื“ื•ืช ื”ืคื ื™ืžื™ื™ื. ื›ื“ื™ ืœืขืงื•ืฃ ืืช ื”ื”ื’ื‘ืœื”, ื”ืฉืชืžืฉ ื‘ืืคืฉืจื•ืช "-illegal-access=permit".
  • ื”ื™ื™ืฉื•ื ืฉืœ ื”ืชืืžืช ื“ืคื•ืกื™ื ื‘ืื•ืคืจื˜ื•ืจ "instanceof" ื™ื•ืฆื‘, ืžื” ืฉืžืืคืฉืจ ืœืš ืœื”ื’ื“ื™ืจ ืžื™ื“ ืžืฉืชื ื” ืžืงื•ืžื™ ืฉื™ืชื™ื™ื—ืก ืœืขืจืš ื”ืžืกื•ืžืŸ. ืœื“ื•ื’ืžื”, ืืชื” ื™ื›ื•ืœ ืžื™ื“ ืœื›ืชื•ื‘ "if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" ืžื‘ืœื™ ืœื”ื’ื“ื™ืจ ื‘ืžืคื•ืจืฉ "String s = (String) obj". Was: if (obj instanceof Group) { Group group = (Group) obj; var entries = group.getEntries(); } ืขื›ืฉื™ื• ืืชื” ื™ื›ื•ืœ ืœืขืฉื•ืช ื‘ืœื™ ืœื”ื’ื“ื™ืจ "ืงื‘ื•ืฆืช ืงื‘ื•ืฆื” = (ืงื‘ื•ืฆื”) obj": if (instance obj ืฉืœ ืงื‘ื•ืฆืช ืงื‘ื•ืฆื”) { var entries = group.getEntries(); }
  • ื”ื™ื™ืฉื•ื ืฉืœ ืžื™ืœืช ื”ืžืคืชื— "record" ื™ื•ืฆื‘, ื•ืžืกืคืง ืฆื•ืจื” ืงื•ืžืคืงื˜ื™ืช ืœื”ื’ื“ืจื•ืช ืžื—ืœืงื•ืช ื”ืžื‘ื˜ืœ ืืช ื”ืฆื•ืจืš ืœื”ื’ื“ื™ืจ ื‘ืžืคื•ืจืฉ ืฉื™ื˜ื•ืช ืฉื•ื ื•ืช ื‘ืจืžื” ื ืžื•ื›ื” ื›ื’ื•ืŸ equals(), hashCode() ื•-toString() ื‘ืžืงืจื™ื ื‘ื”ื ื”ื ืชื•ื ื™ื ืžืื•ื—ืกื ื™ื ืจืง ื‘ืฉื“ื•ืช ืื™ืชื ื–ื” ืœื ืžืฉืชื ื”. ื›ืืฉืจ ืžื—ืœืงื” ืžืฉืชืžืฉืช ื‘ื”ื˜ืžืขื•ืช ืกื˜ื ื“ืจื˜ื™ื•ืช ืฉืœ ืฉื™ื˜ื•ืช equals(), hashCode() ื•-toString() ื”ื™ื ื™ื›ื•ืœื” ืœื”ืกืชื“ืจ ืœืœื ื”ื”ื’ื“ืจื” ื”ืžืคื•ืจืฉืช ืฉืœื”ืŸ: ืจืฉื•ืžื” ืฆื™ื‘ื•ืจื™ืช BankTransaction(LocalDate date, double amount, String description) {}

    ื”ื”ืฆื”ืจื” ื”ื–ื• ืชื•ืกื™ืฃ ืื•ื˜ื•ืžื˜ื™ืช ืžื™ืžื•ืฉื™ื ืฉืœ ื”ืžืชื•ื“ื•ืช equals(), hashCode() ื•-toString() ื‘ื ื•ืกืฃ ืœืฉื™ื˜ื•ืช ื”ื‘ื ืื™ ื•ื”-getter.

  • ื˜ื™ื•ื˜ื” ืฉื ื™ื™ื” ืžื•ืฆืขืช ืœืžื—ืœืงื•ืช ื•ืžืžืฉืงื™ื ื—ืชื•ืžื™ื ืฉืœื ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืžื—ืœืงื•ืช ื•ืžืžืฉืงื™ื ืื—ืจื™ื ื›ื“ื™ ืœืจืฉืช, ืœื”ืจื—ื™ื‘ ืื• ืœืขืงื•ืฃ ื™ื™ืฉื•ืžื™ื. ืžื—ืœืงื•ืช ื—ืชื•ืžื•ืช ืžืกืคืงื•ืช ื’ื ื“ืจืš ื”ืฆื”ืจืชื™ืช ื™ื•ืชืจ ืœื”ื’ื‘ื™ืœ ืืช ื”ืฉื™ืžื•ืฉ ื‘- superclass ืžืืฉืจ ืžืฉื ื” ื’ื™ืฉื”, ื‘ื”ืชื‘ืกืก ืขืœ ืจื™ืฉื•ื ืžืคื•ืจืฉ ืฉืœ ืชืช ื”ืžื—ืœืงื•ืช ื”ืžื•ืชืจื•ืช ืœื”ืจื—ื‘ื”. ื—ื‘ื™ืœื” com.example.geometry; ืžื—ืœืงื” ืื˜ื•ืžื” ืฆื™ื‘ื•ืจื™ืช ืžืืคืฉืจืช ืฆื•ืจื” com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {โ€ฆ}

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”