Error rendering WebPanel: No renderer found for resource type: velocity Template contents: <meta name="ajs-keyboardshortcut-hash" content="$keyboardShortcutManager.shortcutsHash">
메타 데이터의 끝으로 건너뛰기
메타 데이터의 시작으로 이동
  • Java 16

JEP 394 Pattern Matching for instanceof

JEP 395 Records

JEP 376 ZGC Concurrent Thread Processing

JEP 387 Elastic Metaspace

This feature returns unused HotSpot VM class-metadata (i.e. metaspace) memory to the operating system more promptly, reducing metaspace footprint. Applications with heavy class loading and unloading activity can accrue a lot of unused space. 

The new scheme allocates metaspace memory in smaller chunks, reduces class-loader overhead and  fragmentation. It improves elasticity by returning unused metaspace memory to the operating system, which leads to greater application performance and decreases memory utilization.

JEP 380 Unix-Domain Socket Channels

Unix-domain sockets have long been a feature of most Unix platforms, and are now supported in Windows 10 and Windows Server 2019. This feature adds Unix-domain (AF_UNIX) socket support to the socket channel and server-socket channel APIs in the java.nio.channels package. It extends the inherited channel mechanism to support Unix-domain socket channels and server socket channels. Unix-domain sockets are used for inter-process communication (IPC) on the same host. They are similar to TCP/IP sockets in most respects, except that they are addressed by filesystem path names rather than Internet Protocol (IP) addresses and port numbers. For local, inter-process communication, Unix-domain sockets are both more secure and more efficient than TCP/IP loopback connections.

JEP 392 Packaging Tool

This feature was first introduced as an incubator module in Java 14. This tool allows for packaging self-contained Java applications. It supports native packaging formats to give end users a natural installation experience. These formats include msi and exe on Windows, pkg and dmg on macOS, and deb and rpm on Linux. It also allows launch-time parameters to be specified at packaging time and can be invoked directly, from the command line, or programmatically, via the ToolProvider API. Note that the name of the jpackage module changes from jdk.incubator.jpackage to jdk.jpackage. This will improve the end-user experience when installing applications and simplify deployments using the “app store” model.

JEP 390 Warning for Value-Based Classes

This feature designates the primitive wrapper classes (java.lang.Integer, java.lang.Double, etc) as value-based (similar to java.util.Optional and java.time.LocalDateTime) and add forRemoval to their constructors, which are deprecated since JDK 9, prompting new warnings.  It provides warnings about improper attempts to synchronize on instances of any value-based classes in the Java Platform.

Many popular open-source projects have already responded to the deprecation warnings of Java 9 by removing wrapper constructor calls from their sources, and we can expect many more to do so, given the heightened urgency of "deprecated for removal" warnings.

JEP 396 Strongly Encapsulate JDK Internals by default

This feature strongly encapsulates all internal elements of the JDK by default, except for critical internal APIs such as sun.misc.Unsafe. Code successfully compiled with earlier releases that accesses internal APIs of the JDK may no longer work by default. This change aims to encourage developers to migrate from using internal elements to using standard APIs, so that both they and their users can upgrade without fuss to future Java releases. Strong encapsulation is controlled by the launcher option -–illegal-access, for JDK 9 until JDK 15 defaults to warning, and starting with JDK 16 defaults to deny. It is still possible (for now) to relax encapsulation of all packages with a single command-line option, in the future only opening specific packages with –add-opens will work.

JEP 338 Vector API (Incubator)

This incubator API provides an initial iteration of an API to express vector computations that reliably compile at runtime to optimal vector hardware instructions on supported CPU architectures and thus achieve superior performance to equivalent scalar computations. It allows taking advantage of the Single Instruction Multiple Data (SIMD) instructions available on most modern CPUs. Although HotSpot supports auto-vectorization, the set of transformable scalar operations is limited and fragile to changes in the code. This API will allow developers to easily write portable and performant vector algorithms in Java.

JEP 389 Foreign Linker API (Incubator)

JEP 393 Foreign Memory Access API (3rd Incubator)

JEP 397 Sealed Classes (2nd Preview)

JEP 347 Enable C++14 Language Features (in JDK source code)

This allows the use of C++14 language features in JDK C++ source code and gives specific guidance about which of those features may be used in HotSpot code. Through JDK 15, the language features used by C++ code in the JDK have been limited to the C++98/03 language standards. It requires updating the minimum acceptable version of various platform compilers.

JEP 357 Migrate from Mercurial to Git
JEP 369 Migrate to GitHub

These JEPs migrate the OpenJDK Community's source code repositories from Mercurial (hg) to Git and host them on GitHub for JDK 11 and later. The migration includes updating tooling such as  jcheck, webrev, and defpath tools to Git. Git reduces the size of the metadata (around ¼ of the size) preserving local disk space and reducing clone time. Modern tooling is better integrated with Git than Mercurial. OpenJDK Git repositories are now at https://github.com/openjdk

JEP 386 Alpine Linux Port

JEP 388 Windows/AArch64 Port

The focus of these JEPs is not the porting effort itself, which was already done, but integrating them into the JDK main-line repository.

JEP 386 ports the JDK to Alpine Linux and other distributions that use musl as their primary C Library on both x64 and AArch64. In addition, JEP 388 ports the JDK to Windows AArch 64 (ARM64).




  • Java 17

Java 17 has below proposed features coming out as part of the JDK 17:
  1. JEP 414: Vector API (Second Incubator)
  2. JEP 412: Foreign Function & Memory API (Incubator)
  3. JEP 411: Deprecate the Security Manager for Removal
  4. JEP 410: Remove the Experimental AOT and JIT Compiler
  5. JEP 409: Sealed Classes
  6. JEP 407: Remove RMI Activation
  7. JEP 406: Pattern Matching for switch (Preview)
  8. JEP 398: Deprecate the Applet API for Removal
  9. JEP 391: macOS/AArch64 Port
  10. JEP 382: New macOS Rendering Pipeline
  11. JEP 356: Enhanced Pseudo-Random Number Generators


  • 레이블 없음