※ 2021년 11월 26일에 작성된 글입니다.
JDK 1.5
추가된 기능
- Generic
- Metadata
- Autoboxing/unboxing
- Enumerations
- Varargs
- Enhanced
for each
loop - Improved semantics of execution for multi-threaded Java programs
- Static imports
표준 라이브러리 개선
- Automatic stub generation for RMI objects
- Swing
- The concurrency utilities in package
java.util.concurrent
- Scanner class for parsing data from various input streams and buffers
JDK 1.6
- Support for older Win9x versions dropped
- Scripting Language Support
- Dramatic performance improvements for the core platform, and Swing.
- Improved Web Service support through JAX-WS.
- JDBC 4.0 support.
- Java Compiler API
- Upgrade of JAXB to version 2.0: Including integration of a StAX parser.
- Support for pluggable annotations.
- Many GUI improvements, such as integration of SwingWorker in the API, table sorting and filtering, and true Swing double-buffering (eliminating the gray-area effect).
- JVM improvements include: synchronization and compiler performance optimizations, new algorithms and upgrades to existing garbage collection algorithms, and application start-up performance.
JDK 1.7
- JVM support for dynamic languages, with the new invokedynamic bytecode under JSR-292, following the prototyping work currently done on the Multi Language Virtual Machine
- Compressed 64-bit pointers (available in Java 6 with -XX:+UseCompressedOops)
- These small language changes (grouped under a project named Coin):
- Strings in switch
- Automatic resource management in try-statement
- Improved type inference for generic instance creation, aka the diamond operator <>
- Simplified varargs method declaration
- Binary integer literals
- Allowing underscores in numeric literals
- Catching multiple exception types and rethrowing exceptions with improved type checking
- Concurrency utilities under JSR 166
- New file I/O library (defined by JSR 203) adding support for multiple file systems, file metadata and symbolic links. The new packages are java.nio.file, java.nio.file.attribute and java.nio.file.spi
- Timsort is used to sort collections and arrays of objects instead of merge sort
- Library-level support for elliptic curve cryptography algorithms
- An XRender pipeline for Java 2D, which improves handling of features specific to modern GPUs
- New platform APIs for the graphics features originally implemented in version 6u10 as unsupported APIs
- Enhanced library-level support for new network protocols, including SCTP and Sockets Direct Protocol
- Upstream updates to XML and Unicode
- Java deployment rule sets
JDK 1.8
- Language-level support for lambda expressions
- default methods (virtual extension methods) which allow the addition of methods to interfaces without breaking existing implementations
- a JavaScript runtime which allows developers to embed JavaScript code within applications
- Annotation on Java types
- Unsigned integer arithmetic
- Repeating annotations
- Date and time API
- Statically-linked JNI libraries
- Launch JavaFX applications (direct launching of JavaFX application JARs)
- Remove the permanent generation
JDK 9
- Modularization of the JDK under Project Jigsaw (Java Platform Module System)
- JavaDB was removed from JDK
- Variable handles
- Milling Project Coin : Allow @SafeVarargs on private instance methods; Allow effectively-final variables to be used as resources in the try-with-resources statement; Allow diamond with anonymous classes if the argument type of the inferred type is denotable; Complete the removal, begun in Java SE 8, of underscore from the set of legal identifier names; Support for private methods in interfaces
- jshell: The Java Shell (Read-Eval-Print Loop) : JShell is a REPL command-line interface for the Java language.
- Compact Strings
- HiDPI graphics: automatic scaling and sizing
- More concurrency updates : It includes a Java implementation of Reactive Streams, including a new Flow class that included the interfaces previously provided by Reactive Streams
- XML catalogs
- jlink: The Java Linker : create a tool that can assemble and optimize a set of modules and their dependencies into a custom run-time image. It effectively allows to produce a fully usable executable including the JVM to run it
- Ahead-of-Time Compilation : Ahead-of-time compilation provided by GraalVM.
JDK 10
- Local-Variable Type Inference
- Consolidate the JDK Forest into a Single Repository
- Garbage-Collector Interface
- Parallel Full GC for G1
- Application Class-Data Sharing
- Thread-Local Handshakes
- Remove the Native-Header Generation Tool (javah)
- Additional Unicode Language-Tag Extensions
- Heap Allocation on Alternative Memory Devices
- Experimental Java-Based JIT Compiler
- Root Certificates
- Time-Based Release Versioning
JDK 11
- Nest-Based Access Control
- Dynamic Class-File Constants
- Improve Aarch64 Intrinsics
- Epsilon: A No-Op Garbage Collector
- Remove the Java EE and CORBA Modules
- HTTP Client (Standard)
- Local-Variable Syntax for Lambda Parameters
- Key Agreement with Curve25519 and Curve448
- Unicode 10
- Flight Recorder
- ChaCha20 and Poly1305 Cryptographic Algorithms
- Launch Single-File Source-Code Programs
- Low-Overhead Heap Profiling
- Transport Layer Security (TLS) 1.3
- ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
- Deprecate the Nashorn JavaScript Engine
- Deprecate the Pack200 Tools and API
JDK 12
- Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
- Microbenchmark Suite
- Switch Expressions (Preview)
- JVM Constants API
- One AArch64 Port, Not Two
- Default CDS Archives
- Abortable Mixed Collections for G1
- Promptly Return Unused Committed Memory from G1
JDK 13
- Dynamic CDS Archives
- ZGC: Uncommit Unused Memory
- Reimplement the Legacy Socket API
- Switch Expressions (Second Preview)
- Text Blocks (Preview)
JDK 14
- Pattern Matching for instanceof (Preview)
- Packaging Tool (Incubator)
- NUMA-Aware Memory Allocation for G1
- JFR Event Streaming
- Non-Volatile Mapped Byte Buffers
- Helpful NullPointerExceptions
- Records (Preview)
- Switch Expressions (Standard)
- Deprecate the Solaris and SPARC Ports
- Remove the Concurrent Mark Sweep (CMS) Garbage Collector
- ZGC on macOS
- ZGC on Windows
- Deprecate the ParallelScavenge + SerialOld GC Combination
- Remove the Pack200 Tools and API
- Text Blocks (Second Preview)
- Foreign-Memory Access API (Incubator)
JDK 15
- Edwards-Curve Digital Signature Algorithm (EdDSA)
- Sealed Classes (Preview)
- Hidden Classes
- Remove the Nashorn JavaScript Engine
- Reimplement the Legacy DatagramSocket API
- Disable and Deprecate Biased Locking
- Pattern Matching for instanceof (Second Preview)
- ZGC: A Scalable Low-Latency Garbage Collector
- Text Blocks
- Shenandoah: A Low-Pause-Time Garbage Collector
- Remove the Solaris and SPARC Ports
- Foreign-Memory Access API (Second Incubator)
- Records (Second Preview)
- Deprecate RMI Activation for Removal
JDK 16
- Vector API (Incubator)
- Enable C++14 Language Features
- Migrate from Mercurial to Git
- Migrate to GitHub
- ZGC: Concurrent Thread-Stack Processing
- Unix-Domain Socket Channels
- Alpine Linux Port – not yet stable
- Elastic Metaspace
- Windows/AArch64 Port
- Foreign Linker API (Incubator)
- Warnings for Value-Based Classes
- Packaging Tool
- Foreign-Memory Access API (Third Incubator)
- Pattern Matching for instanceof
- Records
- Strongly Encapsulate JDK Internals by Default
- Sealed Classes (Second Preview)
JDK 17
- Restore Always-Strict Floating-Point Semantics
- Enhanced Pseudo-Random Number Generators
- New macOS Rendering Pipeline
- macOS/AArch64 Port
- Deprecate the Applet API for Removal
- Strongly Encapsulate JDK Internals
- Pattern Matching for switch (Preview)
- Remove RMI Activation
- Sealed Classes
- Remove the Experimental AOT and JIT Compiler
- Deprecate the Security Manager for Removal
- Foreign Function & Memory API (Incubator)
- Vector API (Second Incubator)
- Context-Specific Deserialization Filters
참고 자료
'프로그래밍 > Java' 카테고리의 다른 글
[Java] Pattern Matching for instanceof (0) | 2024.09.04 |
---|---|
[Java] Switch Expression (0) | 2024.09.04 |
[Java] 레코드(Record) (0) | 2024.09.04 |